/yolov4-pytorch

这是一个YoloV4-pytorch的源码,可以用于训练自己的模型。

Primary LanguagePythonMIT LicenseMIT

YOLOV4:You Only Look Once目标检测模型在pytorch当中的实现


NCTU hw2

要使用作業二的資料集,必須先把annotation轉成VOC的格式,我使用的檔案來自https://github.com/penny4860/svhn-voc-annotation-format.

基本上follow 训练步骤 How2train,把data放到指示的位置並按照步驟去生成model所需的format即可。(因為dataset太大所以沒辦法放到github 必須手動搬移)

目录

  1. 性能情况 Performance
  2. 实现的内容 Achievement
  3. 所需环境 Environment
  4. 注意事项 Attention
  5. 小技巧的设置 TricksSet
  6. 文件下载 Download
  7. 预测步骤 How2predict
  8. 训练步骤 How2train
  9. 参考资料 Reference

性能情况

训练数据集 权值文件名称 测试数据集 输入图片大小 mAP 0.5:0.95 mAP 0.5
VOC07+12+COCO yolo4_voc_weights.pth VOC-Test07 416x416 - 84.5
COCO-Train2017 yolo4_weights.pth COCO-Val2017 416x416 42.8 66.0

实现的内容

  • 主干特征提取网络:DarkNet53 => CSPDarkNet53
  • 特征金字塔:SPP,PAN
  • 训练用到的小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减
  • 激活函数:使用Mish激活函数
  • ……balabla

所需环境

torch==1.2.0

注意事项

注意不要使用中文标签,文件夹中不要有空格!
在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,在train.py中将classes_path指向该文件

预测步骤

1、使用预训练权重

a、下载完库后解压,下载yolo4_weights.pth或者yolo4_voc_weights.pth,放入model_data。

2、使用自己训练的权重

a、按照训练步骤训练。
b、在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类

_defaults = {
    "model_path": 'model_data/yolo4_weights.pth',
    "anchors_path": 'model_data/yolo_anchors.txt',
    "classes_path": 'model_data/coco_classes.txt',
    "model_image_size" : (416, 416, 3),
    "confidence": 0.5,
    "cuda": True
}

c、运行predict.py 可能需要修改裡面的path使其指向包含test image的folder

训练步骤

1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。 (path 定義在voc2yolo4.py 跟 voc_annotation.py, 可以自行修改)
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。 (path 定義在voc2yolo4.py 跟 voc_annotation.py, 可以自行修改)
4、在训练前利用voc2yolo4.py文件生成对应的txt。
5、再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格! 不必生成validation set, 這部分在train.py裡面有處理

classes = ["10", "1", "2" ....]

6、此时会生成对应的2007_train.txt,每一行对应其图片位置及其真实框的位置
7、在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,在train.py中将classes_path指向该文件,示例如下:

classes_path = 'model_data/new_classes.txt'    

model_data/new_classes.txt文件内容为:

10
1
2
3
...
...

8、运行train.py即可开始训练。

Reference

https://github.com/qqwweee/keras-yolo3/
https://github.com/Cartucho/mAP
https://github.com/Ma-Dan/keras-yolo4