標籤:

淺入淺出TensorFlow 7 - 行人檢測之Faster-RCNN

淺入淺出TensorFlow 7 - 行人檢測之Faster-RCNN

來自專欄 淺入淺出TensorFlow

一. 環境準備

本文通過 TensorFlow 實現基於 Faster-RCNN 的行人檢測,網路模型基於 VGG16 or ResNet。

1. 準備 TensorFlow 環境

Tensorflow (>= 1.0.0)

安裝對應 python 庫:

sudo apt-get install cython python-opencv python-tk python-scipy python-yaml sudo pip install easydict sudo pip install matplotlib sudo python -m pip install Pillow

2. Gtihub 代碼

代碼下載:【Github】

3. 下載訓練好的網路

在 TFFRCNN-master 下新建文件夾 model,存放要下載入的 net(參考 Github 下載地址),推薦下載:

2.VGG16 - TFFRCNN (0.689 mAP on VOC07)

3.VGG16 - TFFRCNN (0.748 mAP on VOC07)

5.Resnet50 - TFFRCNN (0.712 mAP on VOC07)

二. 編譯運行

編譯代碼,並利用訓練好的模型運行測試樣例。

模型是基於 VGG16 在 PASCAL VOC 2007 上的訓練結果做的檢測。

1. 編譯

打開 lib文件夾下的 make.sh,根據提示修改,如果是 binary版本的 TensorFlow,需要關閉 D_GLIBCXX_USE_CXX11_ABI:

## if you install tf using already-built binary, or gcc version 4.x, uncomment the two lines below g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o roi_pooling.so roi_pooling_op.cc roi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64 # for gcc5-built tf #g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=1 -o roi_pooling.so roi_pooling_op.cc # roi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64 cd .. # add building psroi_pooling layer cd psroi_pooling_layer nvcc -std=c++11 -c -o psroi_pooling_op.cu.o psroi_pooling_op_gpu.cu.cc -I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -arch=sm_52 #g++ -std=c++11 -shared -o psroi_pooling.so psroi_pooling_op.cc # psroi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64 ## if you install tf using already-built binary, or gcc version 4.x, uncomment the two lines below g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o psroi_pooling.so psroi_pooling_op.cc psroi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64

執行命令行 make:

cd ./lib make # compile cython and roi_pooling_op, you may need to modify make.sh for your platform

2. 運行

將 faster_rcnn/ 文件夾下的 demo.py copy到根目錄下,執行如下命令:

cd .. python demo.py --model model/VGGnet_fast_rcnn_iter_150000.ckpt # your model path

看一下測試效果(0.748 的 mAP,遠端檢測效果還是很不錯的):

三. 訓練公網數據

需要下載 PASCAL VOC 數據集,訓練過程也比較簡單(也可以參考 Github 對應的說明流程):

1. 下載數據集

下載 VOC 數據集,用於下一步數據訓練:

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tarwget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar

新建 VOCdevkit 文件夾,並將下載的 tar 文件放到文件夾內,並解壓縮:

tar xvf VOCtrainval_06-Nov-2007.tar tar xvf VOCtest_06-Nov-2007.tar tar xvf VOCdevkit_08-Jun-2007.tar

將數據格式按照下面的格式存放:

$VOCdevkit/ # development kit $VOCdevkit/VOCcode/ # VOC utility code $VOCdevkit/VOC2007 # image sets, annotations, etc. # ... and several other directories ...

2. 下載 VGG16 的預訓練數據

下載地址:【VGG16 Pretrained】

放到指定文件夾下:./data/pretrain_model/VGG_imagenet.npy

3. 訓練

運行如下腳本:

python ./faster_rcnn/train_net.py --gpu 0 --weights ./data/pretrain_model/VGG_imagenet.npy --imdb voc_2007_trainval --iters 70000 --cfg ./experiments/cfgs/faster_rcnn_end2end.yml --network VGGnet_train --set EXP_DIR exp_dir

4. 查看結果

# install a visualization tool sudo apt-get install graphviz ./experiments/profiling/run_profiling.sh # generate an image ./experiments/profiling/profile.png

推薦閱讀:

TensorFlow會話的配置項
VGG論文導讀+Tensorflow實現+參數微調(fine-tuning)+AWS部署從頭訓練
TensorFlow Estimator of Deep CTR --DeepFM/NFM/AFM/FNN/PNN
tensorflow實現分段優化

TAG:TensorFlow |