Tensorflow实现Faster RCNN

  今天一天将tensorflow下的faster rcnn实现了,运行demo.py并得到成果,从安装到运行。所以记录一下,我用的GPU工作站,GTX1080ti,内存11G。基础的CUDA配置这里就不详述了。由于是实验室的GPU,所以,在自己的目录下用Anaconda2创建自己的环境,其中Anaconda的配置详见上一篇文档。 

其中tensorflow-gpu的版本1.3.0

  其中github的代码:

   https://github.com/CharlesShang/TFFRCNN

  由于运行时会出现一些错误,这是由于Anaconda中并没有完全支持的一些库,需要安装tensorflow-gpu,会提示需要的依赖库,输入y,继续进行,将所有的依赖库都安装。这里给出我运行的

缺少python-opencv:

conda install -c https://conda.binstar.org/menpo opencv 

缺少easydict:

conda install -c https://conda.binstar.org/auto easydict

这是不能通过conda install直接安装的,所以需要这样进行安装。

然后,下载训练好的模型,模型在github中,如下图所示

Tensorflow实现Faster RCNN_第1张图片

这里我下载了VGGnet_fast_rcnn_iter_100000,然后在TFFRCNN文件目录下新建model,存放下载下来的模型文件。

然后进行编译的环节,cd lib/  然后修改make.sh,如果是 binary版本的 TensorFlow,需要关闭 D_GLIBCXX_USE_CXX11_ABI:0


如果还出现错误,提示psroi_pooling_op.cu的错误,这个就我出现了,所以,将修改成如下:

注释原来的代码,将下面的注释取消,如下

Tensorflow实现Faster RCNN_第2张图片

然后

cd ./lib  
make 

最后, 将 faster_rcnn/ 文件夹下的 demo.py copy到根目录下,执行如下命令:

cd ..  
python demo.py --model model/VGGnet_fast_rcnn_iter_100000.ckpt

由于是在工作站,没有图形界面的显示,我们需要修改demo.py


添加这么一行,用于没有图形GUI的情况下,

然后,修改最后,将图片保存,这样将替换原来的图片,

Tensorflow实现Faster RCNN_第3张图片

运行成功后,我们从工作站下载完成的图片。

效果如下:

Tensorflow实现Faster RCNN_第4张图片

训练数据Pascal VOC 2007

下载训练,验证,测试数据:

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 文件夹中。

解压后VOCdevkit 的文件格式如下:

Tensorflow实现Faster RCNN_第5张图片

$VOCdevkit/                           # development kit
$VOCdevkit/VOCcode/                   # VOC utility code
$VOCdevkit/VOC2007                    # image sets, annotations, etc.
# ... and several other directories ...
下载 VGG16的预训练集,并放到这个文件夹中:

./data/pretrain_model/VGG_imagenet.npy

然后运行脚本:

cd $TFFRCNN
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


但是这时你会遇到一个错误:

AttributeError: 'NoneType' object has no attribute 'model_checkpoint_path'

解决:这是由于认为你继续训练了,所以你需要在添加一个flag --restore 0 

python ./faster_rcnn/train_net.py --gpu 0 --restore 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


然后,你会遇到另一个错误:

assert len(im_scales) == 1, "Single batch only"
AssertionError: Single batch only

解决:change the batch number to 1 in lib/fast_rcnn/configuration









你可能感兴趣的:(Tensorflow实现Faster RCNN)