YOLOv3官网
网络搭建步骤
一、编译darknet531.下载darknet53文件2.修改Makefile文件3.编译darkent53二、下载预训练权重文件三、测试编译好的darknet四、训练自己的数据1.准备自己的数据集2.obj.names文件3.obj.data文件4. yolov3.cfg文件5.训练模型6.测试图片一、编译darknet53
1.下载darknet53文件
git clone /AlexeyAB/darknet
2.修改Makefile文件
在darknet文件夹下找到Makefile文件,修改:(如果没有GPU加速的话,就不用修改了。)
GPU=1 CUDNN=1 OPENCV=1
另外,OPENCV需要提前安装好。
3.编译darkent53
cd darknet
make
二、下载预训练权重文件
wget /media/files/yolov3.weights
三、测试编译好的darknet
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
运行结束后,可以查看输出的predictions.jpg,直接点开图片即可,也可以运行:
diaplay predicions.jpg
四、训练自己的数据
1.准备自己的数据集
将数据图片和标签(txt)放到一个文件夹obj里,将obj文件夹复制到darknet/data文件夹下。可以使用公开的数据集,下载方式。
在darknet/文件夹下创建一个generate_train.py,将下面代码复制进去并运行:
import osimage_files = []os.chdir(os.path.join("data", "obj"))for filename in os.listdir(os.getcwd()):if filename.endswith(".jpg"):image_files.append("data/obj/" + filename)os.chdir("..")with open("train.txt", "w") as outfile:for image in image_files:outfile.write(image)outfile.write("\n")outfile.close()os.chdir("..")
然后到darknet/data文件夹下看是否生成了一个train.txt文件。
2.obj.names文件
在darknet/data
文件夹下创建obj.names
文件,里面存放需要识别的物体的名字(我们以识别两个物体为例,分别是Car和Bird),例如:
Car Bird
3.obj.data文件
在darknet/data文件夹下添加obj.data
文件。
darknet/data/obj.data
输入内容如下:其中train.txt为训练集保存路径,test.txt为测试集保存路径
classes=2train = /data/train.txtvalidation = /data/test.txt names=data/obj.names backup=backup/
4. yolov3.cfg文件
在darknet/cfg文件夹下找到yolov3.cfg
文件,复制一份更名为yolov3-custom.cfg
文件,我们修改复制之后的文件,源文件不动。
打开yolov3-custom.cfg
文件:
在[net]层修改:
-将#Testing下面两行用#注释掉;
-将#Training 下面两行的注释打开;
其余修改如下:
burn_in=1000 max_batches=6000 (训练6000次)steps=4800,5400 (设置为0.8倍的max_batches和0.9倍的max_batches)
在[yolo]层修改:
-在文本中搜索yolo,找到[yolo]层。下面的classes=2,random=0,上面一层的[convolutional]的filters=21,[21=(2+5)*3,2是类别数,如果是80类则应该写(80+5)*3=255]。
这种[yolo]层一共有3处,都要修改。
5.训练模型
下载darknet53预训练权重:
wget /media/files/darknet53.conv.74
开始训练:
./darknet detector train data/obj.data cfg/yolov3-custom.cfg darknet53.conv.74
这里需要训练一段时间,下面是训练结果(6000次训练):
6.测试图片
首先复制一份yolov3-custom.cfg 并更名为yolov3-custom_test.cfg, 修改的位置如下:
运行:
./darknet detector test data/obj.data cfg/yolov3-custom-test.cfg backup/yolov3-custom_final.weights data/person.jpg
显示结果如下: