コンピュータビジョン

コンピュータビジョンは画像、動画、点群から情報を抽出する一連の手法です。コンピュータビジョンの技術には、画像認識、オブジェクト検出、行動認識、3D 姿勢推定、動画追跡、動き推定などがあります。これらの技術は、スマートフォンのログイン時の顔認識、自動運転車の歩行者および車両回避、医療用 MRI における腫瘍の検出などの事例で実用化されています。コンピュータビジョンの手法の開発には、MATLAB®Simulink® などのソフトウェアツールが使用されています。

仕組み

コンピュータビジョンの手法の多くは、膨大な実データと、データ探索、モデル学習、アルゴリズム開発のワークフローを使用して開発されます。コンピュータビジョンのエンジニアは、多くの場合、既存の手法に変更を加えて、対象とする特定の問題に当てはめます。コンピュータビジョン システムで使用される主なアプローチを以下でご紹介します。

ディープラーニングに基づく手法

ディープラーニングを使用したコンピュータビジョンへのアプローチが有用なのは、オブジェクト検出、オブジェクト認識、画像のブレ除去、シーンのセグメント化などの用途です。ディープラーニングのアプローチには、さまざまなスケールのパターンを使用してデータから直接学習する畳み込みニューラル ネットワーク (CNN) の学習が含まれます。CNN の学習には、大量のラベル付きの学習用画像または点群が必要です。転移学習では、事前学習済みのネットワークを使用することで、学習データを減らし、このプロセスを高速化します。

MATLAB での Computer Vision Toolbox を使用した街路のセマンティック セグメンテーション。

MATLAB での Computer Vision Toolbox を使用した街路のセマンティック セグメンテーション。

特徴に基づく手法

特徴の検出および抽出の手法は、画像や点群のパターンまたは構造を特定するコンピュータビジョンのアルゴリズムです。画像アライメント、動画のブレ補正、オブジェクト検出などに利用されます。画像では、エッジ、コーナー、密度が均一な領域などが有用な特徴タイプであり、BRISK、SURF、ORB などの検出器でそれらの特徴を特定できます。点群では、固有値に基づく特徴抽出器または高速点特徴ヒストグラム (FPFH) 抽出器を使用できます。

特徴マッチングを使用した、動く宇宙船からの画像と参照画像の比較。

特徴マッチングを使用した、動く宇宙船からの画像 (右側) と参照画像 (左側) の比較。(画像提供: NASA)

画像処理

画像処理手法は、コンピュータビジョンのワークフローでの前処理のステップとしてよく適用されます。前処理のタイプはタスクによって異なります。関連する画像処理手法には、以下のようなものがあります。

MATLAB での rgb2hsv 色変換を使用した赤色コーンの検出。

MATLAB での rgb2hsv 色変換を使用した赤色コーンの検出。

点群の処理

点群は、3D 空間内のデータ点の集合であり、点の集まりにより 3D 形状またはオブジェクトを表現します。点群の処理は通常、コンピュータビジョンのアルゴリズムによる解析の準備段階においてデータを前処理するために行われます。点群の処理には通常、以下が含まれます。

MATLAB での反復最近接点 (ICP) を使用した 3D 点群のレジストレーションと繋ぎ合わせ。

MATLAB での反復最近接点 (ICP) を使用した 3D 点群のレジストレーションと繋ぎ合わせ。

3D 画像処理

3D 画像処理手法では、キャリブレーションされたカメラで撮影された複数の画像を使用してシーンの 3D 構造を推定します。その画像は通常、単眼カメラまたはステレオカメラペアから生成されます。3D 画像処理の手法には、以下が含まれます。

MATLAB での structure from motion (SfM) を使用したオブジェクトの 3D 再構成

MATLAB での structure from motion (SfM) を使用したオブジェクトの 3D 再構成

重要な理由

コンピュータビジョンは、さまざまな実際のアプリケーションにおいて不可欠です。その中でも代表的なものについて、以下にご紹介します。

自律システム

