ChainerのSSDのデモで物体検出をしてみる
ChainerCVにSSD300/SSD512のデモがあります。それを使って画像から物体検出をしてみました。
目次
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
次にSSD512で識別してみます。
>python demo.py --mode ssd512 --gpu 0 --pretrained-model ssd512_voc0712_trained_2017_08_08.npz test.jpg
SSD512の方が小さい物体を検出してますね。
公開日
広告
Chainerカテゴリの投稿
- ChainerCVで使える画像のデータ拡張
- ChainerCVで画像を出力する方法
- ChainerCVのResNetを使う
- ChainerCVのSSDに学習させてみた
- ChainerCVのデモンストレーションプログラムを読んでみた
- ChainerCVのデモンストレーションプログラムを読んでみた(推論編)
- Chainerが出力するネットワーク構造図をGraphvizで見る
- Chainerで数字を分類してみた
- ChainerのSSDのデモで物体検出をしてみる
- Chainerのチュートリアルを試してみた
- Chainerのチュートリアルを試してみた(ChainerCVでデータ拡張編)
- Chainerのチュートリアルを試してみた(データ拡張編)
- Chainerのチュートリアルを試してみた(トレーナー編)
- Chainerのチュートリアルを試してみた(畳み込みを深くする編)
- Chainerのチュートリアルを試してみた(畳み込み編)
- Chainerのデータセットの作り方(ラベル付き画像編)
- VoTTのPascal VOC出力をChainerCVのデータセットとして読み込んでみた