关于人工智能:OneYOLOv5-v120发布支持分类检测实例分割

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操作
  5. 优化 bbox_iou 函数和模型滑动均匀局部,大幅晋升训练性能 (一块RTX 3090减速训练YOLOv5s,工夫缩小11个小时,速度晋升20%)
  6. 兼容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-yolov5
pip install -r requirements.txt  # 装置
  • 检测模型训练示例:https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapt…
  • 宰割和分类模型训练示例:https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapt…

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模型进行部署时代码有谬误。

  1. 让batch维度能够动静,加了dynamic参数?

临时不反对该参数,能够本人编辑ONNX模型。相干教程请参考:https://github.com/Oneflow-Inc/one-yolov5/releases/download/v1.2.0_/openmmlab.pptx

  1. 模型导出onnx时,呈现 /tmp/oneflow_model322 相似报错。

OneFlow新老版本兼容性问题。这是旧版本创立的文件然而没清理,删除就能够解决。

  1. 为训练过程loss、map、检测框等可视化适配了wandb(https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapt…)
  2. CUDA_VISIBLE_DEVICES环境变量设置放在import oneflow之后会失败,导致device抉择失败,能够通过export CUDA_VISIBLE_DEVICES=1 手动管制。
  3. autobatch性能

OneFlow短少memory_reserved API,咱们会尽快补齐,当初须要先手动指定下batch_size。下个版本将会解决并且会间接反对导出batch维度为动静的模型。

下个版本的瞻望

  • 持续晋升One-YOLOv5单卡模式的训练速度
  • 解决目前训练时显存比Ultralytics偏大的问题
  • CPU模式下反对ONNX模型的导出
  • OneFlow研发的amp train目前曾经开发实现正在测试中,下个版本将合并进main分支
  • autobatch性能

罕用预训练模型下载列表

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理