MediaPipe KNIFT:テンプレートベースの画像検索を改善(3/3)

モデル

1.MediaPipe KNIFT:テンプレートベースの画像検索を改善(3/3)まとめ

・一時停止標識の識別デモではKNIFTが240中183、ORBは133フレームのマッチングに成功
・困難なデモでもKNIFTが150中89、ORBは37フレームのマッチングに成功
・ユーザーが生成したテンプレートを使用してデモを行うためのツールも提供されている

2.KNIFTとORBの比較

以下、developers.googleblog.comより「MediaPipe KNIFT: Template-based feature matching」の意訳です。元記事の投稿は2020年4月22日、Zhicheng WangさんとGenzhi Yeさんによる投稿です。

アイキャッチ画像のクレジットはPhoto by Markus Spiske on Unsplash

図7では、テンプレートとしてGoogle画像検索結果から一般的な米国の一時停止標識画像を選択し、動画内の一時停止標識との照合を試みています。この例では、表2の「二次元平面マッチ(Matching 2D planar surface)」カテゴリに分類されます。

oFastによって検出された200の同じキーポイント位置と同じRANSAC設定(Random Sample Consensus、堅牢性推定アルゴリズム)を使用して、KNIFTが240フレーム中、183フレームの一時停止標識のマッチングに成功したことを示します。対照的に、ORBは240フレーム中、133フレームのマッチングに成功しました。


図8:matching 3D untextured objectの例
異なる視点で見た2つのテンプレート画像

 


図9:matching 3D untextured objectの例
左:KNIFT 89/150
右:ORB 37/150

図9は、表2のmatching 3D untextured objectカテゴリの例における別のマッチングパフォーマンスの比較を示しています。この例は、局所的な特徴記述子を使った際に挑戦的なタスクになる事が知られている「表面にテクスチャがない物体の遠近を大きく変化させる事」が含まれます。そのため、マッチングのパフォーマンスを向上させるための2つの異なる視点(図8を参照)を使いました。同様に、同じキーポイント位置とRANSAC設定を使用して、ORBは合計150フレーム中の37フレーム、KNIFTが合計150フレームのうち89フレームに一致した事を示しています。

MediaPipeにKNIFTを使ったテンプレートマッチングを実装
MediaPipeにKNIFTに基づいたテンプレートマッチングの実装をリリースします。これは、事前定義された画像テンプレートを認識し、カメラ画像で正確に特定することができます。テンプレートマッチングMediaPipeには、以下の3つの主要なコンポーネントがあります。

(1)FeatureDetectorCalculator
画像フレームを取り込み、入力画像に対してOpenCV oFast検出器を実行し、キーポイントの場所を出力する計算機です。更に、この計算機は、各キーポイントの周辺画像を切り抜いて、後続の計算機が処理出KNIFT tfliteモデルを読み込み、モデルの推論を実行する計算機。来るようにそれらをベクトルにスタックする役割も果たします。

(2)KNIFTモデルを使用したTfLiteInferenceCalculator
KNIFT tfliteモデルを読み込み、モデルの推論を実行する計算機です。入力テンソルの形状は(200, 32, 32, 1)で、200個の32×32サイズの画像を入力とします。出力テンソル形状は(200, 40)で200個の40次元特徴記述子を出力します。デフォルトでは、計算機はTFLite XNNPACKデリゲートを実行しますが、ユーザーは通常のCPUデリゲートを選択して、速度を下げて実行することができます。

(3)BoxDetectorCalculator
事前に計算されたキーポイントの位置とKNIFT記述子を入力とし、現在のフレームと複数のテンプレート画像の間で特徴がマッチングするかを計算する計算機です。この計算機の出力は、TimedBoxProto型のリストです。このリストには、各ボックスの一意のIDと位置が画像の四辺形として含まれています。従来のホモグラフィRANSACアルゴリズムの他に、遠近変換検証ステップ(transform verification step)を適用して、出力の四辺形が過度に歪んだり奇妙な形状にならないようにします。


図10:MediaPipeグラフのデモ

デモ
このデモでは、3種類の米ドル紙幣($1, $5, $20)をテンプレートとして選択し、それらをビデオ内のさまざまな現実のドル紙幣との照合を試みました

各入力フレームのサイズを640×480ピクセルに変更し、oFast検出器を実行して200個のキーポイントを検出し、KNIFTを使用して、これらのキーポイントを囲む各32×32の局所的な画像範囲から特徴記述子を抽出しました。

次に、これらのビデオフレームとドル紙幣テンプレートから抽出されたKNIFT特徴との間でテンプレートマッチングを実行しました。このデモは、XNNPACKを搭載したPixel 2 PhoneのCPUで20 FPSで実行されています。


図11:KNIFEを使用して異なる米ドル紙幣を照合

貴方独自のテンプレートを作成する
デモでは、組み込みの平面テンプレートのセットを提供しています。ユーザーが自分のテンプレートを簡単に試すことができるように、ユーザーが生成したテンプレートを使用して同様なインデックスを作成するツールも提供しています。

index_building.pbtxtは、テンプレート画像のセットを含むディレクトリパスを入力として受け入れるMediaPipeグラフです。ユーザーはこのグラフを使用して、以下のように全てのテンプレート画像(単一のファイルに格納されます)のKNIFT記述子を計算できます。

1)メイングラフとBUILDファイルのindex_proto_filenameフィールドを置き換えます。
2)APKファイルを再構築します。

上記のドル紙幣のデモを作成する手順については、google.github.ioを参照してください。

謝辞
このブログ投稿に貢献してくださったJiuqiang Tang, Chuo-Ling Chang, Dan Gnanapragasam‎, Howard Zhou, Jianing Wei および Ming Guang Yongに感謝します。

3.MediaPipe KNIFT:テンプレートベースの画像検索を改善(3/3)関連リンク

1)developers.googleblog.com
MediaPipe KNIFT: Template-based feature matching

2)drive.google.com
Model Card Content: MediaPipe KNIFT(PDF)

3)google.github.io
MediaPipe KNIFT

コメント

タイトルとURLをコピーしました