浅入浅出TensorFlow 7 - 行人检测之Faster-RCNN

一. 环境准备 

       本文通过 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,远端检测效果还是很不错的):

浅入浅出TensorFlow 7 - 行人检测之Faster-RCNN_第1张图片


三. 训练公网数据

       需要下载 PASCAL VOC 数据集,训练过程也比较简单(也可以参考 Github 对应的说明流程):

1. 下载数据集

    下载 VOC 数据集,用于下一步数据训练:

   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
   wget 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)