源码链接:https://github.com/smallcorgi/Faster-RCNN_TF
1、首先检查电脑上已经安装anaconda
2、打开Anaconda Prompt使用下面命令,切换到项目文件目录下
cd D:/xxxxx/xxx/.....
3、在此文件目录下,运行
pip install -r requirements.txt
4、再使用cd命令跳转到/data/coco/PythonAPI文件目录下
cd /data/coco/PythonAPI
5、运行
python setup.py build_ext --inplace
python setup.py build_ext install
6、再cd跳转到/lib/utils文件目录下,运行
cd /lib/utils
python setup.py build_ext --inplace
1、数据集获取代码并自行标注:并使用labelImg进行标注https://download.csdn.net/download/feng_1_ying/12236599
2、将数据转换成VOC格式,先在图像数据集文件加下创建命名为Main的文件例如:imagesets/Main,然后运行以下程序生成test.txt train.txt trainval.txt val.txt,打开Main文件可以查看是否生成这四个文件。
https://download.csdn.net/download/feng_1_ying/12236607
结果如图所示
3、把自己的xml文件放置在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/Annotations路径下
4、把jpg文件放在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/JPEGImages路径下
5、将第二步生成的四个TXT文件放在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/ImageSets/Layout 和 Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/ImageSets/Main路径下
1、下载权重数据:http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
2、在data目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,然后放到imagenet_weights文件夹中。
3、在Faster-RCNN-TensorFlow-Python3-master\lib\datasets\pascal_voc.py里面修改自己的标注的类别,其中
self._classes = ('__background__', # always index 0
'aeroplane', 'bicycle', 'bird', 'boat',
'bottle', 'bus', 'car', 'cat', 'chair',
'cow', 'diningtable', 'dog', 'horse',
'motorbike', 'person', 'pottedplant',
'sheep', 'sofa', 'train', 'tvmonitor')
修改成自己标注的类别
self._classes = ('__background__', # always index 0
'chinese')
4、在Faster-RCNN-TensorFlow-Python3-master\lib\config\config.py里可以修改最大迭代次数(max_iters)。可以将40000改成自己所需要的。
tf.app.flags.DEFINE_integer('max_iters', 40000, "Max iteration")
5、如果把最大迭代次数max_iters改小了,就要相应的改小snapshot_iterations,否则如果max_iters小于snapshot_iterations,会没有结果输出
tf.app.flags.DEFINE_integer('snapshot_iterations', 5000, "Iteration to take snapshot")
6、如果图像训练集不是JPG格式的需要修改lib\datasets\pascal_voc.py中
将self._image_ext = '.jpg'修改为自己图片的格式.例如:
修改为:
7、运行train.py
训练结果被保存到了Faster-RCNN-TensorFlow-Python3-master\default\voc_2007_trainval\default
在demo.py中
1. 修改类别,跟pascal_voc.py里的类别一致
CLASSES = ('__background__',
'person')
2. 测试数据集改成自己的数据,并替换Faster-RCNN-TensorFlow-Python3-master\data\demo中的图像文件,图像文件的名字与修改后的文件名要一致
im_names = ['000001.jpg', '000002.jpg', '000003.jpg', '000004.jpg',
'000005.jpg']
3、将
NETS = {'vgg16': ('vgg16_faster_rcnn_iter_70000.ckpt',), 'res101': ('res101_faster_rcnn_iter_110000.ckpt',)}
DATASETS = {'pascal_voc': ('voc_2007_trainval',), 'pascal_voc_0712': ('voc_2007_trainval+voc_2012_trainval',)}
修改成为
NETS = {'vgg16': ('vgg16.ckpt',), 'res101': ('res101_faster_rcnn_iter_110000.ckpt',)}
DATASETS = {'pascal_voc': ('voc_2007_trainval',), 'pascal_voc_0712': ('voc_2007_trainval',)}
4、 新建Faster-RCNN-TensorFlow-Python3-master\output\vgg16\voc_2007_trainval\default目录,将Faster-RCNN-TensorFlow-Python3-master\default\voc_2007_trainval\default下的这四个文件复制到output\vgg16\voc_2007_trainval\default中
然后将这四个文件的文件名改为
5.、将demo.py中104行代码中的default='res101'改为default='vgg16'
6、运行demo.py
1、在demo.py的import下面添加这些代码,引入新的库
from lib.utils.timer import Timer
# 计算mAP的值
from lib.utils.test import test_net
from lib.datasets.factory import get_imdb
2.、在demo.py的最后添加以下代码
print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
print('Demo for data/demo/{}'.format(im_name))
demo(sess, net, im_name)
imdb = get_imdb("voc_2007_trainval")
test_net(sess, net, imdb, 'default')
plt.show()
3、 打开pascal_voc.py 修改下面的函数中的filename
def _get_voc_results_file_template(self):
# VOCdevkit/results/VOC2007/Main/_det_test_aeroplane.txt
# filename = self._get_comp_id() + '_det_' + self._image_set + '_{:s}.txt'
filename = self._image_set + '_{:s}'
path = os.path.join(
self._devkit_path,
'results',
'VOC' + self._year,
'Main',
filename)
return path
4.、新建\data\VOCDevkit2007\results\VOC2007\Main目录
5、运行demo.py,则可显示mAP