One-YOLOv5 v1.2.0 Released(支持分类,检测,实例分割)

  • 0x0. 引言
  • 0x1. 快速开始
  • 0x2. 在COCO上的精度表现
    • yolov5s-default
    • yolov5s-seg
  • 0x3. 在COCO上的单GPU性能表现
  • 特性 & bug 修复
    • 特性
    • 用户反馈的bug
  • 下个版本的展望
  • 附件
  • 常用预训练模型下载列表

0x0. 引言

  • 🌟 v1.2.0同步了ultralytics yolov5的上游分支v7.0 ,同时支持分类,目标检测,实例分割任务
原图 目标检测: 目标检测是指从图像中检测出多个物体并标记它们的位置和类别。目标检测任务需要给出物体的类别和位置信息,通常使用边界框(bounding box)来表示。目标检测可以应用于自动驾驶、视频监控、人脸识别等领域。
图像分类: 图像分类是指给定一张图像,通过计算机视觉技术来判断它属于哪一类别。 图像分类是一种有监督学习任务,需要通过训练样本和标签来建立分类模型。在图像分类中,算法需要提取图像的特征,然后将其分类为预定义的类别之一。例如,图像分类可以用于识别手写数字、识别动物、区分汽车和自行车等。 实例分割: 实例分割是指从图像中检测出多个物体并标记它们的位置和类别,同时对每个物体进行像素级的分割。 实例分割要求更为精细的信息,因为它需要将物体的每个像素都分配给对应的物体。 实例分割可以应用于医学影像分析、自动驾驶、虚拟现实等领域。

0x1. 快速开始

安装

Python>=3.7.0 的环境中克隆版本仓并安装 requirements.txt,包括 OneFlow nightly 或者 oneflow>=0.9.0 。

git clone https://github.com/Oneflow-Inc/one-yolov5  # 克隆
cd one-yolov5
pip install -r requirements.txt  # 安装
  • 检测模型训练示例
  • 分割和分类模型训练示例

0x2. 在COCO上的精度表现

yolov5s-default

后端GPUmetrics/mAP_0.5,metrics/mAP_0.5:0.95,wandb 日志
OneFlow437.65956.992One-YOLOv5s-default
PyTorch137.6556.663YOLOV5s-default

数据 results.txt

启动指令:
python -m oneflow.distributed.launch --nproc_per_node 4  \ 
train.py --batch-size 128 --data coco.yaml --weights " " --cfg models/yolov5s.yaml --img 640 --epochs 300

yolov5s-seg

后端GPUmAP_0.5:0.95(B)mAP_0.5:0.95(M)wandb 日志
OneFlow837.55831.402One-YOLOv5s-seg_v1.2.0
PyTorch137.70531.651YOLOV5s-seg
OneFlow后端启动指令
python -m oneflow.distributed.launch --nproc_per_node  8  \
    segment/train.py \
    --data coco.yaml \
    --weights ' ' \
    --cfg yolov5s-seg.yaml   \
    --img 640  \
    --batch-size 320    \
    --device 0,1,2,4      \
    --epochs 300  \
    --bbox_iou_optim --multi_tensor_optimize 

0x3. 在COCO上的单GPU性能表现

单卡ampepochgpubatch数据集模型time(min)
OneFlowFalse118cocoyolov5s-default18:49
PyTorchFalse118cocoyolov5s-default21:56
OneFlowFalse1116cocoyolov5s-default14:34
PyTorchFalse1116cocoyolov5s-default17:46
OneFlowFalse118cocoyolov5s-seg25:36
PyTorchFalse118cocoyolov5s-seg33:16
OneFlowFalse1116cocoyolov5s-seg24:07
PyTorchFalse1116cocoyolov5s-seg29:55
测试环境
- 机器  ( 8GPU  NVIDIA GeForce RTX 3090, 24268MiB)
-  oneflow.__version__= '0.9.1+cu117
- torch.__version__= '1.13.0+cu117'
- export NVIDIA_TF32_OVERRIDE=0  # PyTorch使用FP32训练 


