先参考这篇装一下大概环境:https://blog.csdn.net/wwtor/article/details/80603296
然后打开Anaconda Prompt或cmd安装python包(cython、python-opencv、easydict)
先cd到文件目录,然后运行`pip install -r requirements.txt` ,如图
然后cd到/data/coco/PythonAPI ,运行 `python setup.py build_ext --inplace` ,运行`python setup.py build_ext install`
再cd到/lib/utils运行 `python setup.py build_ext --inplace`
1. 将自己的数据转换为VOC格式,看这篇:https://blog.csdn.net/a417197457/article/details/80701944
2. 把自己的xml文件放置在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/Annotations路径下,记得把原来的删掉
把jpg文件放在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/JPEGImages路径下
把生成的四个txt文档放在Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/ImageSets/Layout 和 Faster-RCNN-TensorFlow-Python3-master/data/VOCdevkit2007/VOC2007/ImageSets/Main路径下
1. 网盘:https://pan.baidu.com/share/init?surl=aD0jlYGHhZQeeTvNJy0GGQ 密码:45ef 下载权重数据
2. 在data目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,然后放到imagenet_weights文件夹中。
3. 在Faster-RCNN-TensorFlow-Python3-master\lib\datasets\pascal_voc.py里面修改自己的标注的类别,其中
'__background__'(背景)不能删除,其他的可以根据自己的类别添加或删除。
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
'person')
这里是演示,就只弄了1类,可以根据自己的数据做调整。
4. 在Faster-RCNN-TensorFlow-Python3-master\lib\config\config.py里可以修改参数。这里因为只是演示,所以我把最大迭代次数max_iters从40000修改为200
tf.app.flags.DEFINE_integer('max_iters', 200, "Max iteration") # 最大迭代次数
把snapshot_iterations(每迭代多少次,输出一次结果)从5000修改为50。(这里如果把最大迭代次数max_iters改小了,就要相应的改小snapshot_iterations,否则如果max_iters小于snapshot_iterations,会没有结果输出)
tf.app.flags.DEFINE_integer('snapshot_iterations', 50, "Iteration to take snapshot") # 每迭代多少次,输出一次结果
5. 运行train.py
结果如下,训练结果被保存到了Faster-RCNN-TensorFlow-Python3-master\default\voc_2007_trainval\default
注:如果要再次进行训练,需要把Faster-RCNN-TensorFlow-Python3-master\default\voc_2007_trainval\default和Faster-RCNN-TensorFlow-Python3-master/output/vgg16/voc_2007_trainval/default路径下之前训练产生的模型和Faster-RCNN-TensorFlow-Python3-master/data/cache路径下的cache删掉
在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. 将104行代码中的default='res101'改为default='vgg16'
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,结果如下