Project Icon

yolov9

高效准确的目标检测算法

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

YOLOv9

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

arxiv.org Hugging Face Spaces Hugging Face Spaces Colab OpenCV

性能

MS COCO

模型测试尺寸AP验证集AP50验证集AP75验证集参数量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

有用链接

展开

自定义训练: 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

安装

Docker环境(推荐)

展开
# 创建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

评估

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

推理

# 使用转换后的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的多任务学习的部分代码已在此仓库中发布。

目标检测

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
模型测试尺寸参数量FLOPsAPbox
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
模型测试尺寸参数量FLOPsAPboxAPmask
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
模型测试尺寸参数量浮点运算量APAP掩码mIoU164k/10k语义mIoU物体PQ全景
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%

图像描述(尚未发布)

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

# 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
模型测试尺寸参数量浮点运算量APAP掩码mIoU164k/10k语义mIoU物体PQ全景BLEU@4描述CIDEr描述
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

致谢

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

</详情>

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号