コンピュータビジョンとは
これだけは知っておきたい 3 つのこと
コンピュータビジョンは画像、動画、点群から情報を抽出する一連の手法です。コンピュータビジョンの技術には、画像認識、オブジェクト検出、行動認識、3D 姿勢推定、動画追跡、動き推定などがあります。これらの技術は、スマートフォンのログイン時の顔認識、自動運転車の歩行者および車両回避、医療用 MRI における腫瘍の検出などの事例で実用化されています。コンピュータビジョンの手法の開発には、MATLAB® や Simulink® などのソフトウェアツールが使用されています。
コンピュータビジョンの手法の多くは、膨大な実データと、データ探索、モデル学習、アルゴリズム開発のワークフローを使用して開発されます。コンピュータビジョンのエンジニアは、多くの場合、既存の手法に変更を加えて、対象とする特定の問題に当てはめます。コンピュータビジョン システムで使用される主なアプローチを以下でご紹介します。
ディープラーニングに基づく手法
ディープラーニングを使用したコンピュータビジョンへのアプローチが有用なのは、オブジェクト検出、オブジェクト認識、画像のブレ除去、シーンのセグメント化などの用途です。ディープラーニングのアプローチには、さまざまなスケールのパターンを使用してデータから直接学習する畳み込みニューラル ネットワーク (CNN) の学習が含まれます。CNN の学習には、大量のラベル付きの学習用画像または点群が必要です。転移学習では、事前学習済みのネットワークを使用することで、学習データを減らし、このプロセスを高速化します。
特徴に基づく手法
特徴の検出および抽出の手法は、画像や点群のパターンまたは構造を特定するコンピュータビジョンのアルゴリズムです。画像アライメント、動画のブレ補正、オブジェクト検出などに利用されます。画像では、エッジ、コーナー、密度が均一な領域などが有用な特徴タイプであり、BRISK、SURF、ORB などの検出器でそれらの特徴を特定できます。点群では、固有値に基づく特徴抽出器または高速点特徴ヒストグラム (FPFH) 抽出器を使用できます。
点群の処理
点群は、3D 空間内のデータ点の集合であり、点の集まりにより 3D 形状またはオブジェクトを表現します。点群の処理は通常、コンピュータビジョンのアルゴリズムによる解析の準備段階においてデータを前処理するために行われます。点群の処理には通常、以下が含まれます。
3D 画像処理
3D 画像処理手法では、キャリブレーションされたカメラで撮影された複数の画像を使用してシーンの 3D 構造を推定します。その画像は通常、単眼カメラまたはステレオカメラペアから生成されます。3D 画像処理の手法には、以下が含まれます。
コンピュータビジョンは、さまざまな実際のアプリケーションにおいて不可欠です。その中でも代表的なものについて、以下にご紹介します。
自律システム
航空機や地上車両の自律システムは、環境から視覚的なデータや点群データを収集するさまざまなセンサーを使用しています。そしてその収集されたデータで、SLAM (自己位置推定と環境地図作成) や追跡などのコンピュータビジョンの機能を用いて、環境地図を作成します。自律システムはその地図を使用して、道路、歩道、建物をセグメント化し、人間や車両の検出や追跡をすることができます。たとえば、BMW は Assisted Driving View (ADV) においてコンピュータビジョンの機能を使用し、周辺車両の描写と車両タイプの識別を行っています。
産業分野での用途
コンピュータビジョンは、部品の品質監視やインフラの保守など、製造業のアプリケーションで使用されています。たとえば、Shell は、学習済みの領域ベースの畳み込みニューラル ネットワーク (R-CNN) を使用して、機械上のタグを識別しています。TimkenSteel も同じ機能を品質管理に使用し、品質の低い部品や欠陥部品の特定を行っています。
建設業および農業
コンピュータビジョンは、建設業や農業において、空中から撮影したインフラや地形データから情報を抽出するために使用されます。たとえば、スペクトル シグネチャ マッピング、オブジェクト検出、セグメンテーションなどのコンピュータビジョンの機能が、空中プラットフォームからの画像、点群、ハイパースペクトル データの解析に適用されています。日本の八千代エンジニヤリングは、それらの機能をセマンティック セグメンテーションと共に使用して、ダムや橋の破損を検出しています。また、農家でも、ドローンを使用して農場のハイパースペクトル画像を取得し、作物の健康状態を解析しています。
写真
カメラやスマートフォンにおけるコンピュータビジョンの利用は、この 10 年で大きく成長しました。これらのデバイスは顔検出と追跡を顔へのピント合わせに、繋ぎ合わせアルゴリズムをパノラマの作成に使用しています。また、光学式文字認識 (OCR) やバーコードや QR コードスキャナーを統合し、保存された情報へのアクセスにも使用しています。
MATLAB の Image Processing Toolbox™、Computer Vision Toolbox™、Lidar Toolbox™ は、コンピュータビジョンの機能の構築に使用できるアプリ、アルゴリズム、学習済みネットワークを提供しています。画像または点群のデータをインポートして前処理し、組み込みアルゴリズムとディープラーニング ネットワークを使用してデータを解析できます。これらのツールボックスをはじめて使用する際に役立つさまざまな例も用意されています。
MATLAB を使用した欠陥検出
Computer Vision Toolbox は、機械の部品、電子機器の回路などのオブジェクトの異常と欠陥を検出するために使用できます。最初に Image Processing Toolbox の画像前処理アルゴリズムにより、アライメント補正、色によるセグメント化、画像の輝度の調整などの機能を使用することで、正しい特徴を検出できる可能性を高めることができます。
欠陥検出のステップは多くの場合、ディープラーニングを使用して行うことができます。ディープラーニング用の学習データは、MATLAB のイメージ ラベラー アプリ、ビデオラベラーアプリ、Lidar ラベラーアプリを使用して提供できます。これらのアプリでは、セマンティック セグメンテーションまたはインスタンス セグメンテーション マスクを作成することで、データにラベル付けすることができます。その後、ディープラーニング ネットワークをゼロからまたは転移学習を使用して学習させることができます。その上で、学習済みのネットワークまたは事前学習済みのネットワークの 1 つを使用して、オブジェクトを異常または欠陥に基づき分類できます。
MATLAB を使用したオブジェクトの検出および追跡
オブジェクトの検出と追跡は、車両または人の検出、バーコードの読み取り、シーンでのオブジェクト検出などの用途で、コンピュータビジョンの最もよく知られている用途の一つです。ディープ ネットワーク デザイナーを使用すると、ディープラーニング ネットワークを MATLAB で構築し、YOLO v3 を使用した車の検出などの用途に活用できます。まずラベル付けされた学習データを読み込み、データを前処理して、YOLO v3 ネットワークの定義と学習を行います。そして、グラウンド トゥルース データに対する精度とミス率を評価します。その後、そのネットワークを使用して車の検出やその周囲の境界ボックスの表示を行えます。
自律システムのシミュレーションにおけるコンピュータビジョンおよび Simulink の使用
コンピュータビジョンによるオブジェクト検出と追跡の結果は、ロボティクスまたは自律システムでの意思決定に使用できます。センサーフュージョンを使用した自動緊急ブレーキ (AEB) の例では、コンピュータビジョンの機能を統合した Simulink モデルの構築の容易さが説明されています。このモデルでは、次の 2 つの要素が使用されています。車両前方の障害物を検出するためのコンピュータビジョンおよびセンサーフュージョンモデルと、ドライバーに警告し自動的にブレーキをかける前方衝突警告 (FCW) システムです。この例により、Simulink を使用すると、コンピュータビジョン アルゴリズムを幅広いシステム シミュレーションに統合できることがわかります。
Computer Vision Toolbox を使用した位置推定と環境地図作成
MATLAB でコンピュータビジョンを使用すると、Visual simultaneous localization and mapping (vSLAM) を使用したカメラの位置の推定と環境地図の作成、structure from motion (SfM) を使用したオブジェクトの 3D モデルの作成、深度の推定を行うことができます。
また、ステレオカメラペアの位置を推定しながら、imageDatastore や bagOfFeatures などの MATLAB の組み込みの機能を使用して環境地図を作成することができます。まず一対の画像間でマッチする特徴を検出することで地図を初期化し、バンドル調整使用して地図上でカメラの位置の推定と特徴の位置の推定を行い、カメラがシーンを移動する中で位置と方向を調整します。
オブジェクトのカウント
コンピュータビジョンを使用して、画像または動画内のオブジェクトの数を数えることもできます。細胞のカウントの例では、モルフォロジー演算子を適用して細胞をセグメント化し、ブロブ解析を使用して細胞の中心を特定して、特定された中心の数をカウントします。その後、このプロセスを動画内のすべてのフレームに対して繰り返します。
イメージの領域分割アプリ や 色のしきい値アプリなどの MATLAB のアプリは、画像内のオブジェクトをセグメント化するための対話型のインターフェイスを提供します。また、イメージの領域解析アプリは、画像内のオブジェクトのカウントや、面積、重心などのプロパティの計算に役立ちます。