コンピューター・ビジョン入門

この記事は「Getting started with IBM Maximo Visual Inspection」ラーニング・パスと「Getting started with Watson Visual Recognition」ラーニング・パスの両方を構成するコンテンツです

はじめに

カメラが至るところに遍在する今、動画と画像は人工知能にとってとりわけ役立つデータ・セットになっています。具体的には、深層学習を使用してコンピューター・ビジョンのモデルが作成されていますが、これらのモデルをトレーニングして、画像 (または動画) が表すものを認識させることができます。

学習の目的

この記事ではコンピューター・ビジョンの基礎を説明し、アプリで考えられるコンピューター・ビジョンの利用方法を紹介します。記事で取り上げる内容は次のとおりです。

  • 画像分類
  • 物体検出
  • 動画内の物体の追跡
  • カスタム・モデルの作成方法
  • モデルの使用法
  • 使用ケースの例

よく使われる用語の定義

用語 定義
データ・セット この記事でのデータ・セットは、画像と動画の集合です。データ・セットの例としては、自動車の画像が挙げられます。
モデル モデルとは、予測された出力を生成するよう調整されたアルゴリズムの一式です。モデルはデータ・セットが提供する入力に基づいて、画像や動画フレームを分類したり、画像や動画フレームに含まれる物体を検出したりするようトレーニングされます。
カテゴリー カテゴリーを使用して画像を分類します。所定の画像は 1 つのカテゴリーにのみ分類できます。自動車の画像が含まれるデータ・セットのカテゴリーの例としては、メーカー (トヨタ、ホンダ、シボレー、フォードなど) が挙げられます。
物体 画像に含まれる特定のアイテムを識別したり、動画の特定のフレームを識別したりするためには、物体が利用されます。画像または動画フレームに含まれる複数の物体にラベルを付けることができます。自動車の画像に含まれる物体の例としては、車輪、ヘッドライト、フロント・ガラスが挙げられます。

コンピューター・ビジョンの基礎

コンピューター・ビジョンについて理解するには、まず画像分類を理解してから、物体検出に進むのがよいでしょう。画像分類にしても物体検出にしても、独自のカスタム・モデルを使用して、これらの機能をアプリに適用する方法は限りなく考えられます。動画に含まれるアクションを検出したり、物体を追跡したりする高度なアプリケーションを作成する場合も、この 2 つが基礎となります。

画像分類

画像分類の目的は、画像を検査して、モデルに応じて正しく分類するソリューションを作成することです。画像分類のモデルは、あの有名なホットドッグ/非ホットドッグ・モデル、つまりホットドッグの画像であるかどうかだけを調べる二項分類モデルのように単純なものにもできます。このモデルのアプリケーションは限られていると思うかもしれませんが (実際にそうです)、単純な二項分類モデルに基づいてアプリケーションが行うあらゆる if/else 決定を考えると、アプリケーション固有の二項分類モデルのさまざまな使用ケースが見つかるはずです。医療検査のような高度なアプリケーションでも、突き詰めるところ、画像分類で判断できる単純な肯定/否定の回答を出しているだけに過ぎないことはよくあります。

下の動画で、動画と単純なモデルを使った分類の例を示しています。この分類では画像ではなく動画を使用していますが、動画も元をただせば一連の画像 (フレーム) です。現在のフレームがホットドッグであるまたはホットドッグではないとして認識されます。

hotdognothotdog.gif

画像の二項分類の例

画像分類の多くの使用ケースは二項分類ではありません。二項分類以外の使用ケースでは、複数のカテゴリーを認識するようにモデルをトレーニングします。選択したカテゴリーを返すだけでなく、信頼度のパーセンテージも返します。この信頼度のパーセンテージに基づいて最も可能性の高いカテゴリーを選択するわけですが、信頼するには低すぎるパーセンテージの場合でも、しきい値を使用して最も可能性の高いカテゴリーを出力することができます。

例えば、この画像分類チュートリアルでは、鳥の画像を分類できるようにモデルをトレーニングしています。以下に示すサンプル Swift アプリは iPhone 上で動作し、100% の信頼度をしきい値として、カモメの画像をチドリ目カモメ科の標準属に分類します。

birdclassifierapp.png

マルチクラス分類アプリの例

物体検出

物体検出は画像分類と同様ですが、画像に含まれる複数の物体を特定して分類するという点が異なります。この物体検出コード・パターンでは、コカ・コーラの画像を分類するだけでなく、画像内の各ボトルの位置も特定するようにモデルをトレーニングしています。

