参考:
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