yolov7 - YOLOv7 在 YOLO arch 中添加了实例分割。还有许多变压器骨干,包括拱门。如果你仔细看,你会发现我们的终极愿景是通过transformers的力量,以及多任务训练,让 YOLO 再次伟大。

Created at: 2021-06-23 19:35:35
Language: Python
License: GPL-3.0

YOLOv7 - 让YOLO再次伟大

文档安装说明部署贡献报告问题

PyPI - Python Version PyPI 下载 Github 下载

代码 许可证 松弛 欢迎公关

迁移警告!

由于其他人在我们之后创建了另一个YOLOv7,我们不希望让人们搞砸其中的2个,我们也不想追逐无意义的AP号码作为噱头。因此,我们计划将YOLOv7的进一步发展转移到新的地方 - >YOLOvn链接新名作将永续发展!!这些未完成的 PR 将合并,然后开始迁移。感谢大家的贡献!同样,新的框架不仅用于重新实现SOTA模型,还用于探索新的模型设计,我们不仅要探索检测,还要探索多任务和新的变压器拱设计

简而言之:YOLOv7在YOLO架构中添加了实例分割。还有许多变压器骨干,包括拱门。如果你仔细观察,你会发现我们的最终愿景是通过变压器的力量以及多任务培训使YOLO再次伟大。YOLOv7实现了mAP 43,AP-s通过对流微小的主干比MaskRCNN高出10倍,而与YOLOX-s的速度相似,下面列出的更多型号,它更准确,更轻!

需要 GPU 资源!yolov7下一个版本即将推出,但是,我没有足够的GPU来训练每个人的预训练模型,如果你有GPU,请发起讨论并ping我,我将指导训练新模型。

新版本将发布!

YOLOv7 v2.0 即将发布!我们将发布我们的Convext-tiny YOLO arch模型,以非常低的延迟实现mAP 43.9!功能将包含在下一个版本中:

  • 支持高效前线骨干网;
  • 支持新的YOLO2Go模型,更轻,更快,更准确;
  • 支持移动一骨干网;

有关更多详细信息,请参阅阅读文档

只需分叉和星星!,一旦我们发布新版本,你将被注意到!

🔥🔥🔥 只是另一个基于 detectron2 实现的 yolo 变体。但请注意,YOLOv7并不意味着是yolo家族的继承者,7只是一个神奇而幸运的数字。相反,YOLOv7将yolo扩展到许多其他视觉任务中,例如实例分割,单级关键点检测等

YOLOv7 中支持的矩阵有:

  • [x] YOLOv4 包含在 CSP-Darknet53 中;
  • [x] YOLOv7 arch with resnets backbone;
  • [ ] YOLOv7 arch with resnet-vd backbone (可能作为PP-YOLO), 可变形的conv, Mish 等;
  • [x] 包括来自PP-YOLO的GridMask增强;
  • [x] 自定义数据集映射器支持的 Mosiac 转换;
  • [x] YOLOv7 拱形 Swin 变压器支持(精度更高,但速度更低);
  • [ ] YOLOv7 arch Efficientnet + BiFPN;
  • [ ] YOLOv5样式正样本选择,新的坐标编码风格;
  • [x] RandomColorDistortion, RandomExpand, RandomCrop, RandomFlip;
  • [x] CIoU loss (DIoU, GIoU) 和 label smoothing (來自 YOLOv5 & YOLOv4);
  • [ ] YOLOF也包括在内;
  • [x] YOLOv7 Res2net + FPN 支持;
  • [x] 支持金字塔视觉变压器 v2 (PVTv2);
  • [ ] WBF(加权盒融合),这比 NMS 效果更好,链接;
  • [ ] YOLOX像头部设计和锚杆设计,也培训支持;
  • [x] YOLOX s,m,l backbone 和 PAFPN 添加,我们有 YOLOX backbone 和 pafpn 的新组合;
  • [x] YOLOv7 与 Res2Net-v1d 骨干网,我们发现 res2net-v1d 具有比 darknet53 更好的精度;
  • [x] 添加了带有 SPP 和 dropblock 的 PPYOLOv2 PAN 颈;
  • [x] YOLOX拱门已添加,现在你也可以训练YOLOX模型(锚点免费yolo);
  • [x] DETR:支持基于变压器的检测模型和onnx导出,以及张量RT加速;
  • [x] AnchorDETR:更快的收敛版本 detr,现在受支持!
  • [x] 几乎所有型号都可以导出到onnx;
  • [x] 支持DETR和其他变压器模型的TensorRT部署;
  • [ ] 它将与 wanwu 集成,Wanwu 是一个无 PyTorch 的部署框架,在你的目标平台上运行得最快。

⚠️重要提示:Github上的YOLOv7不是最新版本,许多功能都是闭源的,但你可以从 https://manaai.cn

