マシンビジョン クイックスタート
マシンビジョンの応用には、カメラの選定、ビジョン技術の選択、画像アルゴリズムの選択が関わります。それぞれについて紹介し、実践例を提供することで、すぐに実践を始められるよう支援します。
カメラの選定と使用
USB カメラと MIPI カメラは一般的な 2 種類のカメラです。では、どのようにカメラを選べばよいでしょうか。
- 迅速なプロトタイプ検証、教育用途、簡単な検出タスクの場合は、USB カメラで十分です。
- 低遅延、高画質、低 CPU 負荷が求められるリアルタイムビジョンタスク(顔追跡など)の場合は、MIPI カメラを選びます。
RDK X5 では両方を同時に使用できます。例えば:
- USB カメラは低速なシーン理解(数秒ごとに大規模モデルを呼び出して全体画面を分析)に使用
- MIPI カメラは高速なビジュアルサーボ(ロボットアームのリアルタイム追従制御)に使用
具体的な使い方
1.1 USB カメラによるリアルタイム検出
1.2 MIPI カメラによるリアルタイム検出
1.3 Web ブラウザでのカメラ映像表示
ビジョン技術の選択
従来の OpenCV による画像処理から、代表的な YOLO 物体検出アルゴリズム、さらに最先端の視覚言語大規模モデル(VLM)まで厳選し、基礎から最先端までのビジョン技術スタックを網羅しています。
| ビジョン技術 | 特長 | 適用シーン | 応用例 |
|---|---|---|---|
| OpenCV 画像処理 | 数式(畳み込み、フィルタリング、幾何変換)に基づき、学習は不要です。 | リアルタイムの知覚とインタラクションに適用。 例:図形の描画、ワークの輪郭や中心点の計算。 | OpenCV 画像処理実験 |
| YOLO 物体検出アルゴリズム | ディープラーニングに基づき、大量のアノテーション付きデータによる学習が必要です。 | 特定物体の検出に適しています。例:さまざまな角度や照明条件下の顔やワークの認識。 | YOLO11 顔検出システムの実装 YOLO11 物体検出システムの実装 |
| 視覚言語大規模モデル(VLM) | マルチモーダル大規模モデル(GPT-4V など)に基づき、膨大な画像・テキストデータで事前学習されています。 | 複雑なシーンの理解、推論、タスク計画が必要な場合。例:「机の上のワークを認識する」場合、まずタスクを分解します:机を見つける -> ワークを認識して位置を特定する -> ワークを把持する | 視覚言語モデル VLM による画像解析 |
ビジョン画像アルゴリズム
ビジョン画像アルゴリズムは、画像分類、物体検出、セマンティックセグメンテーション、姿勢推定などを網羅しています。本プロジェクトは Python で記述された BPU サンプルプログラムをベースとしており、RDK X5(ソフトウェアバージョン 3.5.0)プラットフォームに対応しています。また、サンプルでは .bin 形式の量子化モデルを使用して推論を行うため、開発者はモデルの効果を素早く検証し、アプリケーション開発を進めることができます。
本プロジェクトのボード上のコードの場所:/app/pydev_demo/
| アルゴリズムの応用 | 特長 | 使用モデル | アルゴリズム例 |
|---|---|---|---|
| 画像分類 | 異なるニューラルネットワークモデルで同じ画像分類を実現します。 | resnet18 、MobileNetV2 | 5.1 画像分類 |
| 物体検出 | 異なる YOLO シリーズモデルで同じ物体検出を実現します。 | YOLOv5X 、YOLOv11、YOLOv8、YOLOv10 | 5.2 物体検出 |
| セマンティックセグメンテーション | 異なるニューラルネットワークモデルでセマンティックセグメンテーションを実現します。 | unetmobilenet、yolov11 | 5.3 セマンティックセグメンテーション |
| 姿勢推定 | 人体のキーポイント検出を実現します。 | YOLO11 | 5.4 姿勢推定 |
| オープンボキャブラリ物体検出 | テキストプロンプト(prompts)による柔軟な物体検出に対応し、事前に定義したクラス一覧は不要です。 | YOLO-World | 5.5 オープンボキャブラリ物体検出 |
| 画像クラスセグメンテーション | 取得した画像をクラスごとに分割します。例:人、車両、路面、道路標識などの分割。 | MobileNet-UNet | 5.6 画像クラスセグメンテーション |
ドキュメント