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

Posted OneFlow深度学习框架

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 计算方案)

原图

目标检测: 目标检测是指从图像中检测出多个物体并标记它们的位置和类别。目标检测任务需要给出物体的类别和位置信息,通常使用边界框(bounding box)来表示。目标检测可以应用于自动驾驶、视频监控、人脸识别等领域。

图像分类:  图像分类是指给定一张图像,通过计算机视觉技术来判断它属于哪一类别。图像分类是一种有监督学习任务,需要通过训练样本和标签来建立分类模型。在图像分类中,算法需要提取图像的特征,然后将其分类为预定义的类别之一。例如,图像分类可以用于识别手写数字、识别动物、区分汽车和自行车等。

实例分割: 实例分割是指从图像中检测出多个物体并标记它们的位置和类别,同时对每个物体进行像素级的分割。实例分割要求更为精细的信息,因为它需要将物体的每个像素都分配给对应的物体。实例分割可以应用于医学影像分析、自动驾驶、虚拟现实等领域。

2

快速开始

安装

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  # 安装
  • 检测模型训练示例:

    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 # 使用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

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功能

常用预训练模型下载列表

其他人都在看

欢迎Star、试用OneFlow新版本:GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient. - GitHub - Oneflow-Inc/oneflow: OneFlow is a deep learning framework designed to be user-friendly, scalable and efficient.https://github.com/Oneflow-Inc/oneflow/

Disable checkingPremium suggestions

以上是关于One-YOLOv5 v1.2.0发布:支持分类检测实例分割的主要内容,如果未能解决你的问题,请参考以下文章

魔众相册系统 v1.2.0 系统内核升级,界面显示优化

数据源新增支持SQL Server和PostgreSQL,DataEase开源数据可视化分析平台v1.2.0发布

投稿系统 v1.2.0 默认文章封面 内核升级优化

DockQuery 天狼 v1.2.0 正式发布

魔众网盘系统 v1.2.0 后台界面优化,系统常规升级

Koordinator 一周年,新版本 v1.2.0 支持节点资源预留,兼容社区重调度策略