功能已准备就绪,但尚未开源:

  • [x] 在YOLOX上进行Convnext训练,比原来的YOLOX精度更高;
  • [x] GFL损失支持;
  • [x] 移动虚拟-V2 主干网可用;
  • [x] CSPRep-Resnet:一种在PP-YOLOE中使用的repvgg风格的resnet,但在pytorch而不是桨中;
  • [ ] VitDet 支持;
  • [ ] 来自 VitDet 的简单 FPN 支持;
  • [ ] 支持 PP-YOLOE 磁头;

如果你想获得完整版YOLOv7,请成为贡献者或从 https://manaai.cn 获取。

🆕新闻!

  • 2022.06.25: 美团YOLOv6培训在YOLOv7中得到支持!
  • 2022.06.13: 新型号YOLOX-Convnext-tiny获得了41.3 43 mAP击败yolox-s,AP-small甚至更高!
  • 2022.06.09GFL,支持一般焦距损失;
  • 2022.05.26:添加了YOLOX-ConvNext配置;
  • 2022.05.18:DINO,DNDetr和DABDetr即将添加,coco上的新记录高达63.3 AP!
  • 2022.05.09:新增新功能!我们采用带有Keypoints Head!的YOLOX,模型仍在训练中,但你已经可以在代码中检查;
  • 2022.04.23: 我们在SparseInst上完成了int8量化!它工作完美!下载onnx,自己试试吧。
  • 2022.04.15: 现在,我们支持 onnx expport!
    SparseInst
  • 2022.03.25:支持新实例 seg!40 帧/秒 @ 37 毫巴!!这是快速的;
  • 2021.09.16:第一个基于变压器的DETR型号加入,将探索更多DETR系列型号;
  • 2021.08.02YOLOX arch已添加,你也可以在此存储库中训练YOLOX;
  • 2021.07.25:我们发现YOLOv7-Res2net50击败了res50和darknet53在相同的速度水平!自定义数据集的 AP 提升 5%;
  • 2021.07.04:添加了YOLOF,我们也可以有一个无锚点支撑,YOLOF在速度和精度上实现了更好的权衡;
  • 2021.06.25:该项目首次启动。
  • 更多

🌹通缉贡献

如果你有空闲时间或者你有GPU卡,那就帮助YOLOv7变得更强吧!以下是贡献的指导:

  1. 索赔任务:我有一些想法,但没有足够的时间去做,如果你想实现它,要求任务,我会给你详细的建议,关于如何做,你可以从中学到很多东西;
  2. 测试mAP:当你完成新想法的实现时,创建一个线程来报告实验mAP,如果它有效,然后合并到我们的主分支中;
  3. 拉取请求:YOLOv7是开放的,总是跟踪SOTA和轻量级模型,如果一个模型有用,我们会合并并部署它,分发给所有想尝试的用户。

以下是一些需要声明的任务:

只需加入我们的内部贡献者计划,你就可以通过你的贡献分享我们的最新代码!

💁‍♂️结果

YOLOv7 实例 人脸与检测

🧑‍🦯安装 && 快速入门

特殊要求(其他版本也可能有效,但这些版本经过测试,具有最佳性能,包括ONNX导出最佳支持):

  • PyTorch 1.11 (稳定版)
  • onnx
  • onnx-simplifier 0.3.7
  • 阿尔弗雷德-派最新
  • detectron2 最新

如果你使用较低版本的 PyTorch ,onnx 导出可能无法按预期工作。

🤔特征

YOLOv7的一些亮点是:

  • 基于 detectron2 的简单标准训练框架,适用于任何检测和实例分割任务;
  • 支持DETR和许多基于变压器的开箱即用检测框架;
  • 支持易于部署的管道思想 onnx。
  • 这是唯一支持YOLOv4 + 实例分段的单阶段样式框架;
  • 轻松插入基于变压器的探测器;

如果你对此项目有任何进一步的发展,我们强烈建议你发送PR,开源的唯一原因只是为了利用社区力量使其更强大,更进一步。非常欢迎任何人在任何功能上做出贡献!

🧙‍♂️预训练模型

骨干 输入 八月 AP 美联社 转数快 权重
稀疏的Inst R-50型 640 32.8 - 44.3
稀疏的Inst R-50-vd 640 34.1 - 42.6
SparseInst (G-IAM) R-50型 608 33.4 - 44.6
SparseInst (G-IAM) R-50型 608 34.2 34.7 44.6
SparseInst (G-IAM) R-50-断续器 608 36.4 36.8 41.6
SparseInst (G-IAM) R-50-vd 608 35.6 36.1 42.8
SparseInst (G-IAM) R-50-vd-DCN 608 37.4 37.9 40.0
SparseInst (G-IAM) R-50-vd-DCN 640 37.7 38.1 39.3
稀疏因斯特 Int8 onnx 谷歌驱动器

🧙‍♂️在 YOLOv7 中训练的模型

骨干 输入 八月 美联社 亚太50 接入点 转数快 权重
YoloFormer-Convnext-tiny Convnext-tiny 800 43 63.7 26.5 39.3
YOLOX-s - 800 40.5 - - 39.3

