这个项目主要改进点来源于ppogg/YOLOv5-Lite,用的里面的Lite-e模型,非常厉害的轻量化模型,感谢大佬的开源工作。
本项目适合用在一类/几类,且数据并不复杂度的数据集上
对YOLOv5原理不了解的,可以看下我的YOLOv5源码注释:HuKai97/yolov5-5.x-annotations.和我写的YOLOv5源码讲解:【YOLOV5-5.x 源码讲解】整体项目文件导航.
G1. 卷积层的输入特征channel和输出特征channel要尽量相等;
G2. 尽量不要使用组卷积,或者组卷积g尽量小;
G3. 网络分支要尽量少,避免并行结构;
G4. Element-Wise的操作要尽量少,如:ReLU、ADD、逐点卷积等;
- backbone的Focus替换为一个3x3Conv(c=32),因为v5-6.0就替换为了一个6x6Conv,这里为了进一步降低参数量,替换为3x3Conv;
- backbone所有Conv和C3替换为Shuffle Block;
- 砍掉SPP和后面的一个C3结构,SPP并行操作太多了(G3)
- head所有层输入输出channel=96(G1)
- head所有C3改为DWConv
- PAN的两个Concat改为ADD(channel太大,计算量太大,虽然违反了G4,但是计算量更小)
- 【YOLOV5-5.x 源码讲解】整体项目文件导航
- 【项目二、蜂巢检测项目】一、串讲各类经典的卷积网络:InceptionV1-V4、ResNetV1-V2、MobileNetV1-V3、ShuffleNetV1-V2、ResNeXt、Xception】
- 【项目二、蜂巢检测项目】二、模型改进:YOLOv5s-ShuffleNetV2
同YOLOv5
模型 | YOLOv5s | YOLOv5s-ShuffleNetV2 |
---|---|---|
shape | 320x320 | 320x320 |
参数量 | 6.75M | 0.69M |
FLOPs | 2.05G | 0.32G |
权重文件大小 | 13.6M | 1.6M |
mAP@0.5 | 0.967 | 0.955 |
mAP@0.5~0.95 | 0.885 | 0.84 |