Yolo v3入坑指南
Yolo v3比Frcnn好调试多了……就是数据集准备比较麻烦……
但是好Debug,linux和win10差别不大……
代码链接(cpu版本):Yolo v3
这个代码……作者说的太草率了……data怎么准备都没说清……好歹issue里面有大神解答,给了傻瓜版教程,运行他的几个脚本就好了,data文件夹就准备好啦!
data文件准备,按照这个数据集准备
虽然这个作者是用它来训练coco数据集,但是data整个是个四不像……不用json不用xml用txt……所以训练自己的比较麻烦……
准备好data,还有修改config/yolov3.cfg文件。
参考链接:修改cfg
打开yolov3.cfg文件后,搜索yolo,共有三处yolo,下面以一处的修改作为示例。
[convolutional] #紧挨着[yolo]上面的[convolutional]
size=1
stride=1
pad=1
filters=21 #filters=3*(你的class种类数+5)
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=2 #修改classes
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=0 #显存大的写1 反之0
除此之外,cfg中的其他参数可以参考这个链接来进行修改,比如可以修改一些数据增强的参数,如果想要接着上次训练的weight继续训练,就参考这个链接进行微调(但是我使用的代码不支持clear操作,只能使用第二种方法)。
然后开始训练吧!个人感觉yolov3学的效果不是很好,frcnn训练了十轮能达到的效果,yolov3可能要80轮左右,开始前几十轮mAP很低就多加几轮试试,issue里面提到这个代码训练100轮,coco也达不到作者所说的mAP……所以……慎重……男票用这个帮我把自己的数据集跑到了92%左右的mAP,效果还是很好的。
准备数据集的那个代码有些bug调不出来,所以还是使用第一个的代码吧。
记录一些命令
1.查看tensorboard
在pycharm里面打开命令行(我总是忘,还是记录一下吧)代码中右键open in termianl
tensorboard --logdir=./logs --host=127.0.0.1 --port=6006
2.测试图片
运行detect.py
3.记录一下用过的脚本之 voc的xml转化为coco的json
import os
import json
import xml.etree.ElementTree as ET
import numpy as np
import cv2
def _isArrayLike(obj):
return hasattr(obj, '__iter__') and hasattr(obj, '__len__')
class voc2coco:
def __init__(self, devkit_path=None, year=None):
# self.classes = ('__background__',
# 'aeroplane', 'bicycle', 'bird', 'boat',
# 'bottle', 'bus', 'car', 'cat', 'chair',
# 'cow', 'diningtable', 'dog', 'horse',
# 'motorbike', 'person', 'pottedplant',
# 'sheep', 'sofa', 'train', 'tvmonitor')
self.classes = ('none',
'll', 'rr') #写你自己的class
self.num_classes = len(self.classes)
assert 'VOCdevkit' in devkit_path, 'VOC地址不存在: {}'.format(devkit_path)
self.data_path = os.path.join(devkit_path, 'VOC' + year)
self.annotaions_path = os.path.join(self.data_path, 'Annotations')
self.image_set_path = os.path.join(self.data_path, 'ImageSets')
self.year = year
self.categories_to_ids_map = self