yolov9

yolov9

高效准确的目标检测算法

YOLOv9是一种新型目标检测算法,采用可编程梯度信息技术提高学习能力。该开源项目提供YOLOv9的官方实现,包含预训练模型、训练评估脚本和使用文档。在COCO数据集上,YOLOv9展现出优异的检测性能,同时保持较低的模型复杂度。研究人员和开发者可利用这一工具进行高效准确的目标检测任务。

YOLOv9目标检测深度学习计算机视觉神经网络Github开源项目

YOLOv9

论文《YOLOv9: 使用可编程梯度信息学习你想学的内容》的实现

arxiv.org Hugging Face Spaces Hugging Face Spaces Colab OpenCV

<div align="center"> <a href="./"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/7d7ad80b-5d3f-4b35-9907-b3921dadd974.png" width="79%"/> </a> </div>

性能

MS COCO

模型测试尺寸AP<sup>验证集</sup>AP<sub>50</sub><sup>验证集</sup>AP<sub>75</sub><sup>验证集</sup>参数量FLOPs
YOLOv9-T64038.3%53.1%41.3%2.0M7.7G
YOLOv9-S64046.8%63.4%50.7%7.1M26.4G
YOLOv9-M64051.4%68.1%56.1%20.0M76.3G
YOLOv9-C64053.0%70.2%57.8%25.3M102.1G
YOLOv9-E64055.6%72.8%60.6%57.3M189.0G

有用链接

<details><summary> <b>展开</b> </summary>

自定义训练: https://github.com/WongKinYiu/yolov9/issues/30#issuecomment-1960955297

ONNX导出: https://github.com/WongKinYiu/yolov9/issues/2#issuecomment-1960519506 https://github.com/WongKinYiu/yolov9/issues/40#issue-2150697688 https://github.com/WongKinYiu/yolov9/issues/130#issue-2162045461

分割任务的ONNX导出: https://github.com/WongKinYiu/yolov9/issues/260#issue-2191162150

TensorRT推理: https://github.com/WongKinYiu/yolov9/issues/143#issuecomment-1975049660 https://github.com/WongKinYiu/yolov9/issues/34#issue-2150393690 https://github.com/WongKinYiu/yolov9/issues/79#issue-2153547004 https://github.com/WongKinYiu/yolov9/issues/143#issue-2164002309

QAT TensorRT: https://github.com/WongKinYiu/yolov9/issues/327#issue-2229284136 https://github.com/WongKinYiu/yolov9/issues/253#issue-2189520073

分割任务的TensorRT推理: https://github.com/WongKinYiu/yolov9/issues/446

TFLite: https://github.com/WongKinYiu/yolov9/issues/374#issuecomment-2065751706

OpenVINO: https://github.com/WongKinYiu/yolov9/issues/164#issue-2168540003

C# ONNX推理: https://github.com/WongKinYiu/yolov9/issues/95#issue-2155974619

C# OpenVINO推理: https://github.com/WongKinYiu/yolov9/issues/95#issuecomment-1968131244

OpenCV: https://github.com/WongKinYiu/yolov9/issues/113#issuecomment-1971327672

Hugging Face演示: https://github.com/WongKinYiu/yolov9/issues/45#issuecomment-1961496943

CoLab演示: https://github.com/WongKinYiu/yolov9/pull/18

ONNXSlim导出: https://github.com/WongKinYiu/yolov9/pull/37

YOLOv9 ROS: https://github.com/WongKinYiu/yolov9/issues/144#issue-2164210644

YOLOv9 ROS TensorRT: https://github.com/WongKinYiu/yolov9/issues/145#issue-2164218595

YOLOv9 Julia: https://github.com/WongKinYiu/yolov9/issues/141#issuecomment-1973710107

YOLOv9 MLX: https://github.com/WongKinYiu/yolov9/issues/258#issue-2190586540

YOLOv9 StrongSORT与OSNet: https://github.com/WongKinYiu/yolov9/issues/299#issue-2212093340

YOLOv9 ByteTrack: https://github.com/WongKinYiu/yolov9/issues/78#issue-2153512879

YOLOv9 DeepSORT: https://github.com/WongKinYiu/yolov9/issues/98#issue-2156172319

YOLOv9计数: https://github.com/WongKinYiu/yolov9/issues/84#issue-2153904804

YOLOv9速度估计: https://github.com/WongKinYiu/yolov9/issues/456

YOLOv9人脸检测: https://github.com/WongKinYiu/yolov9/issues/121#issue-2160218766