注意:我们在这里发布AP-s,因为我们想知道小对象在相关模型中的性能如何,对于基于变压器骨干的模型,小AP明显更高!上述模型中的一些可能没有开源,但我们提供了权重

🥰演示

运行一个快速演示,如下所示:

python3 demo.py --config-file configs/wearmask/darknet53.yaml --input ./datasets/wearmask/images/val2017 --opts MODEL.WEIGHTS output/model_0009999.pth

运行快速演示以上传和探索使用权重和偏差的YOLOv7预测。有关示例,请参阅此处

python3 demo.py --config-file configs/wearmask/darknet53.yaml --input ./datasets/wearmask/images/val2017 --wandb-entity <your-username/team> --wandb-project <project-name> --opts MODEL.WEIGHTS output/model_0009999.pth

Run SparseInst:

python demo.py --config-file configs/coco/sparseinst/sparse_inst_r50vd_giam_aug.yaml --video-input ~/Movies/Videos/86277963_nb2-1-80.flv -c 0.4 --opts MODEL.WEIGHTS weights/sparse_inst_r50vd_giam_aug_8bc5b3.pth

基于 detectron2 新引入的 LazyConfig 系统的更新,使用 LazyConfig 模型运行,使用

python3 demo_lazyconfig.py --config-file configs/new_baselines/panoptic_fpn_regnetx_0.4g.py --opts train.init_checkpoint=output/model_0004999.pth

😎火车

对于训练,非常简单,与 detectron2 相同:

python train_net.py --config-file configs/coco/darknet53.yaml --num-gpus 8

如果你想训练YOLOX,你可以使用配置文件。所有支撑拱是:

configs/coco/yolox_s.yaml

  • YOLOX:锚免费YOLO;
  • YOLOv7:传统的yolo带有一些探索,主要集中在损失实验上;
  • YOLOv7P:传统的YOLO与YOLOX的体面拱门合并;
  • YOLOMask:arch同时做检测和分割(待定);
  • YOLOInsSeg:基于YOLO检测(待定)的实例分割;

😎规则

如果要在自己的数据集上进行训练,则必须遵循一些规则:

  • 规则1:始终在数据集上设置自己的锚点,使用,这也适用于任何其他基于锚点的检测方法(EfficientDet等);
    tools/compute_anchors.py
  • 规则2:对你的损失保持信心最终会下降,如果没有,请深入挖掘找出原因(但不要发布重复导致我可能也不知道的问题)。
  • 规则3:没有人会告诉你,但它是真实的:不要轻易改变骨干,整个参数加上你的骨干,不要认为它像你认为的那样简单,而且深度学习工程师也不是你想象的那么容易,整个知识就像海洋一样,你的知识只是一小滴水......
  • 规则4:基于transoformer的主干必须使用预训练权重,否则你的损失会凸显;

在向我提出任何问题之前,请确保你已经阅读了规则

🔨Export ONNX && TensorRTT && TVM

  1. detr
    :
python export.py --config-file detr/config/file

这项工作已经完成,推理脚本包含在里面。

tools

  1. AnchorDETR
    :

anchorDETR还支持训练和导出到ONNX。

  1. SparseInst
    :稀疏已经支持导出到onnx!!
python export.py --config-file configs/coco/sparseinst/sparse_inst_r50_giam_aug.yaml --video-input ~/Videos/a.flv  --opts MODEL.WEIGHTS weights/sparse_inst_r50_giam_aug_2b7d68.pth INPUT.MIN_SIZE_TEST 512

如果你使用的是 CPU 设备,请使用:

python export.py --config-file configs/coco/sparseinst/sparse_inst_r50_giam_aug.yaml --input images/COCO_val2014_000000002153.jpg --verbose  --opts MODEL.WEIGHTS weights/sparse_inst_r50_giam_aug_2b7d68.pth MODEL.DEVICE 'cpu'

然后你可以生成,这个onnx可以使用ORT进行推理,而没有任何不受支持的操作。

weights/sparse_inst_r50_giam_aug_2b7d68_sim.onnx

🤒️性能

以下是与其他软件包的专用性能比较。

待定。

🪜支持一些微小的对象数据集

  • 戴面具:支持VOC,Yolo,coco 3格式。你可以在此处使用可可格式。下载自: 链接: https://pan.baidu.com/s/1ozAgUFLqfTXLp-iOecddqQ 提取码: xgep .用于训练此数据集。
    configs/wearmask
  • 更多:去。

👋检测结果

图像 检测

😯迪库森集团

微信 在线客服
图像.png 图像.png
  • 如果微信过期,请通过github问题与我联系更新。组进行一般性讨论,不仅为yolov7。

🀄️一些 Exp 可视化

网格掩码 马赛克

©️许可证

代码在 GPL 许可证下发布。请在将更改公开或商业用途之前将请求拉取到此源存储库。金磊保留所有权利。