BestYOLO是一个以科研和竞赛为导向的最好的YOLO实践框架!
目前BestYOLO是一个完全基于YOLOv5 v7.0 进行改进的开源库,该库将始终秉持以落地应用为导向,以轻便化使用为宗旨,简化各种模块的改进。目前已经集成了基于torchvision.models 模型为Backbone的YOLOv5目标检测算法,同时也将逐渐开源更多YOLOv5应用程序。
所有Backbone都支持开启预训练权重,只需添加
pretrained=True
到每个common.py 的模型中。torchvision.models
中的预训练权重都是基于ImageNet-1K数据集训练的!
models | layers | parameters | model size(MB) |
---|---|---|---|
yolov5n | 214 | 1766623 | 3.9 |
MobileNetV3s | 313 | 2137311 | 4.7 |
efficientnet_b0 | 443 | 6241531 | 13.0 |
RegNety400 | 450 | 5000191 | 10.5 |
ResNet18 | 177 | 12352447 | 25.1 |
ResNet34 | 223 | 22460607 | 45.3 |
ResNet50 | 258 | 27560895 | 55.7 |
EfficientNetV2_s | 820 | 22419151 | 45.8 |
efficientnet_b1 | 539 | 6595615 | 13.8 |
mobilenet_v2 | 320 | 4455295 | 9.4 |
wide_resnet50_2 | 258 | 70887103 | 142.3 |
vgg11_bn | 140 | 10442879 | 21.9 |
convnext_tiny | 308 | 29310175 | 59.0 |
.yaml
配置文件中的depth_multiple
和width_multiple
可以同时设置为1试试,说不定会有不错的效果。SPP是空间金字塔池化,作用是一个实现一个自适应尺寸的输出。(传统的池化层如最大池化、平均池化的输出大小是和输入大小挂钩的,但是我们最后做全连接层实现分类的时候需要指定全连接的输入,所以我们需要一种方法让神经网络在某层得到一个固定维度的输出,而且这种方法最好不是resize(resize会失真),由此SPP应运而生,其最早是何凯明提出,应用于RCNN模型)。当今的SPP在faster-rcnn上已经发展为今天的Multi-Scale-ROI-Align,而在Yolo上发展为SPPF。
models | layers | parameters |
---|---|---|
yolov5n(SPPF) | 214 | 1766623 |
yolov5n-SPP | 217 | 1766623 |
yolov5n-SimSPPF | 216 | 1766623 |
yolov5n-ASPP | 214 | 3831775 |
yolov5n-RFB | 251 | 1932287 |
yolov5n-SPPCSPC | 232 | 3375071 |
yolov5n-SPPCSPC_group | 232 | 2047967 |
yolov5n-SimCSPSPPF | 229 | 3375071 |
models | layers | parameters |
---|---|---|
yolov5n | 214 | 1766623 |
yolov5n-FPN-AC | 188 | 1858399 |
yolov5n-PAN-AC | 186 | 1642591 |
yolov5n-FPN+PAN-AC | 160 | 1734367 |
yolov5n-FPN-AS | 204 | 2106847 |
yolov5n-PAN-AS | 194 | 1891039 |
yolov5n-FPN+PAN-AS | 184 | 2231263 |
训练不要使用
Soft-NMS
,耗时太久,请在val
阶段开启,适用于小目标重叠数据。
应注意:训练和推理数据保持相同的数据形式,即不能通过非切图训练,根据切图推理!
@article{2023bestyolo,
title={{BestYOLO}: Making research and competition easier},
author={Rongsheng Wang},
repo={github https://github.com/WangRongsheng/BestYOLO},
year={2023}
}