# 测试指令:
# OneFlow后端
python   train.py \
    --batch-size 8 \
    --data coco.yaml \
    --weights ' ' \
    --cfg models/yolov5s.yaml \
    --img 640 \
    --epochs 1  \
    --bbox_iou_optim --multi_tensor_optimize

python segment/train.py \
    --data coco.yaml \
    --weights ' ' \
    --cfg  models/segment/yolov5s-seg.yaml \
    --img 640 \
    --batch-size 8
    --epochs 1 \
    --bbox_iou_optim --multi_tensor_optimize 

# PyTorch后端:
export NVIDIA_TF32_OVERRIDE=0 # 使用fp32
python  \
    train.py \
    --batch-size 8 \
    --data coco.yaml \
    --weights ' ' \
    --cfg models/yolov5s.yaml \
    --img 640 \
    --epochs 1  \

export NVIDIA_TF32_OVERRIDE=0 # 使用fp32
python segment/train.py \
    --data coco.yaml \
    --weights ' ' \
    --cfg  models/segment/yolov5s-seg.yaml \
    --img 640 \
    --epochs 1 \
    --batch-size 8

特性 & bug 修复

特性

01 同时支持分类,目标检测,实例分割任务 分割和分类模型训练示例
检测模型训练示例 02 支持flask_rest_api 使用flask_rest_api示例 03 支持使用 wandb 对实验跟踪和可视化功能 使用coco128数据集 对 wandb 集成可视化测试示例
操作指南 04 oneflow_hub_support_pilimage 操作指南 05 为每个batch的compute_loss部分减少一次h2d和cpu slice_update操作 pr: optim_slice_update_in_compute_loss 06 优化 bbox_iou 函数和模型滑动平均部分,大幅提升训练性能 消费级显卡的春天,GTX 3090 YOLOv5s单卡完整训练COCO数据集缩短11.35个小时 07 兼容FlowFlops,训练时可以展示模型的FLOPs 基于 Flowflops 详解深度学习网络的 FLOPs 和 MACs 计算方案

用户反馈的bug

记录了一些用户反馈的常见问题

  1. 出现满屏的误检框, 可能到原因场景太单一,泛化不够 ,更多可见我们关于 如何准备一个好的数据集介绍 或者导出onnx模型进行部署时代码有错误。

  2. 这个应该是让batch维度可以动态 你加了dynamic参数? 暂时不支持该参数,可以自己编辑onnx模型。相关教程请参考: https://github.com/Oneflow-Inc/one-yolov5/releases/download/v1.2.0_/openmmlab.pptx

  3. 模型导出onnx时,出现 /tmp/oneflow_model322 类似报错。oneflow新老版本兼容性问题:因为这个是之前旧版本创建的文件但是没清理,删了就可以解决了。

  4. 训练过程loss,map,检测框等可视化 我们适配了wandb

  5. device选择这里因为CUDA_VISIBLE_DEVICES环境变量设置放在import oneflow之后会失败,导致device选择失败了,可以export CUDA_VISIBLE_DEVICES=1 这样子手动控制下。

  6. autobatch功能 oneflow这边缺少个memory_reserved api ,我们会尽快补齐这个api,现在还是先手动指定下batch_size, 我们将在下个版本解决并且会直接支持导出batch维度为动态的模型。

下个版本的展望

  • 继续提升one-yolov5单卡模式的训练速度。
  • 解决目前训练时显存比 ultralytics 偏大的问题。
  • cpu模式下也支持onnx模型的导出。
  • OneFlow 研发的amp train目前已经开发完成正在测试中,下个版本将合并进main分支。
  • autobatch功能 。

附件

常用预训练模型下载列表

ModelSize(MB)ModelSize(MB)ModelSize(MB)ModelSize(MB)
yolov5n3.87MByolov5n66.86MByolov5n-cls4.87MByolov5n-seg4.11MB
yolov5s14.12MByolov5s624.78MByolov5s-cls10.52MByolov5s-seg14.87MB
yolov5m40.82MByolov5m668.96MByolov5m-cls24.89MByolov5m-seg42.36MB
yolov5l89.29MByolov5l6147.36MByolov5l-cls50.88MByolov5l-seg91.9MB
yolov5x166.05MByolov5x6269.62MByolov5x-cls92.03MByolov5x-seg170.01MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/1357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端入门:HTML5+CSS3+JAAVASCRIPT

