先参考这篇装一下大概环境: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'
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_imdb2. 在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/<comp_id>_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 path4. 新建\data\VOCDevkit2007\results\VOC2007\Main目录
5. 运行demo.py,结果如下