Skip to content

这是一个mobilenet-yolov4-lite的库,把yolov4主干网络修改成了mobilenet,修改了Panet的卷积组成,使参数量大幅度缩小。

License

Notifications You must be signed in to change notification settings

gaozheng-tech/mobilenet-yolov4-lite-pytorch

 
 

Repository files navigation

YOLOV4:You Only Look Once目标检测模型-修改mobilenet系列主干网络-在pytorch当中的实现


目录

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

性能情况

训练数据集 权值文件名称 测试数据集 输入图片大小 mAP 0.5:0.95 mAP 0.5
VOC07+12 yolov4_mobilenet_v1_map76.62.pth VOC-Test07 416x416 - 76.62
VOC07+12 yolov4_mobilenet_v2_map76.93.pth VOC-Test07 416x416 - 76.93
VOC07+12 yolov4_mobilenet_v3_map75.30.pth VOC-Test07 416x416 - 75.30

所需环境

torch==1.2.0

注意事项

提供的三个权重分别是基于mobilenetv1、mobilenetv2、mobilenetv3主干网络训练而成的。使用的时候注意backbone和权重的对应。 训练前注意修改model_path和backbone使得二者对应。 预测前注意修改model_path和backbone使得二者对应。

小技巧的设置

在train.py文件下:
1、mosaic参数可用于控制是否实现Mosaic数据增强。
2、Cosine_scheduler可用于控制是否使用学习率余弦退火衰减。
3、label_smoothing可用于控制是否Label Smoothing平滑。

文件下载

训练所需的各个权值可在百度网盘中下载。
链接: https://pan.baidu.com/s/1LE3lBCoIeT2E7DY5tGtvKQ 提取码: fxsh
三个已经训练好的权重均为VOC数据集的权重。

预测步骤

1、使用预训练权重

a、下载完库后解压,在百度网盘下载权重,放入model_data,运行predict.py,输入

img/street.jpg

可完成预测。
b、利用video.py可进行摄像头检测。

2、使用自己训练的权重

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

_defaults = {
    "model_path"        : 'model_data/yolov4_mobilenet_v2_map76.93.pth',
    "anchors_path"      : 'model_data/yolo_anchors.txt',
    "classes_path"      : 'model_data/voc_classes.txt',
    "backbone"          : 'mobilenetv2',
    
    "model_image_size"  : (416, 416, 3),
    "confidence"        : 0.5,
    "iou"               : 0.3,
    "cuda"              : True
}

c、运行predict.py,输入

img/street.jpg

可完成预测。
d、利用video.py可进行摄像头检测。

训练步骤

1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4、在训练前利用voc2yolo4.py文件生成对应的txt。
5、再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格!

classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]

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

classes_path = 'model_data/new_classes.txt'    

model_data/new_classes.txt文件内容为:

cat
dog
...

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

mAP目标检测精度计算更新

更新了get_gt_txt.py、get_dr_txt.py和get_map.py文件。
get_map文件克隆自https://github.com/Cartucho/mAP
具体mAP计算过程可参考:https://www.bilibili.com/video/BV1zE411u7Vw

Reference

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

About

这是一个mobilenet-yolov4-lite的库,把yolov4主干网络修改成了mobilenet,修改了Panet的卷积组成,使参数量大幅度缩小。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%