Faster RCNN - Tensorflow实现——CPU版

参考:
CPU坑:https://blog.csdn.net/sinat_33486980/article/details/81045315
1.Environment
scipy:1.2.1
tensorflow:1.12.0
cython:0.29.6
opencv-python:4.0.0.21
easydict:1.9
2.下载github项目代码和数据

git clone https://github.com/endernewton/tf-faster-rcnn.git

3.修改配置
代码是GPU的,make时会报错

python setup.py build_ext --inplace
Traceback (most recent call last):
File "setup.py", line 58, in <module>
CUDA = locate_cuda()
File "setup.py", line 46, in locate_cuda
raise EnvironmentError('The nvcc binary could not be '
EnvironmentError: The nvcc binary could not be located in your $PATH. Either add it to your path, or set $CUDAHOME

解决办法:
1)修改./lib/model/config.py
将USE_GPU_NMS 由原来的True改为False
在这里插入图片描述
2)修改lib/model/nms_wrapper.py
注释代码,进制GPU模式
在这里插入图片描述
3)修改lib/setup.py
尖头部分一行行注释掉
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.链接cython模块
在lib目录下打开终端,输入

make clean
make
cd ..

此时终端回到主目录tf-faster-rcnn
5.安装 Python COCO API,这是为了使用COCO数据库

cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..

此时终端的目录是主目录tf-faster-rcnn
6.数据下载:Beyond the demo: installation for training and testing models
1)下载训练,验证和测试数据集VOCdevkit

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

2)数据集解压 named VOCdevkit

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 ...

3)建立数据集PASCAL VOC软连接

cd $FRCN_ROOT/data
ln -s $VOCdevkit VOCdevkit2007

其中 $FRCN_ROOT/data 应该是存放数据集VOCdevkit的路径(eg:/tf-faster-rcnn/data/)
4)MS COCO官网数据集(百度云)下载,COCO API、MASK API和Annotation format介绍(来自官网)

https://blog.csdn.net/u014734886/article/details/78830713
wget http://images.cocodataset.org/zips/train2014.zip
wget http://images.cocodataset.org/zips/val2014.zip
wget http://images.cocodataset.org/zips/test2014.zip
wget http://images.cocodataset.org/annotations/annotations_trainval2014.zip
wget http://images.cocodataset.org/annotations/image_info_test2014.zip

7.运行Demo 和测试预训练模型
1)下载预训练好的模型 voc_0712_80k-110k.tgz
(百度云:https://pan.baidu.com/s/1kWkF3fT),放到 data文件夹中。使用命令解压得到voc_2007_trainval+voc_2012_trainval文件夹

tar xvf voc_0712_80k-110k.tgz

2)建立预训练模型的软连接

NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../voc_2007_trainval+voc_2012_trainval ./default
cd ../../..

3)CPU下直接运行demo

./tools/demo.py

8.训练自己的模型
1)下载预训练模型和权重

for VGG16 :
mkdir -p data/imagenet_weights
cd data/imagenet_weights
wget -v http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
tar -xzvf vgg_16_2016_08_28.tar.gz
mv vgg_16.ckpt vgg16.ckpt
cd ../..

for Resnet101 :

mkdir -p data/imagenet_weights
cd data/imagenet_weights
wget -v http://download.tensorflow.org/models/resnet_v1_101_2016_08_28.tar.gz
tar -xzvf resnet_v1_101_2016_08_28.tar.gz
mv resnet_v1_101.ckpt res101.ckpt
cd ../..

2)训练(验证、测试)
由于是在CPU下运行,需要更改/experiments/scripts/train_faster_rcnn.sh

# GPU_ID=$1    #注释掉GPU的使用
DATASET=$1     #更改数字2->1
NET=$2         #更改数字3->2

CPU运行如下:

./experiments/scripts/train_faster_rcnn.sh [DATASET] [NET]
# NET in {vgg16, res50, res101, res152} is the network arch to use
# DATASET {pascal_voc, pascal_voc_0712, coco} is defined in train_faster_rcnn.sh
# Examples:
./experiments/scripts/train_faster_rcnn.sh pascal_voc vgg16
./experiments/scripts/train_faster_rcnn.sh coco res101
./experiments/scripts/test_faster_rcnn.sh pascal_voc vgg16
# 工程内容 这个程序是基于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阈值一样,有待调参。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值