YOLOAir 算法库🚀 是一个基于 PyTorch 的一系列 YOLO 检测算法组合工具箱。
统一模型代码框架、统一应用、统一改进、易于模块组合、构建更强大的网络模型。
简体中文 | English
模型多样化:基于不同网络模块构建不同检测网络模型。
模块组件化:帮助用户自定义快速组合Backbone、Neck、Head,使得网络模型多样化,助力科研改进检测算法、模型改进,网络排列组合🏆。构建强大的网络模型。
统一模型代码框架、统一应用方式、统一调参、统一改进、易于模块组合、构建更强大的网络模型。
内置YOLOv5、YOLOv7、YOLOX、YOLOR、Transformer、Scaled_YOLOv4、YOLOv3、YOLOv4、YOLO-Facev2、TPH-YOLOv5、YOLOv5Lite、PicoDet等模型网络结构(持续更新中🚀)...
██╗ ██╗ ██████╗ ██╗ ██████╗ █████╗ ██╗ ██████╗
╚██╗ ██╔╝██╔═══██╗██║ ██╔═══██╗ ██╔══██╗ ██║ ██╔══██╗
╚████╔╝ ██║ ██║██║ ██║ ██║ ███████║ ██║ ██████╔╝
╚██╔╝ ██║ ██║██║ ██║ ██║ ██╔══██║ ██║ ██╔══██╗
██║ ╚██████╔╝███████╗╚██████╔╝ ██║ ██║ ██║ ██║ ██║
╚═╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
基于 YOLOv5 代码框架,并同步适配 稳定的YOLOv5_v6.1更新, 同步v6.1部署生态。使用这个项目之前, 您可以先了解YOLOv5库。
项目地址: https://github.com/iscyy/yoloair
部分改进说明教程: https://github.com/iscyy/yoloair/wiki/Improved-tutorial-presentation🌟🌟🌟🌟🌟
🚀支持更多的YOLO系列算法模型改进(持续更新...)
YOLOAir 算法库汇总了多种主流YOLO系列检测模型,一套代码集成多种模型:
- 内置集成 YOLOv5 模型网络结构、YOLOv7 模型网络结构、 YOLOR 模型网络结构、YOLOX 模型网络结构、Scaled_YOLOv4 模型网络结构、YOLOv4 模型网络结构、YOLOv3 模型网络结构、YOLO-FaceV2模型网络结构、TPH-YOLOv5模型网络结构、YOLOv5-Lite模型网络结构、PicoDet模型网络结构等持续更新中...
- 以上多种检测算法使用统一模型代码框架,集成在 YOLOAir 库中,统一任务形式、统一应用方式。🌟便于科研者用于论文算法模型改进,模型对比,实现网络组合多样化。🌟工程算法部署落地更便捷,包含轻量化模型和精度更高的模型,根据场景合理选择,在精度和速度俩个方面取得平衡。同时该库支持解耦不同的结构和模块组件,让模块组件化,通过组合不同的模块组件,用户可以根据不同数据集或不同业务场景自行定制化构建不同检测模型。
🔥🔥🔥 重磅!!!作为注意力机制的开源项目补充,强烈推荐一个注意力机制算法代码库External-Attention,里面汇总整理很全面,包含各种Attention、Self-Attention等代码,代码简洁易读,一行代码实现Attention机制。
🚀支持加载YOLOv3、YOLOv4、YOLOv5、YOLOv7、YOLOR等网络的官方预训练权重进行迁移学习
🚀支持更多Backbone
- CSPDarkNet系列
- RepBlock系列
- HorNet系列
- ResNet系列
- RegNet 系列
- ShuffleNet系列
- Ghost系列
- MobileNet系列
- EfficientNet系列
- ConvNext系列
- RepLKNet系列
- 自注意力Transformer系列
- CNN和Transformer结合系列
持续更新中🎈
🚀支持更多Neck
- FPN
- PANet
- BiFPN等主流结构。
持续更新中🎈
🚀支持更多检测头Head
- YOLOv4、YOLOv5 Head检测头、
- YOLOR 隐式学习Head检测头、
- YOLOX的解耦合检测头Decoupled Head、DetectX Head
- 自适应空间特征融合 检测头ASFF Head、
- YOLOv7检测头IAuxDetect Head, IDetect Head等;
- 其他不同检测头
🚀支持更多即插即用的注意力机制Attention
- 在网络任何部分即插即用式使用注意力机制
- Self Attention
- Contextual Transformer
- Bottleneck Transformer
- S2-MLP Attention
- SK Attention
- CBAM Attention
- SE Attention
- Coordinate attention
- NAM Attention
- GAM Attention
- ECA Attention
- Shuffle Attention
- CrissCrossAttention
- Coordinate attention
- SOCAttention
- SimAM Attention 持续更新中🎈
🚀更多空间金字塔池化结构
- SPP
- SPPF
- ASPP
- RFB
- SPPCSPC
持续更新中🎈
🚀支持更多Loss
- ComputeLoss(v5)
- ComputeLoss(X)
- ComputeLossAuxOTA(v7)
- ComputeLossOTA(v7)
- ComputeNWDLoss
- 其他Loss
🚀支持Anchor-base和Anchor-Free
🚀支持多种正负样本分配
🚀支持加权框融合(WBF)
🚀 内置多种网络模型模块化组件
Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv,BottleneckCSP, C3, C3TR, C3SPP, C3Ghost, C3HB, C3RFEM, MultiSEAM, SEAM, C3STR, SPPCSPC, RepConv, BoT3, Air, CA, CBAM, Involution, Stem, ResCSPC, ResCSPB, ResXCSPB, ResXCSPC, BottleneckCSPB, BottleneckCSPC, ASPP, BasicRFB, SPPCSPC_group, HorBlock, CNeB,C3GC ,C3C2, nn.ConvTranspose2d, DWConvblock, RepVGGBlock, CoT3, ConvNextBlock, SPPCSP, BottleneckCSP2, DownC, BottleneckCSPF, RepVGGBlock, ReOrg, DWT, MobileOne,HorNet...等详细代码 ./models/common.py文件 内
🚀支持更多IoU损失函数
- CIoU
- DIoU
- GIoU
- EIoU
- SIoU
- alpha IOU
持续更新中🎈
🚀支持更多NMS
- NMS
- Merge-NMS
- Soft-NMS
- CIoU_NMS
- DIoU_NMS
- GIoU_NMS
- EIoU_NMS
- SIoU_NMS
- Soft-SIoUNMS、Soft-CIoUNMS、Soft-DIoUNMS、Soft-EIoUNMS、Soft-GIoUNMS等;
持续更新中🎈
🚀支持更多数据增强
- Mosaic、Copy paste、Random affine(Rotation, Scale, Translation and Shear)、MixUp、Augment HSV(Hue, Saturation, Value、Random horizontal flip
网络模型结构图: 模型🔗
以上组件模块使用统一模型代码框架、统一任务形式、统一应用方式,模块组件化🚀 可以帮助用户自定义快速组合Backbone、Neck、Head,使得网络模型多样化,助力科研改进检测算法,构建更强大的网络模型。
🚀包括基于 YOLOv5、YOLOv7、YOLOX、YOLOR、YOLOv3、YOLOv4、Scaled_YOLOv4、Transformer、YOLO-FaceV2、PicoDet、YOLOv5-Lite、TPH-YOLOv5 等其他多种改进网络结构等算法模型的模型配置文件
支持 SPD-Conv、HorNet 网络、ConvNext 模块、CNeBlock、C3HBLock、C3GCBLock、C3C2BLock
🔥添加YOLOv3、YOLOv4、YOLOv5、YOLOv7、Scaled-YOLOv4网络的不同预训练权重链接🔗
持续更新中🎈
FightingCV公众号 | YOLOAir目标检测交流群( 答案: yoloair ) |
---|---|
-
FightingCV每天分享前沿论文动态(公众号回复加群, 添加小助手, 加入微信交流群)
-
YOLOAir目标检测交流群
About the code. Follow the design principle of YOLOv5.
The original version was created based on YOLOv5(v6.1)
在Python>=3.7.0 的环境中克隆版本仓并安装 requirements.txt,包括PyTorch>=1.7。
$ git clone https://github.com/iscyy/yoloair.git # 克隆
$ cd YOLOAir
$ pip install -r requirements.txt # 安装
$ python train.py --data coco128.yaml --cfg configs/yolov5/yolov5s.yaml #默认为yolo
detect.py
在各种数据源上运行推理, 并将检测结果保存到 runs/detect
目录。
$ python detect.py --source 0 # 网络摄像头
img.jpg # 图像
vid.mp4 # 视频
path/ # 文件夹
path/*.jpg # glob
如果您使用不同模型来推理数据集,则可以使用 wbf.py文件 通过加权框融合来集成结果。 您只需要在 wbf.py文件 中设置 img 路径和 txt 路径。
$ python wbf.py
Model | size (pixels) |
mAPval 0.5:0.95 |
mAPval 0.5 |
Speed CPU b1 (ms) |
Speed V100 b1 (ms) |
Speed V100 b32 (ms) |
params (M) |
FLOPs @640 (B) |
Weights |
---|---|---|---|---|---|---|---|---|---|
YOLOv5n | 640 | 28.0 | 45.7 | 45 | 6.3 | 0.6 | 1.9 | 4.5 | YOLOv5n |
YOLOv5s | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 | YOLOv5s |
YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 | YOLOv5m |
YOLOv5l | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 | YOLOv5l |
YOLOv5x | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 | YOLOv5x |
YOLOv5n6 | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 | YOLOv5n6 |
YOLOv5s6 | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 | YOLOv5s6 |
YOLOv5m6 | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 | YOLOv5m6 |
YOLOv5l6 | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 | YOLOv5l6 |
YOLOv5x6 + TTA |
1280 1536 |
55.0 55.8 |
72.7 72.7 |
3136 - |
26.2 - |
19.4 - |
140.7 - |
209.8 - |
YOLOv5x6 |
Expand
- The original version was created based on YOLOv5(6.1)
Model | size (pixels) |
mAPval 0.5:0.95 |
mAPval 0.5 |
deconv kernel size |
Speed V100 b1 (ms) |
Speed V100 b32 (ms) |
params (M) |
FLOPs @640 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5s | 640 | 33.7 | 52.9 | - | 5.6 | 2.2 | 7.23 | 16.5 |
YOLOv5s-deconv-exp1 | 640 | 33.4 | 52.5 | 2 | 5.6 | 2.4 | 7.55 | 18.2 |
YOLOv5s-deconv-exp2 | 640 | 34.7 | 54.2 | 4 | 5.8 | 2.5 | 8.54 | 23.2 |
Expand
- The training process depends on 4xV100 GPU
# train
python -m torch.distributed.run --nproc_per_node 4 train.py --device 0,1,2,3 --data data/coco.yaml --hyp data/hyps/hyp.scratch-low.yaml --cfg path/to/model.yaml --batch 512 --epochs 300 --weights ''
# val
python val.py --verbose --data data/coco.yaml --conf 0.001 --iou 0.65 --batch 1 --weights path/to/model.pt
- There is a gap between the mAP of YOLOv5s and the official one, here is just for comparison
Model | size (pixels) |
mAPval 0.5:0.95 |
mAPval 0.5 |
params (M) |
FLOPs @640 (B) |
---|---|---|---|---|---|
YOLOv5s | 640 | 37.4 | 56.6 | 7.226 | 16.5 |
YOLOv5s-deconv | 640 | 37.8 | 57.1 | 7.232 | 16.5 |
Expand
- tested the 4x4 depthwise-separable deconv by setting the groups as input_channel
- their params number and FLOPS are nearly the same while the new model's mAP is about 0.4 higher than the origin.
Model | size (pixels) |
mAPval 0.5:0.95 |
mAPval 0.5 |
params (M) |
FLOPs @640 (B) |
---|---|---|---|---|---|
YOLOv5s | 640 | 37.2 | 56.0 | 7.2 | 16.5 |
YOLOv5s-C3GC-backbone | 640 | 37.7 | 57.3 | 7.5 | 16.8 |
Expand
- The original version was created based on YOLOv5-6.0
https://github.com/iscyy/yoloair/wiki/Improved-tutorial-presentation🌟🌟🌟🌟🌟
更多模块改进说明教程持续更新中...
与YOLOv5框架同步
- 训练自定义数据 🚀 推荐
- 获得最佳训练效果的技巧 ☘️ 推荐
- 使用 Weights & Biases 记录实验 🌟 新
- Roboflow:数据集、标签和主动学习 🌟 新
- 多GPU训练
- PyTorch Hub ⭐ 新
- TFLite, ONNX, CoreML, TensorRT 导出 🚀
- 测试时数据增强 (TTA)
- 模型集成
- 模型剪枝/稀疏性
- 超参数进化
- 带有冻结层的迁移学习 ⭐ 新
- 架构概要 ⭐ 新
后续会持续建设和完善 YOLOAir 生态
完善集成更多 YOLO 系列模型,持续结合不同模块,构建更多不同网络模型
横向拓展和引入关联技术等等
跟进:YOLO-mask & YOLO-pose
Expand
-
The content of this site is only for sharing notes. If some content is infringing, please sending email.
-
If you have any question, please discuss with me by sending email.
Expand
https://github.com/ultralytics/yolov5
https://github.com/AlexeyAB/darknet
https://github.com/ultralytics/yolov3
https://github.com/WongKinYiu/PyTorch_YOLOv4
https://github.com/WongKinYiu/ScaledYOLOv4
https://github.com/meituan/YOLOv6
https://github.com/WongKinYiu/yolov7
https://github.com/WongKinYiu/yolor
https://github.com/xmu-xiaoma666/External-Attention-pytorch
https://gitee.com/SearchSource/yolov5_yolox
https://github.com/Krasjet-Yu/YOLO-FaceV2
https://github.com/positive666/yolov5_research/
https://github.com/ppogg/YOLOv5-Lite
https://github.com/Gumpest/YOLOv5-Multibackbone-Compression
https://github.com/cv516Buaa/tph-yolov5
Paper:https://arxiv.org/abs/2208.02019