1、 初识HTML HTML:Hyper Text Markup Language(超文本标记语言) 。 超文本包括&#xff1a;文字、图片、音频、视频、动画等。 1.1、W3C标准 1.2、HTML基本结构 示例&#xff1a; <!-- DOCTYPE:告诉浏览器&#xff0c;我们要使用什么规划&#xff0c;这里是HTML --> …

IDAFrida

IDA&Frida 前言 偶然间发现了一本秘籍《IDA脚本开发之旅》&#xff0c;这是白龙的系列文章&#xff0c;主要是安卓平台&#xff0c;笔者只是根据他的知识点学习&#xff0c;拓展&#xff0c;可以会稍微提及别的平台。本文并不会贴出他的思路分析&#xff0c;只对于源码进…

C语言实现单链表(超多配图,这下不得不学会单链表了)

目录 一&#xff1a;什么是链表&#xff1f; 二&#xff1a;创建源文件和头文件 (1)头文件 (2)源文件 三&#xff1a;实参和形参 四&#xff1a;一步步实现单向链表 &#xff08;1&#xff09;建立一个头指针并置空 &#xff08;2&#xff09;打印链表&#xff0c;便于…

*p++,*(p++),*++p,(*p)++区别?

*p++:等同于:*p; p += 1; 解析:由于和++的运算优先级一样,且是右>结合。故p++相当于*(p++),p先与++结合,>然后p++整体再与结合。前面陈述是一种最 常见的错误,很多初学者也是这么理解的。 但是,因为++后置的时候,本身含义就是先 运算后增加1(运算指的是p++作为…

GPT-4最震撼我的一点

昨天我看了一遍OpenAI发的视频和论文&#xff0c;最震撼我的并不是根据手绘草图生成HTML页面代码&#xff0c;因为草图太简单&#xff0c;对于复杂的有交互的界面&#xff0c;还不知道它的能力究竟如何&#xff0c;能不能生成准确的、清晰的代码&#xff0c;我再实验一下再给大…

C实现栈及OJ题有效的括号

文章目录栈概念及基本操作源码OJ题括号匹配栈概念及基本操作 栈也同链表和顺序表一样是一种线性表只是比较特殊而已&#xff0c;栈遵循一种先进后出的原则,其实栈就像生活中的叠盘子一样&#xff0c;将盘子一个一个的叠起来&#xff0c;每次都只能在最顶层叠&#xff0c;然后取…

ElasticSearch快速入门详解(亲测好用,强烈推荐收藏)

3.快速入门 接下来快速看下elasticsearch的使用 3.1.概念 Elasticsearch虽然是一种NoSql库&#xff0c;但最终的目的是存储数据、检索数据。因此很多概念与MySQL类似的。 ES中的概念数据库概念说明索引库&#xff08;indices)数据库&#xff08;Database&#xff09;ES中可…

聊聊「订单」业务的设计与实现

订单&#xff0c;业务的核心模块&#xff1b; 一、背景简介 订单业务一直都是系统研发中的核心模块&#xff0c;订单的产生过程&#xff0c;与系统中的很多模块都会高度关联&#xff0c;比如账户体系、支付中心、运营管理等&#xff0c;即便单看订单本身&#xff0c;也足够的复…

带你了解Redis及安装Redis的全过程

文章目录Redis是什么&#xff1f;官网介绍与传统的数据库的区别优势Redis下载安装Redis①配置gcc②开始安装redisRedis是什么&#xff1f; Redis&#xff1a;REmote Dictionary Server&#xff08;远程字典服务&#xff09;基于内存的Key—Value键值对内存数据库 官网介绍 R…

JVM学习.01 内存模型

1、前言对于C、C程序员来说&#xff0c;在内存管理领域&#xff0c;他们拥有对象的“所有权”。从对象建立到内存分配&#xff0c;不仅需要照顾到对象的生&#xff0c;还得照顾到对象的消亡。背负着每个对象生命开始到结束的维护和管理责任。对于JAVA程序来说&#xff0c;因为J…

第十四届蓝桥杯三月真题刷题训练——第 15 天

目录 第 1 题&#xff1a;斐波那契与7 问题描述 答案提交 运行限制 代码&#xff1a; 第 2 题&#xff1a;小蓝做实验 问题描述 答案提交 运行限制 代码&#xff1a; 第 1 题&#xff1a;斐波那契与7 问题描述 斐波那契数列的递推公式为: FnFn−1Fn−2​, 其中 F1F21…

【C#进阶】C# 索引器

序号系列文章13【C#进阶】C# 特性14【C#进阶】C# 反射15【C#进阶】C# 属性文章目录前言1、索引器的概念2、索引器的定义3、索引器的基本使用4、索引器的重载5、接口中的索引器6、属性和索引器之间的比较7、索引器的适用场景结语前言 &#x1f342; Hello大家好啊&#xff0c;我…

News乐鑫科技亮相德国嵌入式展 Embedded World 2023!

3 月 14 日&#xff0c;德国纽伦堡嵌入式展 Embedded World 2023 火热启幕。本届 Embedded World 主题为 “embedded. responsible. sustainable”&#xff0c;乐鑫科技 (688018.SH) 携众多 AIoT 科技成果亮相展会&#xff0c;致力于打造更智能、更互联、更绿色的物联网未来。…

Linux - 进程地址空间

引入在学习C语言的时候&#xff0c;内存包括栈区、堆区、静态区这个布局是内存吗&#xff1f; 不是&#xff01;&#xff01; 这是进程地址空间&#xff01;下面测试一下&#xff1a;11540是bash进程我们修改一下源程序&#xff0c;在观察下结果发现父进程的g_value的值不变&am…

TVS和稳压管的相同点和不同点

大家好,我是记得诚。 文章目录 介绍相同点不同点介绍 TVS和稳压管都是电路中很常用的电子元器件,都是二极管的一个种类。 TVS二极管全称是Transient voltage suppression diode,也叫瞬态电压抑制二极管。 稳压二极管英文名字Zener diode,又叫齐纳二极管。 关于稳压二极…

微信小程序项目实例——扫雷

今日推荐&#x1f481;‍♂️ 2023许嵩演唱会即将到来&#x1f3a4;&#x1f3a4;&#x1f3a4;大家一起冲冲冲&#x1f3c3;‍♂️&#x1f3c3;‍♂️&#x1f3c3;‍♂️ &#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;往期优质项目实例&#x1f52e…

win10下使用docker运行部署nginx,mysql

一、docker的步骤&#xff1a;1.进入docker官网下载安装包2.打开控制面板 - 程序和功能 - 启用或关闭Windows功能&#xff0c;勾选Hyper-V&#xff0c;然后点击确定即可&#xff0c;如图&#xff1a;3.重新启动电脑4.启动Docker在桌面找到Docker for Windows快捷方式&#xff0…

学习PCB设计前的知识扫盲

参考&#xff1a; 走进工厂&#xff1a;PCB线路板是如何制造出来的 学习PCB设计前的知识扫盲&#xff0c;新手向&#xff0c;越新手越好&#xff01; 下一步可继续学习简易的PCB绘制&#xff1a; 如何快速阅读芯片数据手册&#xff08;初学者和外行进&#xff09; 【完结】极简…

【Java】看看关于代码块的这些知识,你掌握了多少?

作者&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;算法、数据结构、Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】&#xff1b;该专栏专注于Java相关知识&#xff0c…

文心一言,通营销之学,成一家之言,百度人工智能AI大数据模型文心一言Python3.10接入

“文心”取自《文心雕龙》一书的开篇&#xff0c;作者刘勰在书中引述了一个古代典故&#xff1a;春秋时期&#xff0c;鲁国有一位名叫孔文子的大夫&#xff0c;他在学问上非常有造诣&#xff0c;但是他的儿子却不学无术&#xff0c;孔文子非常痛心。 一天&#xff0c;孔文子在…