淺入淺出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 |