Posted at

SSD(Single Shot MultiBox Detector)を試す

More than 1 year has passed since last update.


SSDのCaffe実装が公開されていたので試してみた

基本はREADME.mdに書いてある通りに進める

いくつか追加で行った事があるのでメモ

Ubuntu 14.04 x86_64 LTSで確認

(ハードウェアはIntel Core i7-6700K, Memory 16GB, 1x NVIDIA Geforce GTX 980 Ti)

GPU(NVIDIA CUDA)を使う場合の設定については書かないので別の情報を参考にして構築済みであることを想定している


GitHub からリポジトリをクローンしてssdブランチに切り替える

git clone https://github.com/weiliu89/caffe.git

cd caffe
git checkout ssd
CAFFE_ROOT=$(pwd)


Caffeのビルドをしてtestが通るところまで確認する

CPUのみ(GPUなし)の場合は以下の変更をする

Makefile.configの8行目: CPU_ONLY := 1をコメント解除

sudo apt-get -y install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get -y install libatlas-base-dev libopenblas-dev
sudo apt-get -y install python-skimage python-protobuf
sudo apt-get --no-install-recommends libboost-all-dev
cp Makefile.config.example Makefile.config
make all -j8
export PYTHONPATH=${CAFFE_ROOT}/python:${PYTHONPATH}
sudo sh -c "echo 'PYTHONPATH=$PYTHONPATH' > /etc/environment"
make pycaffe -j8
make test -j8
make runtest -j8
make pytest -j8

make runtestでPASSEDと表示されれば問題なし

次のステップに進む


ネットワーク定義ファイルをダウンロードする



  • ここ からネットワーク定義のファイルをダウンロード


  • caffe/models/VGGNetに置く

wget https://gist.githubusercontent.com/weiliu89/2ed6e13bfd5b57cf81d6/raw/758667b33d1d1ff2ac86b244a662744b7bb48e01/VGG_ILSVRC_16_layers_fc_reduced_deploy.prototxt

mkdir ${CAFFE_ROOT}/models/VGGNet
mv VGG_ILSVRC_16_layers_fc_reduced_deploy.prototxt ${CAFFE_ROOT}/models/VGGNet/


訓練・テストデータのダウンロード

訓練をしない場合は必要ないのでウェブカメラのサンプル動かすだけならスキップしてよい

* PASCAL VOC2007/2012のデータセットをダウンロード, 展開する

mkdir ${HOME}/data

cd ${HOME}/data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar


  • LMDBフォーマットのデータセットを作成する

cd ${CAFFE_ROOT}

chmod u+x ./data/VOC0712/create_list.sh ./data/VOC0712/create_data.sh
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh


訓練済モデルのダウンロード

ここ からVOC0712:SSD300の訓練済モデルをダウンロードして展開する

wget http://www.cs.unc.edu/%7Ewliu/projects/SSD/models_VGGNet_VOC0712_SSD_300x300.tar.gz

tar -xzvf models_VGGNet_VOC0712_SSD_300x300.tar.gz
mv models/VGGNet/VOC0712 ${CAFFE_ROOT}/models/VGGNet


サンプルを動かす


  • 訓練する

    examples/ssd/ssd_pascal.pyの285行目付近のgpus = "0,1,2,3"gpus = "0"とする

python examples/ssd/ssd_pascal.py


  • ウェブカメラからの画像をリアルタイムで処理する

    CPUのみの場合は102行目を変更する

solver_mode = P.Solver.GPU

から下記のようにする

solver_mode = P.Solver.CPU

次のように入力してサンプル実行

Escキーで終了する

python examples/ssd/ssd_pascal_webcam.py