航空機や地上車両の自律システムは、環境から視覚的なデータや点群データを収集するさまざまなセンサーを使用しています。そしてその収集されたデータで、SLAM (自己位置推定と環境地図作成) や追跡などのコンピュータビジョンの機能を用いて、環境地図を作成します。自律システムはその地図を使用して、道路、歩道、建物をセグメント化し、人間や車両の検出や追跡をすることができます。たとえば、BMW (14:01) は Assisted Driving View (ADV) においてコンピュータビジョンの機能を使用し、周辺車両の描写と車両タイプの識別を行っています。

実データを使用した BMW の Assisted Driving View エンドツーエンド テストを MATLAB がサポート。

実データを使用した BMW の Assisted Driving View エンドツーエンド テストを MATLAB がサポート。

産業分野での用途

コンピュータビジョンは、部品の品質監視やインフラの保守など、製造業のアプリケーションで使用されています。たとえば、Shell (19:44) は、学習済みの領域ベースの畳み込みニューラル ネットワーク (R-CNN) を使用して、機械上のタグを識別しています。TimkenSteel も同じ機能を品質管理に使用し、品質の低い部品や欠陥部品の特定を行っています。

MATLAB による OCR とディープラーニングを使用したタグ認識。

MATLAB による OCR とディープラーニングを使用したタグ認識。

建設業および農業

コンピュータビジョンは、建設業や農業において、空中から撮影したインフラや地形データから情報を抽出するために使用されます。たとえば、スペクトル シグネチャ マッピング、オブジェクト検出、セグメンテーションなどのコンピュータビジョンの機能が、空中プラットフォームからの画像、点群、ハイパースペクトル データの解析に適用されています。日本の八千代エンジニヤリングは、それらの機能をセマンティック セグメンテーションと共に使用して、ダムや橋の破損を検出しています。また、農家でも、ドローンを使用して農場のハイパースペクトル画像を取得し、作物の健康状態を解析しています。

MATLAB による SegNet を使用したダム表面の破損の検出。

MATLAB による SegNet を使用したダム表面の破損の検出。

写真

カメラやスマートフォンにおけるコンピュータビジョンの利用は、この 10 年で大きく成長しました。これらのデバイスは顔検出と追跡を顔へのピント合わせに、繋ぎ合わせアルゴリズムをパノラマの作成に使用しています。また、光学式文字認識 (OCR)バーコードや QR コードスキャナーを統合し、保存された情報へのアクセスにも使用しています。

MATLAB による特徴に基づく画像レジストレーション手法を使用したパノラマ画像の作成。

MATLAB による特徴に基づく画像レジストレーション手法を使用したパノラマ画像の作成。

MATLAB によるコンピューター ビジョン

MATLAB の Image Processing Toolbox™Computer Vision Toolbox™、Lidar Toolbox™ は、コンピュータビジョンの機能の構築に使用できるアプリ、アルゴリズム、学習済みネットワークを提供しています。画像または点群のデータをインポートして前処理し、組み込みアルゴリズムとディープラーニング ネットワークを使用してデータを解析できます。これらのツールボックスをはじめて使用する際に役立つさまざまな例も用意されています。

MATLAB を使用した欠陥検出

Computer Vision Toolbox は、機械の部品、電子機器の回路などのオブジェクトの異常と欠陥を検出するために使用できます。最初に Image Processing Toolbox の画像前処理アルゴリズムにより、アライメント補正色によるセグメント化画像の輝度の調整などの機能を使用することで、正しい特徴を検出できる可能性を高めることができます。

欠陥検出のステップは多くの場合、ディープラーニングを使用して行うことができます。ディープラーニング用の学習データは、MATLAB のイメージ ラベラー アプリ、ビデオラベラーアプリ、Lidar ラベラーアプリを使用して提供できます。これらのアプリでは、セマンティック セグメンテーションまたはインスタンス セグメンテーション マスクを作成することで、データにラベル付けすることができます。その後、ディープラーニング ネットワークをゼロからまたは転移学習を使用して学習させることができます。その上で、学習済みのネットワークまたは事前学習済みのネットワークの 1 つを使用して、オブジェクトを異常または欠陥に基づき分類できます。

