Pythonで画像認識してみたいです。
このような要望にお応えします。
今回は、M2Detの学習済みモデルを用いて物体検知をします。
下記のサイトを参考にさせていただきました。
- https://github.com/qijiezhao/M2Det
- https://qijiezhao.github.io/imgs/m2det.pdf
- https://qiita.com/nabechi6011/items/2b0b44894b93b702215b
M2Detについて
M2Detは、入力画像から物体の位置と種類を検出することができます。
M2Detの手法等の情報は、下記の論文を参照ください。
M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network
- https://qijiezhao.github.io/imgs/m2det.pdf
Google Colaboratoryの準備
・Googleのアカウントを作成します。
・Googleドライブにアクセスし、「新規」→「その他」から「Google Colaboratory」の順でクリックします。そうすると、Colaboratoryが起動します。
・Colaboratoryが起動したら、以下のコマンドをCoalboratoryのセルに入力し実行します。
そうすることで、Googleドライブをマウントします。
1 2 |
from google.colab import drive drive.mount('/content/drive') |
・実行後、認証コードの入力が促されます。このとき、「Go to this URL in a browser」が指しているURLにアクセスしgoogleアカウントを選択すると、認証コードが表示されますので、それをコピーしenterを押します。これでGoogleドライブのマウントが完了します。
M2Detの準備
M2Detの導入方法についてのより詳細な情報は、下記を参照ください。
- https://github.com/qijiezhao/M2Det
Google Colaboratoryの「ランタイム」→「ランタイムのタイプ変更」でGPUを選択します。
ツールをダウンロードする場所に移動します。本記事では、マイドライブにダウンロードします。
1 |
cd /content/drive/My Drive |
gitからツールをダウンロードします。
1 |
!git clone https://github.com/qijiezhao/M2Det |
ダウンロードしたフォルダに移動します。
1 |
cd M2Det |
コンパイル/ビルドを実行します。
1 |
!sh make.sh |
学習済みモデルを保存するフォルダを作成します。
1 |
!mkdir weights |
こちらから(https://drive.google.com/file/d/1NM1UDdZnwHwiNDxhcP-nndaWj24m-90L/view)
[m2det512_vgg.pth]をダウンロードし、weightsフォルダに置きます。
addictライブラリをインストールします。
1 |
!pip install addict |
これで準備完了です。画像を用いて、物体検知を実施します。
下記を実行することで、imgsフォルダに格納された画像を読み込み、物体検知の結果が同一フォルダに保存されます。
1 |
!python demo.py -c=configs/m2det512_vgg.py -m=weights/m2det512_vgg.pth --show |
出力結果
出力結果は、以下になります。














どうでしょうか?様々な要素が混じる複雑な画像に対して実施してみるのもいいかもしれません。