One-YOLOv5 v1.2.0 正式公布。残缺更新列表请查看链接:https://github.com/Oneflow-Inc/one-yolov5/releases/tag/v1.2.0,欢送体验新版本,期待你的反馈。
1
新版本个性
- 同步了 Ultralytics YOLOv5 的上游分支 v7.0,同时反对分类、指标检测、实例宰割工作
- 反对 flask_rest_api
- 反对应用 wandb 对试验跟踪和可视化性能
- oneflow_hub_support_pilimage
5. 为每个 batch 的 compute_loss 局部缩小一次 h2d 和 cpu slice_update 操作 - 优化 bbox_iou 函数和模型滑动均匀局部,大幅晋升训练性能 (一块 RTX 3090 减速训练 YOLOv5s,工夫缩小 11 个小时,速度晋升 20%)
- 兼容 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 修复
以下记录了一些用户反馈的常见问题:
- 呈现满屏的误检框。
可能到起因场景太繁多,泛化不够,更多可见咱们对于如何筹备一个好的数据集的介绍或者导出 ONNX 模型进行部署时代码有谬误。
- 让 batch 维度能够动静,加了 dynamic 参数?
临时不反对该参数,能够本人编辑 ONNX 模型。相干教程请参考:https://github.com/Oneflow-Inc/one-yolov5/releases/download/v1.2.0_/openmmlab.pptx
- 模型导出 onnx 时,呈现 /tmp/oneflow_model322 相似报错。
OneFlow 新老版本兼容性问题。这是旧版本创立的文件然而没清理,删除就能够解决。
- 为训练过程 loss、map、检测框等可视化适配了 wandb(https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapt…)
- CUDA_VISIBLE_DEVICES 环境变量设置放在 import oneflow 之后会失败,导致 device 抉择失败,能够通过 export CUDA_VISIBLE_DEVICES=1 手动管制。
- 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/