コンピュータ ビジョンとは、人間の視覚をコンピュータ上で再現し、組み立てラインの検査作業や運転支援、ロボットなどのアプリケーションに利用することを目指す技術的取り組みのことです。コンピュータには、人間のような直観的な視覚やイメージ能力がありません。そのため、目的とする分野固有のタスクを解決するアルゴリズムを、人間自身がコンピュータに与える必要があります。
この記事では、コンピュータが人間のように世界を「見る」ようにするには、という観点から、人工知能 (AI) について説明します。特に、クラウドベースのリソースに頼るのではなく、データをローカルで収集して処理し、それに基づいて動作する組み込みシステムについて、各種のコンピュータ ビジョンを簡単に比較しています。
コンピュータ ビジョンとは
1960 年代のコンピュータ ビジョンは、ページ内の文章を読み取ったり (OCR:光学的文字認識)、円や四角形などの図形を認識したりといった処理を行っていました。その後、データから意味を知覚、生成、推測するあらゆるコンピュータ システムで AI が利用されるようになると、コンピュータ ビジョンはその中心的技術の 1 つになりました。
コンピュータ ビジョンには 3 つのアプローチがあります。
- 従来型コンピュータ ビジョン:モーション推定、パノラマ画像の合成、線分検出などのタスクを解決するようにプログラミングされたアルゴリズムを指します。従来型コンピュータ ビジョンは、標準的な信号処理技術とロジックを使用してタスクを解決します。このアプローチでは、画像から意味を抽出する機能をエンジニアが手動で選択し、そこで得られた特徴を、タスク解決のためのアルゴリズムで使用します。たとえば、Canny エッジ検出やオプティカル フローといったアルゴリズムで、輪郭やモーション ベクターを検出します (それぞれ、画像内の物体の分離と、後続画像のモーション トラッキングに利用されます)。このようなタスクや環境に合わせてキャリブレーションが必要なパラメータは、手動または支援アルゴリズムで調整されます。
- 古典的な機械学習を使用したコンピュータ ビジョン:このアプローチでは、機械学習モデルをトレーニングするための特徴量セットを専門家が「作成」する必要があります。特徴の多くは、従来型コンピュータ ビジョン アプリケーションで一般的に使用されるものです。すべての特徴が役に立つわけではないため、不要な特徴を切り捨てるための分析が必要になります。こうやって処理した特徴に基づき、手動では分離が難しいパターンも検出できるように機械学習アルゴリズムをトレーニングします。こうしたアルゴリズムを効果的に実装するには、画像処理と機械学習の専門知識が必要になります。
- ディープ ラーニングを使用したコンピュータ ビジョン:これも機械学習ですが、ほとんど処理されていない「未加工」データに対して動作する、非常に大規模なニューラル ネットワーク モデルに基づいたものです。ディープ ラーニングは、特徴の抽出作業をモデルに取り込み、特徴量セットを手動で作成するための専門知識がなくても、アルゴリズムが最も役に立つ特徴を学習できるようにしたことで、コンピュータ ビジョンに大きな影響を与えました。ディープ ラーニングは、これまでよりも細かいパターンをうまく分離できますが、計算要件とメモリ要件が大きくなります。
では、どのコンピュータ ビジョンが最も優れているのでしょうか?
この問いの答えは、表 1 に示すいくつかの要素によって異なります。この表は一般化されたものであり、精度やタスクの複雑さなどの指標は使用状況によって異なります。
要素 |
従来型コンピュータ ビジョン |
古典的な機械学習 |
ディープ ラーニング |
精度 |
中 |
中 |
高 |
必要な専門知識 |
高 |
高 |
低 |
複雑なタスクにおける有効性 |
低 |
中 |
高 |
演算集中度 |
低 |
中 |
高 |
特定のタスクや環境に合わせた調整の一般性または簡易性 |
低(専門家による調整が必要) |
中(追加データによる調整) |
高(追加データによる調整) |
説明可能性 |
高 |
中 ~ 低 |
低 ~ なし |
サンプル データやトレーニング データの必要性 |
低 ~ なし |
中 |
高 |
発展、研究開発に対する関心度 |
低 |
低 |
高(さらに加速中) |
表1:コンピュータ ビジョン技術の比較
古典的な機械学習を使用したコンピュータ ビジョンは、従来からの方法とディープ ラーニングを使用した方法の中間に位置し、他の 2 つのアプローチに比べてメリットのあるアプリケーションは多くありません。従来型コンピュータ ビジョンは、単純、高スループット、または安全性の確保が重要となるアプリケーションで高い精度と効率を達成できる可能性があります。ディープ ラーニングは最も汎用性が高く、複雑なアプリケーション向けに最も簡単に開発でき、高い精度を達成できます (高密度設計用のプリント基板 (PCB) アセンブリの検証時に微小な欠落コンポーネントを見つけるなど)。
一部のアプリケーションでは、複数の種類のコンピュータ ビジョン アルゴリズムを並列的に使用することで、欠点を補い合って効果を上げることができます。このようなアプローチは、非常に変化の激しい環境で安全性の確保が重要となる、運転支援システムなどのアプリケーションでよく使われます。たとえば、従来型コンピュータ ビジョンを使用したオプティカル フローとディープ ラーニング モデルを併用して周囲の車両を追跡しながら、別のアルゴリズムで 2 つのアプローチの結果を比較し、一致していることを確認します。結果が一致しない場合は、ドライバーに警告したり、安全措置を講じたりすることができます。
また、複数の種類のコンピュータ ビジョンを連続的に使用することもできます。たとえば、バーコード リーダーで、ディープ ラーニングを使用して関心領域を特定して切り取った後に、従来型コンピュータ ビジョン アルゴリズムでデコードを行います。
コンピュータ ビジョン アプリケーションにおけるディープ ラーニングの利点
従来型コンピュータ ビジョンや古典的な機械学習に比べ、ディープ ラーニングは一貫して高い精度を達成することができ、しかも研究者やオープン ソース コミュニティ、企業などで非常に人気が高いため、その技術は急速に向上しています。図 1 に、開発者から見た 3 つの技術のデータ フローの違いをまとめます。
図 1:各コンピュータ ビジョン アプローチのデータ フロー
ディープ ラーニングは演算集中型です。しかし、処理能力、速度、アクセラレータ (ニューラル プロセッシング ユニットやグラフィックス処理ユニットなど) の改善と、ソフトウェアによる行列演算やベクトル演算のサポート強化により、計算要件増加による影響は組込みシステム上でも軽減されています。AM62A7 などのマイクロプロセッサでは、ハードウェア アクセラレータを使用し、高フレーム レートでディープ ラーニング アルゴリズムを実行できます。
コンピュータ ビジョンの実用化
AM62A7 など、TI の AM6xA 製品ラインアップのプロセッサには、従来型コンピュータ ビジョンやディープ ラーニングを使用したコンピュータ ビジョンを使用するタスク用に、ディープ ラーニング アクセラレータ ハードウェアとサポート ソフトウェアが搭載されています。また、C66x などのデジタル信号プロセッサ コアと、オプティカル フローおよびステレオ奥行き推定用のハードウェア アクセラレータにより、TDA4VM や AM68PA などのプロセッサで従来型コンピュータ ビジョンのタスクを高効率で実行できます。
従来型コンピュータ ビジョンとディープ ラーニングを使用したコンピュータ ビジョンの両方に対応したプロセッサを使用することで、SF 映画に出てくる夢のようなツールを作成できるようになります。自動ショッピング カートが買い物を効率化したり、手術用ロボットや医療用ロボットが医者による病気の早期診断をサポートしたり、移動ロボットが芝刈りや配達を行ったりする未来はもう目の前です。TI のエッジ AI ビジョンのページでは、組み込みコンピュータ ビジョンがどのように世界を変えようとしているかを解説しています。ぜひご覧ください。