写点什么

One-YOLOv5 v1.2.0 发布:支持分类、检测、实例分割

作者:OneFlow
  • 2023-03-11
    重庆
  • 本文字数:2064 字

    阅读完需:约 7 分钟

One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割

One-YOLOv5 v1.2.0 正式发布。完整更新列表请查看链接:https://github.com/Oneflow-Inc/one-yolov5/releases/tag/v1.2.0,欢迎体验新版本,期待你的反馈。


1

新版本特性


1. 同步了 Ultralytics YOLOv5 的上游分支 v7.0,同时支持分类、目标检测、实例分割任务

2. 支持 flask_rest_api

3. 支持使用 wandb 对实验跟踪和可视化功能 

4. oneflow_hub_support_pilimage 

5.为每个 batch 的 compute_loss 部分减少一次 h2d 和 cpu slice_update 操作 

6. 优化 bbox_iou 函数和模型滑动平均部分,大幅提升训练性能 (一块RTX 3090加速训练YOLOv5s,时间减少11个小时,速度提升20%)

7. 兼容 FlowFlops,训练时可以展示模型的 FLOPs 

(基于 Flowflops 详解深度学习网络的 FLOPs 和 MACs 计算方案)



2

快速开始


安装


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


git clone https://github.com/Oneflow-Inc/one-yolov5  # 克隆cd one-yolov5pip install -r requirements.txt  # 安装
复制代码


  • 检测模型训练示例:https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/quick_start.html#_4

  • 分割和分类模型训练示例:https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/model_train.html


3

在 COCO 上的精度表现


yolov5s-default

启动指令:

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



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
复制代码


4

在 COCO 上的单 GPU 性能表现



测试环境

- 机器  ( 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 # 使用fp32python \ train.py \ --batch-size 8 \ --data coco.yaml \ --weights ' ' \ --cfg models/yolov5s.yaml \ --img 640 \ --epochs 1 \
export NVIDIA_TF32_OVERRIDE=0 # 使用fp32python segment/train.py \ --data coco.yaml \ --weights ' ' \ --cfg models/segment/yolov5s-seg.yaml \ --img 640 \ --epochs 1 \ --batch-size 8
复制代码


5

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(https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/intro_to_wandb.html)

5. CUDA_VISIBLE_DEVICES 环境变量设置放在 import oneflow 之后会失败,导致 device 选择失败,可以通过 export CUDA_VISIBLE_DEVICES=1 手动控制。

6. autobatch 功能

OneFlow 缺少 memory_reserved API,我们会尽快补齐,现在需要先手动指定下 batch_size。下个版本将会解决并且会直接支持导出 batch 维度为动态的模型。


下个版本的展望


  • 继续提升 One-YOLOv5 单卡模式的训练速度

  • 解决目前训练时显存比 Ultralytics 偏大的问题

  • CPU 模式下支持 ONNX 模型的导出

  • OneFlow 研发的 amp train 目前已经开发完成正在测试中,下个版本将合并进 main 分支

  • autobatch 功能


常用预训练模型下载列表



其他人都在看

GPT-3/ChatGPT复现的经验教训

超越ChatGPT:大模型的智能极限

YOLOv5解析教程:计算mAP用到的Numpy函数

ChatGPT作者Schulman:我们成功的秘密武器

比快更快,开源Stable Diffusion刷新作图速度

OneEmbedding:单卡训练TB级推荐模型不是梦

GLM训练加速:性能最高提升3倍,显存节省1/3


欢迎 Star、试用 OneFlow 最新版本:https://github.com/Oneflow-Inc/oneflow/

发布于: 刚刚阅读数: 4
用户头像

OneFlow

关注

不至于成为世界上最快的深度学习框架。 2022-03-23 加入

★ OneFlow深度学习框架:github.com/Oneflow-Inc/oneflow ★ OF云平台:oneflow.cloud

评论

发布
暂无评论
One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割_人工智能_OneFlow_InfoQ写作社区