一、运行环境
1. Ubuntu16.04
2. TensorFlow-gpu 1.8.0
3. Keras 2.1.5
4. GPU rtx2060
二、创建数据集
1. 使用VOC2007数据集的文件结构:
文件结构如下图,可以自己创建,也可以下载VOC2007数据集后删除文件内容。
2. 标注图片:
使用LabelImg(https://github.com/tzutalin/labelImg)对训练图片进行标注生成标签,然后将所有图片放在 JPEGImages 文件夹下,将所有标签(.xml)放在 Annotations 文件夹下。
3. 划分数据集:
python test.py 70%为训练集(train.txt), 15%为测试集(test.txt), 15%为评估数据集(val.txt)。txt文件保存在 ImageSets/Main 下。
4. 转换标签格式:
python voc_annotation.py, 在执行之前,需要根据数据集的实际类别,修改voc_annotation.py中的classes(与标注时的class名字一样)。执行之后,将会得到train.txt、test.txt、val.txt,文本内容是:
img_path、box位置(top left bottom right)、类别索引(0 1 2 ...),类似这种:
5. 使用kmeans生成anchors
python kmeans.py 执行前确定class(类别)为自己所期望的,执行后会在model_data文件夹下生成 yolo_anchors.txt文件。
三、准备训练
1.修改yolo3的网络结构:打开yolo3.cfg,搜索"yolo",如下图所示,需要修改filters、classes、random,一共可搜索到三处yolo,每处都需要修改。
filters = 3x(5+len(classes))
classes = len(classes)
random:默认是1,显存小改为0
2. 确认相关依赖文件:
a. model_data/voc_classes.txt:与你的class一致,一般需要手动修改;
b. model_data/yolo_anchors.txt:确认存在即可;
c. model_data/yolo_weights.h5:由 yolov3.weights 转换得到,需要先下载yolov3.weights,然后 python convert.py yolov3.cfg yolov3.weights model_data/yolo_weights.h5
d. 存在logs文件夹
3. 开始训练:python train.py