自動アノテーションの試み2:類似画像検索とOzeuの組み合わせ

1 min read読了の目安(約1600字

自動アノテーションの試み2:類似画像検索とOzeuの組み合わせ

私が公開したozeuを使えば、自分で撮影した動画に自動アノテーションをして、
Instance Segmentationのデータセットを構築できます。
今回は、更にデータセットのバリエーションを増やすため、
Web上のデータを収集し、Ozeuを使った自動ラベル付けする方法を説明します。データの収集にはBing Visual Searchを使いました。

これ本質的には何をしているの?

U^2 Netは”目立つ物体”を画像から抽出してくれる機械学習モデルで、
Bing Visual Searchは、おそらくですが、特徴量抽出された特徴ベクトルで近傍探索なのですが、まぁ、データベースです。
このデータベースから、ラベル付けしたい物体が”目立っている”画像を入力して、類似した”ラベル付けしたい物体が目立っている”画像を大量に取得する。
そこにU^2 Netを適用することで、ラベル付けしたい物体をラベルづけできるという感じです。

構図も含めて類似した画像を検索できているから、この方法は成り立つわけで、
類似画像検索の特徴量抽出器によってはうまくいかない気がします。

これって、機械学習モデルやデータベースが整備される例として面白いと個人的には思っています。あと、個人的にはデータベースを徹底的に整備した結果できたりんなちゃんというAIボットは面白いと思っています。

Bing Visual Search APIでデータセットを集める方法

Bing Image Search APIのSubscription Keyを取得します。取得方法は、調べたら出てきます。
現時点、1ヶ月1000クエリまでは無料で使えます。

次に、自分がラベリングしたい物体が目立っている画像をBing画像検索などで探して、それをクエリ画像とします。

ozeuにスクリプトが用意されているので、
次のようなコマンドでクエリ画像に似た画像を検索できます。
インストール方法はここ

cd ozeu
python scripts/get_similar_images_from_azure.py ${QUERY_IMAGE_PATH} --output-dir ${OUTPUT_DIR} --subscription-key ${SUBSCRIPTION_KEY}

Ozeuのデータセット定義ファイルに追記

次にデータセット定義ファイルにフォルダとカテゴリ名を追記します。

例えば、この例の定義ファイルが存在するとして、今回、ipadの画像を収集したのであれば、

- category_id: 2
  video_path: ${IMAGE_DIR}

と追記すればいいです。

その後、データセット生成コマンドを実行すると、
COCOデータセットができます。

作ったデータセットの例