本記事では、機械学習手法GLIPを用いてテキスト入力に基づいた物体検出を行う方法をご紹介します。
以下で紹介しているソースコードは2023年7月時点のGoogle Colaboratory環境では動作しません。
ご参考までに参照下さい。
出典: GLIPv2: Unifying Localization and Vision-Language Understanding |
GLIP
概要
GLIPv2は、物体検出やインスタンスセグメンテーションなどのローカライゼーションタスク(localization
task)とVisula Question Answering(VQA)や画像キャプションなどのVision-Language
understanding taskの両方に対応するマルチタスクな機械学習手法です。
GLIPv2はObject Detection, Instance Segmentation, VL Grounding, VQA, Image Captionを事前トレーニングなどを用いて効率的な統合を実現しています。
この相互学習により、それぞれのタスクが相互に予測精度を向上させローカライゼーションタスクと、VL
understandingタスクにおいてSOTAを達成しています。
|
詳細はこちらの論文をご参照ください。
本記事では上記手法を用いて、入力したテキストに応じた物体検出を行っていきます。
デモ(Colaboratory)
それでは、実際に動かしながら入力テキストに応じた物体検出を行っていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo
また、下記から直接Google Colaboratoryで開くこともできます。
また、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。
おすすめの書籍
[初心者向け] Pythonで機械学習を始めるまでに読んだおすすめ書籍一覧
本記事では、現役機械学習エンジニアとして働く筆者が実際に読んだ書籍の中でおすすめの書籍をレベル別に紹介しています。
おすすめのオンライン講座
[初心者向け] 機械学習がゼロから分かるおすすめオンライン講座
本記事では、機械学習エンジニアとして働く筆者が、AI・機械学習をまったく知らない方でも取り組みやすいおすすめのオンライン講座をご紹介しています。
環境セットアップ
それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。
初めにGithubからソースコードを取得します。
次にライブラリをインストールします。
最後にライブラリをインポートします。
以上で環境セットアップは完了です。
学習済みモデルのセットアップ
続いて学習済みモデルをダウンロードします。
あわせて、画像の入出力系のユーティリティ関数を定義しておきます。
モデルのロード
続いて、モデルを定義し、先ほどダウンロードした重みをロードします。
物体検出
それでは、物体検出を行っていきます。
まず、検出に用いる画像と検出のキーとなるテキストを入力します。
今回はこちらの画像を使用させていただきます。
最後に物体検出を実行します。
検出結果は以下の通りです。
入力したテキストに応じて黄色のフルーツが検出されています。
続いて、Fruit that a woman has in her right
handを入力した結果は以下の通りです。
テキストの意味を理解しフルーツの中から右手のフルーツのみが検出されています。また右手、女性も検出されています。
まとめ
本記事では、GLIPを用いて任意のテキストに応じた物体検出をご紹介しました。
複数のタスクが統合され、固定のクラスによる物体検出と比べ、汎用性が向上しています。
また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。
また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。
参考文献
1. 論文 - GLIPv2: Unifying Localization and Vision-Language Understanding
hi why I have this error "module 'torch' has no attribute '_six'"
返信削除This is because GLIP will not work unless it is an old environment. (cuda 10.2, pytorch 1.9, python 3.8)
削除Various measures such as changing the Python version and cuda version were implemented, but it did not work with the current Google Colab.
The following does not work, but describes how to change it.
https://github.com/kaz12tech/ai_demos/blob/main/%5BDeprecated%5DGLIP_demo.ipynb