YOLOv9分割onnxruntime: https://github.com/WongKinYiu/yolov9/issues/151#issue-2165667350

Comet日志记录: https://github.com/WongKinYiu/yolov9/pull/110

MLflow日志记录: https://github.com/WongKinYiu/yolov9/pull/87

AnyLabeling工具: https://github.com/WongKinYiu/yolov9/issues/48#issue-2152139662

AX650N部署: https://github.com/WongKinYiu/yolov9/issues/96#issue-2156115760

Conda环境: https://github.com/WongKinYiu/yolov9/pull/93

AutoDL docker环境: https://github.com/WongKinYiu/yolov9/issues/112#issue-2158203480

</details>

安装

Docker环境(推荐)

<details><summary> <b>展开</b> </summary>
# 创建docker容器,如果你有更多内存可以更改共享内存大小 nvidia-docker run --name yolov9 -it -v your_coco_path/:/coco/ -v your_code_path/:/yolov9 --shm-size=64g nvcr.io/nvidia/pytorch:21.11-py3 # apt安装必要的包 apt update apt install -y zip htop screen libgl1-mesa-glx # pip安装必要的包 pip install seaborn thop # 进入代码文件夹 cd /yolov9
</details>

评估

yolov9-s-converted.pt yolov9-m-converted.pt yolov9-c-converted.pt yolov9-e-converted.pt yolov9-s.pt yolov9-m.pt yolov9-c.pt yolov9-e.pt gelan-s.pt gelan-m.pt gelan-c.pt gelan-e.pt

# 评估转换后的yolov9模型 python val.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './yolov9-c-converted.pt' --save-json --name yolov9_c_c_640_val # 评估yolov9模型 # python val_dual.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './yolov9-c.pt' --save-json --name yolov9_c_640_val # 评估gelan模型 # python val.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './gelan-c.pt' --save-json --name gelan_c_640_val

你将得到以下结果:

 平均精度 (AP) @[ IoU=0.50:0.95 | 面积=   所有 | 最大检测数=100 ] = 0.530
 平均精度 (AP) @[ IoU=0.50      | 面积=   所有 | 最大检测数=100 ] = 0.702
 平均精度 (AP) @[ IoU=0.75      | 面积=   所有 | 最大检测数=100 ] = 0.578
 平均精度 (AP) @[ IoU=0.50:0.95 | 面积=   小   | 最大检测数=100 ] = 0.362
 平均精度 (AP) @[ IoU=0.50:0.95 | 面积=   中   | 最大检测数=100 ] = 0.585
 平均精度 (AP) @[ IoU=0.50:0.95 | 面积=   大   | 最大检测数=100 ] = 0.693
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   所有 | 最大检测数=  1 ] = 0.392
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   所有 | 最大检测数= 10 ] = 0.652
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   所有 | 最大检测数=100 ] = 0.702
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   小   | 最大检测数=100 ] = 0.541
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   中   | 最大检测数=100 ] = 0.760
 平均召回率 (AR) @[ IoU=0.50:0.95 | 面积=   大   | 最大检测数=100 ] = 0.844

训练

数据准备

bash scripts/get_coco.sh
  • 下载MS COCO数据集图像(训练集验证集测试集)和标签。如果你之前使用过不同版本的YOLO,我们强烈建议你删除train2017.cacheval2017.cache文件,并重新下载标签

单GPU训练

# 训练yolov9模型 python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 # 训练gelan模型 # python train.py --workers 8 --device 0 --batch 32 --data data/coco.yaml --img 640 --cfg models/detect/gelan-c.yaml --weights '' --name gelan-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15

多GPU训练

# 训练yolov9模型 python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train_dual.py --workers 8 --device 0,1,2,3,4,5,6,7 --sync-bn --batch 128 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 # 训练gelan模型 # python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch 128 --data data/coco.yaml --img 640 --cfg models/detect/gelan-c.yaml --weights '' --name gelan-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15

重参数化

参见 reparameterization.ipynb

推理

<div align="center"> <a href="./"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/83136956-a1d6-4990-b6e8-323204da5867.jpg" width="49%"/> </a> </div>
# 使用转换后的yolov9模型进行推理 python detect.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './yolov9-c-converted.pt' --name yolov9_c_c_640_detect # 使用yolov9模型进行推理 # python detect_dual.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './yolov9-c.pt' --name yolov9_c_640_detect # 使用gelan模型进行推理 # python detect.py --source './data/images/horses.jpg' --img 640 --device 0 --weights './gelan-c.pt' --name gelan_c_c_640_detect

