物体認識とは、画像やビデオ内の物体を識別するためのコンピュータビジョンの手法です。ディープラーニングや機械学習の重要な成果のひとつが物体認識と言えます。人間が写真やビデオを見る場合、人物や物体、シーン、細部の情報をすぐに見分けることができます。物体認識の目標は、人間が自然に行っていることをコンピュータに教えること、つまり画像に含まれている情報を理解できるだけの認識レベルを獲得することです。
図1. 物体認識を使用したさまざまな物体のカテゴリの識別
物体認識は自動運転車を支える主要な技術であり、停止標識を認識したり、歩行者と街灯を区別することを可能にします。また、その他にも、生体イメージングによる病気の識別、工業用検査、ロボットビジョンなど、さまざまな適用分野で活用されています。
また、物体認識は一般物体認識と特定物体認識に大別されます。一例として、図1に写っている犬の認識を取り上げます。トイプードルや柴犬など世界には数百以上の犬種が存在すると言われており、それぞれ特徴が異なりますが、例えば柴犬だけを認識するタスクは特定物体認識と呼ばれます。このタスクにおいては、画像特徴などを利用してデータベースを構築し、特徴のマッチングを利用して類似度を計算する等の方法が用いられてきました。一方、様々な犬種をまとめて犬として認識するタスクは一般物体認識と呼ばれます。この場合、犬として不変な特徴を見つけ出す必要があり非常に難しいタスクとなりますが、ディープラーニングの登場により認識精度が飛躍的に向上しています。
物体認識 vs. 物体検出
物体検出と物体認識は、物体を識別するという点で類似した手法ですが、その実行方法が異なります。物体検出は、画像内の物体のインスタンスを見つけるプロセスです。ディープラーニングの場合、物体検出は物体の識別だけでなく、画像内の位置の特定が行われるという点で、物体認識の一部と言えます。これにより、同じ画像 内で複数の物体を識別し、それらの位置を特定することが可能になります。
図2. 物体認識 (左) と物体検出 (右)
物体認識のテクニック
ディープラーニングを使用した物体認識
ディープラーニングは、物体認識の一般的な手法になっています。畳み込みニューラルネットワーク (CNN) などのディープラーニングモデルを使用して、物体本来の特徴を自動的に学習することにより、その物体を識別できるようになります。たとえば、畳み込みニューラルネットワークは、数千もの学習用画像の解析を行い、猫と犬の違いを示す特徴を学習することによって、猫と犬を区別する方法を学習できます。
ディープラーニングを使用して物体認識を実行するには、2 つのアプローチがあります。
- ゼロからモデルを学習:ゼロから ディープニューラルネットワークの学習を行うには、非常に大きなラベル付きデータセットを収集して、特徴の学習とモデルの構築を行うネットワークアーキテクチャを設計します。このアプローチでは非常に優れた結果が得られますが、大量の学習データが必要であり、また CNNにおける層と重みの設定を行う必要があります。
- 事前学習済みのディープラーニングモデルを使用: 多くのディープラーニングアプリケーションでは、事前学習済みのモデルの微調整を含む、転移学習のアプローチが使われています。AlexNet や GoogLeNet などの既存のネットワークから始めて、従来は不明だったクラスを含む新しいデータを投入します。数千または数百万もの画像に対するモデルの学習が既に行われているため、この方法は時間がかからず、より迅速に結果を出すことができます。
ディープラーニングにより高水準の精度が得られますが、正確に予測するには大量のデータが必要です。
図4:レストランの料理の物体認識を示すディープラーニングアプリケーション
機械学習を使用した物体認識
物体認識では機械学習もまた 一般的な手法であり、ディープラーニングとは異なる アプローチが利用できます。機械学習を使用した一般的な例を次に示します。
- HOG 特徴抽出とSVM 機械学習 モデルを使用した物体認識
- SURF や MSER などの特徴を用いた Bag-of-words モデル
- 顔や上半身などのさまざまな物体の認識に使用可能な Viola-Jones アルゴリズム
機械学習のワークフロー
標準的な機械学習の手法を使用して物体認識を実行するには、はじめに画像 (またはビデオ) の収集を行い、各画像の関連する特徴を選択します。たとえば、特徴抽出アルゴリズムにより、データのクラスを区別するために使用できる、エッジやコーナーの特徴を抽出します。
これらの特徴は機械学習モデルに追加され、別個のカテゴリに分割されてから、新しい 物体の解析および分類に使用されます。
機械学習アルゴリズムと特徴抽出にはさまざまな手法があり、正確な物体認識モデルを作成するための多くの組み合わせが存在します。
図5:物体認識のための機械学習のワークフロー
物体認識に機械学習を使用することで、学習に最適な特徴と分類器の組み合わせを選択できる柔軟性が生まれます。最小限のデータで正確な結果を得ることができます。
物体認識における 機械学習 vs. ディープラーニング
物体認識の最適なアプローチは、アプリケーションと解決しようとする課題に応じて決まります。多くの場合、特に、物体のクラスを区別するために画像のどの特性/特徴を使用するべきか明らかな場合には、機械学習が効果的な手法となり得ます。
機械学習かディープラーニングを選択する際にまず考慮すべきことは、強力な GPU があるかどうかと多くのラベル付き学習画像があるかどうかです。この質問のどちらかがいいえの場合、機械学習が最適な手法と言えるでしょう。ディープラーニングは、多くの画像がある場合によく動作し、GPU によってモデルの学習に必要な時間を短縮しやすくなります。
図6:ディープラーニングか機械学習を選択する際の重要なポイント
関連情報
その他の物体認識の方法
アプリケーションによっては、その他のより基本的な物体認識のアプローチでも十分な場合があります。
- テンプレートマッチング – 小さな画像、つまりテンプレートを使用して、大きな画像内で一致する領域を探します。
- 画像のセグメンテーションと blob 解析 – サイズ、色または形状などの簡単な物体のプロパティを使用します。
一般的に、画像セグメンテーションなどの簡単なアプローチを使用して物体を認識できる場合は、より簡単なアプローチから始めるのに越したことはありません。これにより、数百や数千もの学習画像や複雑すぎるソリューションが不要な強固なソリューションが得られます。
ディープラーニングと機械学習
わずか数行の MATLAB コードで物体認識のための機械学習モデルとディープラーニングモデルを構築することができます。ディープラーニングや機械学習の専門家である必要はありません。
MATLAB を使用した物体認識では以下が可能であるため、短時間で物体認識を実現できます。
- 専門領域の知識を使い、データサイエンスは MATLAB で学習:
MATLAB を使用して、機械学習やディープラーニングの専門知識を学び、経験を積むことで、より学習が実践的になり、活用できるようになります。MATLAB により、対象領域の専門知識を持つ担当者が物体認識モデルを作成できるようになるため、業界や専門分野について必ずしも詳しくないデータサイエンティストにタスクを依頼する必要がなくなります。
- アプリを使用してデータにラベルを付け、モデルを作成
MATLAB により、最低限のコードで機械学習モデルやディープラーニングモデルを作成できます。
分類学習アプリを使用すると、機械学習モデルをすばやく作成して、別の機械学習アルゴリズムと比較できます。コードを記述する必要はありません。
イメージラベラーアプリを使用すると、ディープラーニングモデルの学習とテストのために、静止画内の物体に対話的にラベルを付けたり、動画内の真値 ラベリングを自動化することができます。この対話的かつ自動化されたアプローチは、結果の向上と時間短縮につながります。
- 物体認識のワークフローをひとつに統合
MATLAB は、複数の領域を単一のワークフローに統合することができます。MATLAB では、単一の環境でアイデアの検討とプログラミングを行うことができます。ディープラーニングや機械学習だけでなく、これらのアルゴリズムとよく組み合わせられるロボット、コンピュータビジョンおよびデータアナリティクスなどのさまざまな領域のためのツールや機能を提供します。
MATLAB は、エンタープライズシステム、クラスター、クラウドおよび組み込みデバイスへのモデルの配布を自動化します。
オブジェクト認識の詳細を知る方法
ビデオ
オブジェクト認識: コンピューター ビジョンのためのディープラーニングと機械学習 (26:57)
ダウンロード: プレゼンテーションで使用される デモコードをダウンロード することもできます。