以下の図は、認識された 3 種類のカテゴリーのコカ・コーラ製品を示しています。このモデルは分類したラベルの信頼度に加え、アプリが識別された各物体を境界ボックスで囲めるように、各物体の座標を返します。

objectdetectionapp.png

物体検出アプリの例

物体検出の目的は、画像自体を特定のカテゴリーに分類して説明することではありません。物体検出は、画像に含まれるさまざまなカテゴリーの物体を検出することを目的とする、多種多様な使用ケースで使用されています。アプリケーションに、物体を識別して位置を特定し、物体の数をカウントする機能があれば、こうしたコンピューター・ビジョンを応用する可能性が広がります。

動画内の物体の追跡

物体検出を動画で使用する場合、その一般的な目的は、連続するフレームで物体を追跡することです。物体を最初に検出するには、動画からフレームを抽出して、そのフレーム内で物体を検出します。物体をカウントして、各物体の位置を特定することに加え、フレームごとに移動する物体を追跡すると、達成可能な目的に別の次元が加わります。

以下に、物体追跡コード・パターンで物体検出と物体追跡を併せて使用し、動画にアノテーションを付けて自動車の数をカウントした例を示します。

counting_cars.gif

物体検出および追跡アプリの例

カスタム・モデルの作成方法

画像分類と物体検出 (および追跡) の基礎を説明したので、次は、深層学習を使用して画像分類アプリと物体検出アプリならびに特定の使用ケースに応じたアプリを作成する方法を説明します。実際のところ、こうしたアプリを作成するのは、想像するよりも遥かに簡単です。

深層学習と畳み込みニューラル・ネットワークを使用して画像内の物体を認識するために、かなりの研究が行われてきました。既存のモデルはすでに、境界、形状、パターンなどをどのように認識すればよいか把握しています。ここでは 転移学習 と呼ばれる機械学習を使用して、既存のモデルを独自のデータ・セットで再トレーニングします。

サンプルを提供する

サンプルの鳥分類子を再利用するために必要なのは、認識するタイプごとに十分な数の鳥のサンプル画像を用意することだけです。転移学習に従い、期待される結果が既知となっている新しいデータ・セットを使用すれば、鳥の 画像分類 に対処する新しいモデルを作成できます。

Maximo Visual Inspection を使用すると、ユーザー・インターフェースを使って画像をアップロード、分類してから、ボタンを 1 回押すだけでモデルをトレーニングできます。まさにそれだけのことです。他のさまざまなフレームワークでも、少々コードを処理すれば同じようにモデルをトレーニングすることはできます。サンプル・コードをコピーして、独自のデータ・セット内でコードを交換し、画像をカスタム・カテゴリーにマッピングするのはそれほど難しいことではありません。けれども、使いやすい UI があったほうが、円滑にスタートを切ることができます。

物体検出 も画像分類と同様ですが、この場合、トレーニングに使用するデータ・セット内で物体の位置も特定する必要があります。物体検出モデルを作成するには、画像一式と、各画像に含まれる各物体の位置 (座標など) を提供しなければなりません。

Maximo Visual Inspection には、物体を検出する場合の作業も容易にする UI が用意されているので、以下の例ではこの UI を使用します。どのフレームワークを使用するにしても、画像をアップロードして、画像内の各物体のラベルと座標を指定する手段が必要です。物体検出を目的としたラベル付けは、通常、画像分類でのラベル付けよりも時間がかかります。また、物体検出モデルをトレーニングするために必要な計算処理時間は、画像分類モデルをトレーニングする場合よりも大幅に長くなるのが通常です。GPU と最新のアルゴリズムを使用すると、トレーニング時間を短縮するのに効果があります (したがって、より正確なモデルを作成するために、サイズの大きい高品質のデータ・セットを使用できます)。

以下の図に、物体検出を目的としたラベル付けの例を示します。この例では Maximo Visual Inspection を使用して、データ・セットを作成するために動画からフレームを抽出しています。抽出された一連のフレーム内で、手作業でボックスをドラッグして各自動車を囲み、ラベルを付けています。手作業によるラベル付けが完了した後は、自動ラベリングおよびデータ拡充機能を使用して、手作業による成果を増幅しています。

manual_tagging.jpg

手作業によるラベル付け

