ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

M2DetをGoogle Colaboratoryで動かしてみた

f:id:twx:20190427142047j:plain
最強の物体検出器M2Detを動かしてみた

M2Detとは

2019年4月現在、最強の物体検出器と呼ばれているモデルです。2017〜2018年頃にSOTAだったYOLOやSSDを引き離し高い精度を叩き出しています。 多段階特徴ピラミッドネットワーク(MLFPN)と呼ばれる方法を提案し、異なるスケールの物体を検出するためのより効果的な仕組みを取り入れています。

元論文はこちらです。 arxiv.org

ソースコードや学習済モデルも公開されているので、今回はこれをGoogle Colaboratory上で動かして遊んでみます。

github.com

動かしてみた

今回、私がやった手順は以下で公開しています。

colab.research.google.com

まず、M2Detをインストールします。

!pip install torch torchvision
!pip install opencv-python tqdm addict
!git clone https://github.com/qijiezhao/M2Det.git
%cd M2Det/
!sh make.sh

次に、学習済みモデルをダウンロードします。Google Driveからサイズの大きいファイルをダウンロードするには、すこし工夫が必要です。詳しくは以下の記事をご覧ください。

www.mahirokazuko.com

モデルがダウンロードできたら、Mw2Detを動かしてみます。

!python demo.py -c=configs/m2det512_vgg.py -m=m2det512_vgg.pth

結果を表示します。まずは、デフォルトで用意されているトラックの画像を表示してみます。

import cv2
import matplotlib.pyplot as plt
plt.figure(figsize=(5,5),dpi=200)
img=cv2.imread('imgs/ss2_m2det.jpg')
show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(show_img)

f:id:twx:20190427143556p:plain
実行結果:トラック

車が全て検出できておらず「ん?」って感じはしますが、まぁ、とりあえず動かすことには成功しました。精度については、大規模なデータで再学習して向上させるなど、もうひと工夫必要そうです。

手持ちの画像でもやってみた

次に、手持ちの画像でも試してみました。試したのは以下の画像です。

f:id:twx:20190427143940j:plain
フルーツ
f:id:twx:20190427143949j:plain
アヒル

それぞれ、以下のサイトから入手しました。

フルーツ:https://food.foto.ne.jp/

アヒル:https://pixabay.com/

画像が格納されている自身のGoogle DriveをColaboratoryにマウントし、カレントディレクトリに画像をコピーします。そして、M2Detを再度実行します。

from google.colab import drive
drive.mount('/content/drive')
!cp /content/drive/My\ Drive/work/M2Det/*.jpg ./imgs
!python demo.py -c=configs/m2det512_vgg.py -m=m2det512_vgg.pth

表示してみましょう。

plt.figure(figsize=(5,5),dpi=200)
img=cv2.imread('imgs/fruits_m2det.jpg')
show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(show_img)

f:id:twx:20190427144432p:plain
実行結果:フルーツ

plt.figure(figsize=(5,5),dpi=200)
img=cv2.imread('imgs/goose_m2det.jpg')
show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(show_img)

f:id:twx:20190427144515p:plain
実行結果:アヒル

まぁまぁの出来ですね。やはり、精度面で、まだまだ完璧とは言えないので再学習したいところです。

以上、今回はM2Detを動かしてみました。使うだけなら簡単なので皆さんもやってみては?

良い記事だと思っていただいた方は、SNSでのシェア、ブログからのリンク、「読者になる」ボタンのクリック、「★」ボタンのクリック、よろしくお願いします! ではまた次の記事でお会いしましょう!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu