ChainerのSSDのデモで物体検出をしてみる

ChainerCVにSSD300/SSD512のデモがあります。それを使って画像から物体検出をしてみました。

目次

  1. ChainerCVのSSDのデモンストレーション
  2. 準備
  3. 動かしてみる

ChainerCVのSSDのデモンストレーション

ChainerCV は、PFNのディープラーニングフレームワークであるChainerの画像関連のライブラリです。画像を扱うディープラーニングがいろいろ便利にできるということなのですが、実際のデモンストレーションとしてSSDのデモファイルがあります。

SSDというのは、画像から物体を検出して識別するディープラーニングのネットワークモデルの一つです。

GitHubに公開されているデモを実際に動かしてみました。

環境は、Windows10 64bit、Python 3.7、Chainer 6.1、ChainerCV 0.13、CUDA 10.1です。なお今回は学習は行わず推論だけですので、GPUが無くてもそれなりに動作します。

準備

GitHubから デモファイルをダウンロードします。GitHubのアカウントがある人ならGitHubのsvn機能でサブディレクトリをダウンロードできるらしいのですが、今回はファイルを1つずつダウンロードしました。ファイルの数が多くないですからね。

自動的に学習済みモデルをダウンロードしてくれる機能があるのですが、いちおう手動でデータをダウンロードしておきます。デモの説明の下の方に、学習済みモデルへのリンクがあります。ダウンロードしたファイルは demo.py と同じフォルダに置きます。

物体検出をする画像を入手しておきます。

動かしてみる

demo.py を保存したフォルダでコマンドプロンプトを開きます。

引数無しで demo.py を実行すると、コマンドライン引数の説明が表示されます。

>python demo.py
usage: demo.py [-h] [--model {ssd300,ssd512}] [--gpu GPU]
               [--pretrained-model PRETRAINED_MODEL] [--dataset {voc}]
               image
demo.py: error: the following arguments are required: image
model 使用するモデルをSSD300にするかSSD512にするか選択します。
gpu GPUを使用する場合はGPUのID(たいていは0)を、CPUで実行する場合は-1を指定します。
pretrained-model 学習済みデータのファイルを指定します。指定しないとネットからダウンロードします。
image 識別される画像ファイルです。

識別に使う画像はこれです。test.jpgというファイル名です。

元画像

SSD300で識別してみます。

>python demo.py --mode ssd300 --gpu 0 --pretrained-model ssd300_voc0712_trained_2017_08_08.npz test.jpg

GPUを使わない場合はこうします。

>python demo.py --mode ssd300 --gpu -1 --pretrained-model ssd300_voc0712_trained_2017_08_08.npz test.jpg
SSD300

次にSSD512で識別してみます。

>python demo.py --mode ssd512 --gpu 0 --pretrained-model ssd512_voc0712_trained_2017_08_08.npz test.jpg
SSD512

SSD512の方が小さい物体を検出してますね。

広告

Chainerカテゴリの投稿