Maximo Visual Inspection はオープンソース・テクノロジーをベースに構築されています。使いやすい UI を利用するのでも、コードを作成してオープンソース API をより直接的に操作するのでも、GPU 搭載の Power Systems 上で実行することで、トレーニング時間を短縮し、より精度の高いモデルを迅速に作成できます。

トレーニング、検証、テストを行う

モデルのトレーニングは基本的に、サンプル画像を繰り返し処理して、予測アルゴリズムの精度を高めるために重みを調整するというプロセスです。ここでは、深層学習と畳み込みニューラル・ネットワークの詳細を掘り下げることはしませんが、転移学習を使用すれば、内部アルゴリズムに気を遣いすぎることなく深層学習を適用できます。ただし、正確なモデルを作成して精度を維持するためには理解しておくべき点がいくつかあります。

データ・セットを分割して、トレーニングを検証から切り離す必要があります。(例えば Maximo Visual Inspection を使用すると) データの分割は自動的に行うことができます。この点を考慮しなければならない理由は、トレーニングが過剰適合の結果をもたらす可能性があるためです。反復処理でトレーニング・データの精度を高めるうちに、モデルが「正確すぎる」ものになる場合があります。つまり、モデルがトレーニングに使用した画像をほぼ 100% の精度で認識するということですが、新しい画像に含まれる物体を認識する際は、それほど正確になりません。これが、過剰適合と呼ばれる概念です。新しい画像でも堅牢なモデルにするためには、検証セットを使用してトレーニングを検証し、過剰適合を回避する必要があります。

トレーニングと検証を、間隔をあけて指定の回数繰り返した後 (精度が向上しなければ、早い段階でキャンセルすることも考えられます)、モデルが完成したものとします。通常は、モデルの精度に関するレポートも入手します。この精度は提供されたデータでの精度であることに注意してください。

一部の検証がトレーニングの一環であったとしても、追加のテスト・データを使用して、トレーニング (または検証) データ・セットには含まれていなかった画像でのモデルの精度を確認することをお勧めします (多くの場合、こうすることによって満足できる結果を得られます)。また、新しいデータでモデルを継続的に評価し、改善したデータ・セットでモデルを再トレーニングする必要があることも珍しくありません。

モデルの使用法

これまでに紹介したさまざまなアプリケーションは、いずれも入力画像を取り、カスタム・モデルを使用して結果 (画像分類または物体検出) を生成する方法を説明するものです。入力を取り、そのカテゴリーまたは物体を 推論 する場合には、推論 という用語が使用されます。推論を行うのに使用するのは、モデルです。トレーニングに長い時間がかかっても、トレーニングが完了した時点で、モデルは最適化されて推論に使用できる状態になります。詳細はフレームワーク、言語、プラットフォームによって異なりますが、モデルがデプロイ (またはロード) されると、アプリケーション・コードで API を呼び出せるようになります。API を使用して、アプリのコードは画像を取り、推論結果を取得して、その結果を表示する方法を選択します。

使用ケースの例

いくつかの例を挙げてきて、果てしない可能性にも言及しましたが、さらに、コンピューター・ビジョンの適用方法を考えるきっかけとなるよう、使用ケースの例をいくつかリストアップします。

  • 自動車: 交通量の多い交差点でニアミス事故をモニタリングする
  • 消費財: 棚上に置かれた商品の品質や数量をモニタリングする
  • ヘルスケア: ダーモスコピー画像内の黒色腫を検出する
  • 製造: コンベヤー・ベルト上のアイテムを数えて分類する
  • メディア: 広告掲載の有効性を分析する
  • エネルギー: ドローンを使用してインフラストラクチャーをリモートから検査する

上記を含め、その他の使用ケースについて詳しくは、Watson Machine Learning and IBM Maximo Visual Inspection use cases を参照してください。

まとめ

この記事は「Getting started with IBM Maximo Visual Inspection」ラーニング・パスの最初のコンテンツです。このラーニング・パスのハンズオン・チュートリアルとサンプル・コードを使用して、引き続きスキルを伸ばしてください。Maximo Visual Inspection ラーニング・パスを続けるには、次の記事「Introduction to IBM Maximo Visual Inspection」に進んでください。

この記事は「Getting started with Watson Visual Recognition」ラーニング・パスを構成するコンテンツでもあります。このラーニング・パスに引き続き従うには、「Watson Visual Recognition の紹介」に進んでください。