このページは Cloud Translation API によって翻訳されました。
Switch to English

オブジェクト検出

境界ボックスを使用して、画像内の複数のオブジェクトを検出します。オブジェクトの90の異なるクラスを認識します。

始めましょう

TensorFlow Liteが初めてで、AndroidまたはiOSを使用している場合は、開始に役立つ以下のサンプルアプリケーションを探すことをお勧めします。

Androidの例 iOSの例

AndroidまたはiOS以外のプラットフォームを使用している場合、またはTensorFlow Lite APIに既に精通している場合は、スターターオブジェクト検出モデルと付随するラベルをダウンロードできます。

メタデータを含むスターターモデルをダウンロードする

スターターモデルの詳細については、「 スターターモデル 」を参照してください。

メタデータと関連フィールド(例: labels.txt )の詳細については、モデルからメタデータ読み取るをご覧ください。

オブジェクト検出とは何ですか?

画像またはビデオストリームが与えられると、オブジェクト検出モデルは、既知のオブジェクトのセットのどれが存在するかを識別し、画像内のそれらの位置に関する情報を提供できます。

たとえば、このサンプルアプリケーションのスクリーンショットは、2つのオブジェクトがどのように認識され、それらの位置に注釈が付けられているかを示しています。

Androidの例のスクリーンショット

オブジェクト検出モデルは、オブジェクトの複数のクラスの存在と場所を検出するようにトレーニングされています。たとえば、さまざまな果物を含む画像、それらが表す果物のクラスを指定するラベル (りんご、バナナ、イチゴなど)、および各オブジェクトの表示場所を指定するデータを使用して、モデルをトレーニングすることができます。画像。

その後、モデルに画像を提供すると、検出したオブジェクトのリスト、各オブジェクトを含む境界ボックスの場所、および検出が正しかったことを示すスコアを出力します。

モデル出力

リンゴ、バナナ、イチゴを検出するモデルがトレーニングされていると想像してください。画像を渡すと、設定された数の検出結果が出力されます。この例では5です。

クラススコアロケーション
林檎 0.92 [18、21、57、63]
バナナ 0.88 [100、30、180、150]
イチゴ 0.87 [7、82、89、163]
バナナ 0.23 [42、66、57、83]
林檎 0.11 [6、42、31、58]

信頼スコア

これらの結果を解釈するには、検出された各オブジェクトのスコアと場所を確認します。スコアは0〜1の数値で、オブジェクトが本当に検出されたという信頼度を示します。数値が1に近いほど、モデルの信頼性が高くなります。

アプリケーションに応じて、それ以下では検出結果を破棄するカットオフしきい値を決定できます。この例では、賢明なカットオフが0.5のスコアであると判断する場合があります(検出が有効である確率は50%です)。その場合、これらの信頼スコアが0.5未満であるため、配列の最後の2つのオブジェクトを無視します。

クラススコアロケーション
林檎 0.92 [18、21、57、63]
バナナ 0.88 [100、30、180、150]
イチゴ 0.87 [7、82、89、163]
バナナ 0.23 [42、66、57、83]
林檎 0.11 [6、42、31、58]

使用するカットオフは、誤検知(誤って識別されたオブジェクト、またはそうでない場合に誤ってオブジェクトとして誤って識別された画像の領域)、または誤検知(本物のオブジェクト)彼らの自信が低かったので逃した)。

たとえば、次の画像では、梨(モデルが検出するようにトレーニングされたオブジェクトではない)が「人」として誤って識別されました。これは、適切なカットオフを選択することで無視できる誤検知の例です。この場合、カットオフが0.6(または60%)であれば、誤検知を簡単に除外できます。

誤検知を示すAndroidの例のスクリーンショット

ロケーション

検出されたオブジェクトごとに、モデルは、その位置を囲む境界矩形を表す4つの数値の配列を返します。私たちが提供するスターターモデルの場合、番号は次のように並べられます。

[ 上、 左、 下、 正しい ]

topの値は、イメージの上端から長方形の上端までの距離をピクセル単位で表します。左の値は、入力画像の左からの左端の距離を表します。他の値は、同様に下端と右端を表します。

パフォーマンスベンチマーク

ここで説明するツールを使用して、パフォーマンスベンチマークの数値が生成されます

モデル名モデルサイズ端末 GPU CPU
COCO SSD MobileNet v1 27 Mb Pixel 3(Android 10) 22ms 46ミリ秒*
Pixel 4(Android 10) 20ms 29ms *
iPhone XS(iOS 12.4.1) 7.6ミリ秒 11ms **

* 4スレッドが使用されます。

**最高のパフォーマンス結果を得るには、iPhoneで2つのスレッドを使用します。

スターターモデル

この事前トレーニング済みの量子化COCO SSD MobileNet v1モデルから始めることをお勧めします。

スターターモデルとラベルをダウンロードする

使用と制限

私たちが提供するオブジェクト検出モデルは、画像内の最大10個のオブジェクトを識別して特定できます。 90クラスのオブジェクトを認識するようにトレーニングされています。クラスの完全なリストについては、 メタデータの視覚化を使用してモデルに埋め込まれたラベルファイルを参照してください。

新しいクラスを認識するようにモデルをトレーニングする場合は、モデルのカスタマイズを参照してください。

次の使用例では、別のタイプのモデルを使用する必要があります。

入力

モデルは画像を入力として受け取ります。予想される画像は300x300ピクセルで、ピクセルごとに3つのチャネル(赤、青、緑)があります。これは、270,000バイト値(300x300x3)のフラット化されたバッファーとしてモデルにフィードする必要があります。モデルは量子化されているため 、各値は0〜255の値を表す1バイトにする必要があります。

出力

モデルは、インデックス0〜4にマップされた4つの配列を出力します。配列0、1、2は10個の検出されたオブジェクトを表し、各配列の1つの要素が各オブジェクトに対応しています。常に10個のオブジェクトが検出されます。

インデックス名前説明
0 場所 0と1の間の[10] [4]浮動小数点値の多次元配列、内部配列は[上、左、下、右]の形式で境界ボックスを表します
1 クラスラベルファイルからのクラスラベルのインデックスをそれぞれ示す10個の整数の配列(浮動小数点値として出力)
2 スコアクラスが検出された確率を表す0と1の間の10個の浮動小数点値の配列
数と検出検出結果の総数を表す浮動小数点値を含む長さ1の配列

モデルをカスタマイズする

私たちが提供する事前トレーニング済みモデルは、90クラスのオブジェクトを検出するようにトレーニングされています。クラスの完全なリストについては、 モデルメタデータのラベルファイルをご覧ください。

転移学習と呼ばれる手法を使用して、モデルを再トレーニングして、元のセットにないクラスを認識することができます。たとえば、元のトレーニングデータには野菜が1つしかないにもかかわらず、モデルを再トレーニングして複数の種類の野菜を検出できます。これを行うには、トレーニングする新しいラベルごとにトレーニング画像のセットが必要です。

トレーニングで転移学習を実行し、30分でリアルタイムのモバイルオブジェクト検出器を提供する方法を学びます。