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中,如下图所示


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

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


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

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


然后

cd ./lib  
make 

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

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

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


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

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


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

效果如下:


训练数据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 的文件格式如下:


$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









  • 1
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
# 工程内容 这个程序是基于tensorflow的tflearn库实现部分RCNN功能。 # 开发环境 windows10 + python3.5 + tensorflow1.2 + tflearn + cv2 + scikit-learn # 数据集 采用17flowers据集, 官网下载:http://www.robots.ox.ac.uk/~vgg/data/flowers/17/ # 程序说明 1、setup.py---初始化路径 2、config.py---配置 3、tools.py---进度条和显示带框图像工具 4、train_alexnet.py---大数据集预训练Alexnet网络,140个epoch左右,bitch_size为64 5、preprocessing_RCNN.py---图像的处理(选择性搜索、数据存取等) 6、selectivesearch.py---选择性搜索源码 7、fine_tune_RCNN.py---小数据集微调Alexnet 8、RCNN_output.py---训练SVM并测试RCNN(测试的时候测试图片选择第7、16类中没有参与训练的,单朵的花效果好,因为训练用的都是单朵的) # 文件说明 1、train_list.txt---预训练数据,数据在17flowers文件夹中 2、fine_tune_list.txt---微调数据2flowers文件夹中 3、1.png---直接用选择性搜索的区域划分 4、2.png---通过RCNN后的区域划分 # 程序问题 1、由于数据集小的原因,在微调时候并没有像论文一样按一个bitch32个正样本,128个负样本输入,感觉正样本过少; 2、还没有懂最后是怎么给区域打分的,所有非极大值抑制集合canny算子没有进行,待续; 3、对选择的区域是直接进行缩放的; 4、由于数据集合论文采用不一样,但是微调和训练SVM时采用的IOU阈值一样,有待调参。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值