YOLO网址:https://pjreddie.com/darknet/yolo/
一、安装darknet并借助预训练权重进行检测
1.安装darknet
git clone https://github.com/pjreddie/darknet
cd darknet
make
2.下载预训练权重
wget https://pjreddie.com/media/files/yolov3.weights
3.运行检测
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
- 在默认Makefile的情况下,会在当前目录生成predictions.jpg,显示检测结果。
二、训练自己的VOC数据集
1.原文件结构如下:
├── darknet
│ ├── VOCdevkit
│ │ ├── VOC2007
│ │ │ ├── Annotations #存放所有xml文件
│ │ │ ├── JPEGImages #存放所有图片
│ │ │ ├── ImageSets
│ │ │ │ ├── Main
│ │ │ │ │ ├── test.txt
│ │ │ │ │ ├── trainval.txt
│ │ │ │ │ ├── train.txt
│ │ │ │ │ ├── val.txt
- 生成ImageSets/Main中train.txt等文件的脚本,可参考之前的博客统计清理数据集文件用到的命令和python脚本中的“二、Python脚本”
2.生成label文件
- darknet需要每个图片有一个对应的txt文件,txt文件形式如下:
<object-class> <x> <y> <width> <height>
1)将scripts/voc_label.py文件复制到darknet目录下
2)根据自己数据集的情况进行修改
sets = [……]
classes = [……]
3)执行python voc_label.py
4)结果会在当前目录下产生2007_train.txt、2007_val.txt等文件;在VOC2007目录下产生labels文件
5)将验证集和训练集合成一个大的训练集,例如:
cat 2007_train.txt 2007_val.txt > train.txt
3.修改配置文件
1)修改cfg/voc.data
classes= xx
train = /home/……/train.txt
valid = /home/……/test.txt
names = data/voc.names
backup = backup
2)修改data/voc.names
- 将其中的类别换成自己的类别即可
3)修改cfg/yolov3-voc.cfg
- 将默认的测试状态修改为训练状态,测试时反之
- 修改三处
[yolo]层
各自上一层卷积层中的filters = 3 * (classes + 1 + 4) - 修改三处
[yolo]层
中的classes为自己的类别数
4.训练
1)下载预训练权重
wget https://pjreddie.com/media/files/darknet53.conv.74
2)训练模型
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74