MATLAB によるディープラーニング ネットワークを使用した不良ナットと良ナットの検出。

MATLAB によるディープラーニング ネットワークを使用した不良ナットと良ナットの検出。

MATLAB を使用したオブジェクトの検出および追跡

オブジェクトの検出と追跡は、車両またはの検出、バーコードの読み取りシーンでのオブジェクト検出などの用途で、コンピュータビジョンの最もよく知られている用途の一つです。ディープ ネットワーク デザイナーを使用すると、ディープラーニング ネットワークを MATLAB で構築し、YOLO v3 を使用した車の検出などの用途に活用できます。まずラベル付けされた学習データを読み込み、データを前処理してYOLO v3 ネットワークの定義と学習を行います。そして、グラウンド トゥルース データに対する精度ミス率を評価します。その後、そのネットワークを使用して車の検出やその周囲の境界ボックスの表示を行えます。

MATLAB のディープ ネットワーク デザイナーで生成された YOLO v3 を使用した車の検出

MATLAB のディープ ネットワーク デザイナーで生成された YOLO v3 を使用した車の検出

自律システムのシミュレーションにおけるコンピュータビジョンおよび Simulink の使用

コンピュータビジョンによるオブジェクト検出と追跡の結果は、ロボティクスまたは自律システムでの意思決定に使用できます。センサーフュージョンを使用した自動緊急ブレーキ (AEB) の例では、コンピュータビジョンの機能を統合した Simulink モデルの構築の容易さが説明されています。このモデルでは、次の 2 つの要素が使用されています。車両前方の障害物を検出するためのコンピュータビジョンおよびセンサーフュージョンモデルと、ドライバーに警告し自動的にブレーキをかける前方衝突警告 (FCW) システムです。この例により、Simulink を使用すると、コンピュータビジョン アルゴリズムを幅広いシステム シミュレーションに統合できることがわかります。

Simulink を使用した車両前方の障害物の検出

Simulink を使用した車両前方の障害物の検出

Computer Vision Toolbox を使用した位置推定と環境地図作成

MATLAB でコンピュータビジョンを使用すると、Visual simultaneous localization and mapping (vSLAM) を使用したカメラの位置の推定と環境地図の作成、structure from motion (SfM) を使用したオブジェクトの 3D モデルの作成、深度の推定を行うことができます。

また、ステレオカメラペアの位置を推定しながら、imageDatastorebagOfFeatures などの MATLAB の組み込みの機能を使用して環境地図を作成することができます。まず一対の画像間でマッチする特徴を検出することで地図を初期化し、バンドル調整使用して地図上でカメラの位置の推定と特徴の位置の推定を行い、カメラがシーンを移動する中で位置と方向を調整します。

Computer Vision Toolbox による ORB-SLAM2 を使用したステレオカメラペア間の特徴のマッチング。

Computer Vision Toolbox による ORB-SLAM2 を使用したステレオカメラペア間の特徴のマッチング。

オブジェクトのカウント

コンピュータビジョンを使用して、画像または動画内のオブジェクトの数を数えることもできます。細胞のカウントの例では、モルフォロジー演算子を適用して細胞をセグメント化し、ブロブ解析を使用して細胞の中心を特定して、特定された中心の数をカウントします。その後、このプロセスを動画内のすべてのフレームに対して繰り返します。

モルフォロジー演算子とブロブ解析を使用した MATLAB による細胞のカウント。

モルフォロジー演算子とブロブ解析を使用した MATLAB による細胞のカウント 

イメージの領域分割アプリ色のしきい値アプリなどの MATLAB のアプリは、画像内のオブジェクトをセグメント化するための対話型のインターフェイスを提供します。また、イメージの領域解析アプリは、画像内のオブジェクトのカウントや、面積、重心などのプロパティの計算に役立ちます。