引用

@article{wang2024yolov9,
  title={{YOLOv9}: 使用可编程梯度信息学习你想学习的内容},
  author={Wang, Chien-Yao  and Liao, Hong-Yuan Mark},
  booktitle={arXiv preprint arXiv:2402.13616},
  year={2024}
}
@article{chang2023yolor,
  title={基于{YOLOR}的多任务学习},
  author={Chang, Hung-Shuo and Wang, Chien-Yao and Wang, Richard Robert and Chou, Gene and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2309.16921},
  year={2023}
}

预告

基于YOLOR的多任务学习的部分代码已在此仓库中发布。

<div align="center"> <a href="./"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/b1738715-6c3f-43d4-943e-cb759303bb4f.png" width="99%"/> </a> </div>

目标检测

gelan-c-det.pt

目标检测

# coco/labels/{split}/*.txt # 边界框或多边形(每个实例占一行) python train.py --workers 8 --device 0 --batch 32 --data data/coco.yaml --img 640 --cfg models/detect/gelan-c.yaml --weights '' --name gelan-c-det --hyp hyp.scratch-high.yaml --min-items 0 --epochs 300 --close-mosaic 10
模型测试尺寸参数量FLOPsAP<sup>box</sup>
GELAN-C-DET64025.3M102.1G52.3%
YOLOv9-C-DET64025.3M102.1G53.0%

实例分割

gelan-c-seg.pt

目标检测 实例分割

# coco/labels/{split}/*.txt # 多边形(每个实例占一行) python segment/train.py --workers 8 --device 0 --batch 32 --data coco.yaml --img 640 --cfg models/segment/gelan-c-seg.yaml --weights '' --name gelan-c-seg --hyp hyp.scratch-high.yaml --no-overlap --epochs 300 --close-mosaic 10
模型测试尺寸参数量FLOPsAP<sup>box</sup>AP<sup>mask</sup>
GELAN-C-SEG64027.4M144.6G52.3%42.4%
YOLOv9-C-SEG64027.4M145.5G53.3%43.5%

全景分割

gelan-c-pan.pt

目标检测 实例分割 语义分割 场景分割 全景分割

# coco/labels/{split}/*.txt # 多边形(每个实例占一行) # coco/stuff/{split}/*.txt # 多边形(每个语义类别占一行) python panoptic/train.py --workers 8 --device 0 --batch 32 --data coco.yaml --img 640 --cfg models/panoptic/gelan-c-pan.yaml --weights '' --name gelan-c-pan --hyp hyp.scratch-high.yaml --no-overlap --epochs 300 --close-mosaic 10
模型测试尺寸参数量浮点运算量AP<sup></sup>AP<sup>掩码</sup>mIoU<sub>164k/10k</sub><sup>语义</sup>mIoU<sup>物体</sup>PQ<sup>全景</sup>
GELAN-C-PAN64027.6M146.7G52.6%42.5%39.0%/48.3%52.7%39.4%
YOLOv9-C-PAN64028.8M187.0G52.7%43.0%39.8%/-52.2%40.5%

图像描述(尚未发布)

<!--[`gelan-c-cap.pt`]()-->

目标检测 实例分割 语义分割 物体分割 全景分割 图像描述

# coco/labels/{split}/*.txt # 多边形 (每行1个实例) # coco/stuff/{split}/*.txt # 多边形 (每行1个语义) # coco/annotations/*.json # json (每个分割1个文件) python caption/train.py --workers 8 --device 0 --batch 32 --data coco.yaml --img 640 --cfg models/caption/gelan-c-cap.yaml --weights '' --name gelan-c-cap --hyp hyp.scratch-high.yaml --no-overlap --epochs 300 --close-mosaic 10
模型测试尺寸参数量浮点运算量AP<sup></sup>AP<sup>掩码</sup>mIoU<sub>164k/10k</sub><sup>语义</sup>mIoU<sup>物体</sup>PQ<sup>全景</sup>BLEU@4<sup>描述</sup>CIDEr<sup>描述</sup>
GELAN-C-CAP64047.5M-51.9%42.6%42.5%/-56.5%41.7%38.8122.3
YOLOv9-C-CAP64047.5M-52.1%42.6%43.0%/-56.4%42.1%39.1122.0

致谢

<详情><摘要> <b>展开</b> </摘要>

</详情>

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多