OrangePi 5でエッジAIと顔検出を結びつける

Ari Mahpour
|  投稿日 2024/11/27 水曜日  |  更新日 2025/01/17 金曜日
OrangePi 5でエッジAIと顔検出を結びつける

AI推論エンジンは、エッジでの人気が高まりつつあります。趣味や商業空間の組み込みシステムに、機械学習アルゴリズムや大規模言語モデルが移植されているのを見ることができます。このプロジェクトでは、Rockchip 3588プロセッサを搭載したOrange Pi 5を使用して、リアルタイムの顔検出器を構築します。つまり、ウェブカメラのビデオストリームからリアルタイムで人間の顔を検出します。

プロジェクトのセットアップ

始めるために、Orange Pi 5、USBウェブカメラ、そして私の公開リポジトリのコードを使用します。Orange Pi 5とRockchip RK3588プロセッサのセットアップ方法については、Orange Pi 5とRockchip RK3588プロセッサの使い始めを参照してください。この例の素晴らしい点は、PCやLinuxを実行している他の高性能組み込みデバイス(例えば、Raspberry Pi 5)でも実行できることです。Orange Pi 5(または他のデバイス)のセットアップと実行が完了したら、いくつかのライブラリをインストールする必要があります。この例はLinux(具体的にはUbuntuを実行)を前提として設計されているので、Debianパッケージマネージャーにアクセスできることを前提とします。ターミナルから、次のコマンドを実行してください:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

これにより、デモを実行するために必要なすべてのパッケージがインストールされます。pipを使用してOpenCV Pythonパッケージもインストールしてください:

pip3 install opencv-python

セットアップを検証するためのさらなる手順については、READMEを参照してください。

CPU vs. GPU vs. FPGA

Kria KV260 Vision AIスターターキットでのAIビジョンでは、FPGAを使用して顔検出AI推論エンジンを構築する方法を示しましたが、その複雑さは非常に高かったです。この例では、同じことをはるかに簡単な方法で探求しようとしています。これは、複雑さをCPUまたはGPUにオフロードするため、簡単です。これらのどちらもこの記事で探究します。OpenCVが私たちのコンピューターに対してどれほどよく最適化されているか、その真の美しさです。このライブラリを使用すると、FPGA上で自分たちのニューラルネットワークを構築しようとした際に経験したすべての機械学習の複雑さが完全に抽象化されます。

コードの概要とプロジェクトの実行

コードはかなりシンプルです。いくつかのステップに分けることができます:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. OpenCLを設定する(つまり、GPUが使用されているかどうかを決定する)。
  2. カスケード分類器を読み込む
  3. ビデオストリームをキャプチャして、グレースケールに設定する
  4. OpenCVでカスケードを実行する
  5. 顔が検出された場合、それを青いボックスで囲む
  6. "kill"条件が満たされるまで(例えば、"q"を押すか、ポップアップウィンドウを閉じるなど)、ステップ3-5をループで繰り返す

ここでの本当の魔法は、OpenCVで活用している「カスケード分類器」にあります。これは、一連の徐々に複雑な段階を通じて動作する、物体検出のための機械学習ベースのツールです(ニューラルネットワークの概念に似ています)。それは、各段階が一つの仕事を持つ、細かく調整された組み立てラインのようなものと考えてください:特定の特徴、例えばエッジ、角、または形状を検出すること。画像の領域がこれらの検査チェックポイントすべてを通過した場合、それは検出されたオブジェクトとしてフラグが立てられます。そうでなければ、時間と処理能力を節約するために早期に破棄されます。

カスケード分類器は、速度と効率についてです。事前定義された特徴(つまり、エッジやコントラストのようなパターン)を使用し、段階的に処理することで、処理能力が限られたデバイス上でのリアルタイムタスクに最適です。一方、ニューラルネットワークは異なるリーグでプレイします。データから直接特徴を自動的に学習するため、より複雑で多様なシナリオを扱うことができます。しかし、その力は代償を伴います:ニューラルネットワークははるかに多くの計算リソースと時間を要求します。カスケード分類器は高速で軽量ですが柔軟性に欠け、ニューラルネットワークは堅牢ですがリソースを多く消費します。問題は、適切なツールを選ぶことです。

私たちの場合、顔を正確に何を探し、何をフィルタリングするかを正確に知っている事前訓練済みモデル、Haar Frontal Face Detector(XMLファイルの形式)を使用します。実際には、これは私たちが探求してきた単純な例として十分です。上述のように、それほど正確ではありませんが、ほとんどの単純な顔検出例には十分です。

コードを実行するには、次のことだけを行う必要があります:

python3 face_detection.py --use-gpu

または、デバイスにGPUがない場合(つまり、Orange Pi 5を使用していない場合)は、--use-gpuフラグを省略してください。この時点で、小さなボックスが表示され、顔の上に青いボックスが表示されるはずです。私の場合、すぐに表示されました:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
図1:OpenCVとWebcamを使用したリアルタイム顔検出

結論

このプロジェクトは、OpenCVやOrange Pi 5のようなデバイスを使用することで、リアルタイム顔認識がどれほどアクセスしやすくなったかを示しています。事前にトレーニングされたXMLファイルを読み込むことで、軽量で効率的なカスケード分類器を活用し、ニューラルネットワークやFPGAプログラミングの複雑さなしに機能的な例を構築しました。このアプローチには、異なる照明や角度の処理などの制限がありますが、エッジAIを実験するための完璧な入門点です。

わずかなライブラリと最小限のセットアップで、このプロジェクトを組み込みデバイスや標準的なPCで再現することができます。AI推論エンジンが改善し続けるにつれて、リソース制約のあるデバイス上でより洗練されたモデルが実行されるようになり、高度なAIがより多くの人々にとってアクセスしやすくなることが期待されます。始めるために必要なすべてのコードを含むリポジトリを見るには、https://gitlab.com/ai-examples/orange-pi-face-detectionを訪問してください。

筆者について

筆者について

Ariは、設計、デバイスパッケージ、テスト、および電気、機械、およびソフトウェアシステムの統合において幅広い経験を持つエンジニアです。彼は、設計/デザイン、検証、テストのエンジニアをまとめて団結したグループとして機能させることに情熱を注いでいます。

関連リソース

関連する技術文書

ホームに戻る
Thank you, you are now subscribed to updates.
Altium Need Help?