yolov3 的简单使用和训练
运习环境
opencv2.4.3
cuda9.3
ubuntu 16.04
GTX 1070
python3
没有Gpu要训练很久很久
yolov3的下载和测试
网上都千篇一律的讲了而且过于简单就不再说了
在这里标记一下遇到git clone 拉不下来的问题
Failed to connect to github.com port 443: Operation timed out
sudo gedit /etc/hosts 把git hub相关的全部注释掉
yolov3训练自己的数据
我体验下来先说一下整体思路:
1 要有自己的图片集合,
2 要把图片中我们想要识别的物体标注出来--使用工具labelImg
3 修改配置文件进行训练
首先在darknet下构建目录Vocdevkit
然后在Vocdevkit下再建立Voc2021,底下再建三个文件夹
JPEGImages 是你的图片集合
Annotations 等会用lableImage时的输出目录
ImageSets 里存放训练和测试集合
voc2021.py 是用程序分配训练集和测试集到ImageSets下
voc2021.py 代码如下
import os
import random
trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftest.write(name)
else:
fval.write(name)
else:
ftrain.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
等图片都标记完再执行程序 ,执行完成之后可以看到imageSets下生成Main,Main里是这样
进入train是这样的
Annotations 底下的文件是xml格式的,要注意图片集的命名方式要统一.
然后手动标记图片
使用labelImage 很简单,但是需要一张一张的标也麻烦.这个工具有一个输入目录和一个输出目录.
接下来文件加入自己的数据集
在darknet文件夹内打开终端,
1 wget https://pjreddie.com/media/files/voc_label.py
打开,修改一下:
classes保存自己要检测的类别即可,我用的数据集只有一个类别
2. 在终端输入
1 python voc_label.py
2 cat 2021_train.txt 2021_val.txt > train.txt
结束后,应该会发现,出现三个txt文件2007_train.txt,2007_val.txt,2007_test.txt,
这是真正有用的三个文件。
接下来修改三个配置文件
都在darknet目录下
data/voc.names
cfg/voc.data
gedit cfg/yolov3-voc.cfg
修改voc.names 告诉自己的类别名每行一个
voc.data 输入数据集路径和输出路径还有类的个数
最后修改cfg/yolov3-voc.cfg 注意一共有8处需要修改,每个yolo标记和这个标记之前的convolutional
还有开头
最后就可以开始训练了
下载yolov3的初始权重,还要下载一下darknet53.conv.74的模型参数
wget https://pjreddie.com/media/files/darknet53.conv.74
在darknet文件夹下打开终端运行:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
效果图
[学习博客]
https://blog.csdn.net/Cheungleilei/article/details/103504050