One-YOLOv5 v1.2.0正式發(fā)布。完整更新列表請(qǐng)查看鏈接:https://github.com/Oneflow-Inc/one-yolov5/releases/tag/v1.2.0,歡迎體驗(yàn)新版本,期待你的反饋。
(資料圖片僅供參考)
1
新版本特性
1. 同步了Ultralytics?YOLOv5的上游分支v7.0,同時(shí)支持分類(lèi)、目標(biāo)檢測(cè)、實(shí)例分割任務(wù)
2. 支持flask_rest_api
3. 支持使用 wandb 對(duì)實(shí)驗(yàn)跟蹤和可視化功能?
4. oneflow_hub_support_pilimage?
5.為每個(gè)batch的compute_loss部分減少一次h2d和cpu slice_update操作?
6. 優(yōu)化 bbox_iou 函數(shù)和模型滑動(dòng)平均部分,大幅提升訓(xùn)練性能 (一塊RTX 3090加速訓(xùn)練YOLOv5s,時(shí)間減少11個(gè)小時(shí),速度提升20%)
7. 兼容FlowFlops,訓(xùn)練時(shí)可以展示模型的FLOPs?
(基于 Flowflops 詳解深度學(xué)習(xí)網(wǎng)絡(luò)的 FLOPs 和 MACs 計(jì)算方案)
原圖 | 目標(biāo)檢測(cè): 目標(biāo)檢測(cè)是指從圖像中檢測(cè)出多個(gè)物體并標(biāo)記它們的位置和類(lèi)別。目標(biāo)檢測(cè)任務(wù)需要給出物體的類(lèi)別和位置信息,通常使用邊界框(bounding box)來(lái)表示。目標(biāo)檢測(cè)可以應(yīng)用于自動(dòng)駕駛、視頻監(jiān)控、人臉識(shí)別等領(lǐng)域。 |
圖像分類(lèi): ?圖像分類(lèi)是指給定一張圖像,通過(guò)計(jì)算機(jī)視覺(jué)技術(shù)來(lái)判斷它屬于哪一類(lèi)別。圖像分類(lèi)是一種有監(jiān)督學(xué)習(xí)任務(wù),需要通過(guò)訓(xùn)練樣本和標(biāo)簽來(lái)建立分類(lèi)模型。在圖像分類(lèi)中,算法需要提取圖像的特征,然后將其分類(lèi)為預(yù)定義的類(lèi)別之一。例如,圖像分類(lèi)可以用于識(shí)別手寫(xiě)數(shù)字、識(shí)別動(dòng)物、區(qū)分汽車(chē)和自行車(chē)等。 | 實(shí)例分割: 實(shí)例分割是指從圖像中檢測(cè)出多個(gè)物體并標(biāo)記它們的位置和類(lèi)別,同時(shí)對(duì)每個(gè)物體進(jìn)行像素級(jí)的分割。實(shí)例分割要求更為精細(xì)的信息,因?yàn)樗枰獙⑽矬w的每個(gè)像素都分配給對(duì)應(yīng)的物體。實(shí)例分割可以應(yīng)用于醫(yī)學(xué)影像分析、自動(dòng)駕駛、虛擬現(xiàn)實(shí)等領(lǐng)域。 |
2
安裝
在Python>=3.7.0的環(huán)境中克隆版本倉(cāng)并安裝 requirements.txt,包括 OneFlow nightly 或者 oneflow>=0.9.0 。
git?clone?https://github.com/Oneflow-Inc/one-yolov5??#?克隆cd one-yolov5pip install -r requirements.txt # 安裝
檢測(cè)模型訓(xùn)練示例:
https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/quick_start.html#_4
分割和分類(lèi)模型訓(xùn)練示例:
https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/model_train.html
3
啟動(dòng)指令:
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后端啟動(dòng)指令
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
測(cè)試環(huán)境
- 機(jī)器 ( 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訓(xùn)練 # 測(cè)試指令:# OneFlow后端python train.py \ --batch-size 8 \ --data coco.yaml \ --weights " " \ --cfg models/yolov5s.yaml \ --img 640 \ --epochs 1 \ --bbox_iou_optim --multi_tensor_optimizepython 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
以下記錄了一些用戶(hù)反饋的常見(jiàn)問(wèn)題:
1. 出現(xiàn)滿(mǎn)屏的誤檢框。 可能到原因場(chǎng)景太單一,泛化不夠 ,更多可見(jiàn)我們關(guān)于如何準(zhǔn)備一個(gè)好的數(shù)據(jù)集的介紹或者導(dǎo)出ONNX模型進(jìn)行部署時(shí)代碼有錯(cuò)誤。
2.?讓batch維度可以動(dòng)態(tài),加了dynamic參數(shù)? 暫時(shí)不支持該參數(shù),可以自己編輯ONNX模型。相關(guān)教程請(qǐng)參考:https://github.com/Oneflow-Inc/one-yolov5/releases/download/v1.2.0_/openmmlab.pptx
3.?模型導(dǎo)出onnx時(shí),出現(xiàn)?/tmp/oneflow_model322?類(lèi)似報(bào)錯(cuò)。 OneFlow新老版本兼容性問(wèn)題。這是舊版本創(chuàng)建的文件但是沒(méi)清理,刪除就可以解決。 ?
4. 為訓(xùn)練過(guò)程loss、map、檢測(cè)框等可視化適配了wandb(https://start.oneflow.org/oneflow-yolo-doc/tutorials/03_chapter/intro_to_wandb.html)
5. CUDA_VISIBLE_DEVICES環(huán)境變量設(shè)置放在import oneflow之后會(huì)失敗,導(dǎo)致device選擇失敗,可以通過(guò)export CUDA_VISIBLE_DEVICES=1 手動(dòng)控制。
6.?autobatch功能 OneFlow缺少memory_reserved API,我們會(huì)盡快補(bǔ)齊,現(xiàn)在需要先手動(dòng)指定下batch_size。下個(gè)版本將會(huì)解決并且會(huì)直接支持導(dǎo)出batch維度為動(dòng)態(tài)的模型。
下個(gè)版本的展望
繼續(xù)提升One-YOLOv5單卡模式的訓(xùn)練速度
解決目前訓(xùn)練時(shí)顯存比Ultralytics偏大的問(wèn)題
CPU模式下支持ONNX模型的導(dǎo)出
OneFlow研發(fā)的amp train目前已經(jīng)開(kāi)發(fā)完成正在測(cè)試中,下個(gè)版本將合并進(jìn)main分支
autobatch功能
其他人都在看
GPT-3/ChatGPT復(fù)現(xiàn)的經(jīng)驗(yàn)教訓(xùn)
超越ChatGPT:大模型的智能極限
YOLOv5解析教程:計(jì)算mAP用到的Numpy函數(shù)
ChatGPT作者Schulman:我們成功的秘密武器
比快更快,開(kāi)源Stable Diffusion刷新作圖速度
OneEmbedding:單卡訓(xùn)練TB級(jí)推薦模型不是夢(mèng)
GLM訓(xùn)練加速:性能最高提升3倍,顯存節(jié)省1/3
歡迎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/
關(guān)鍵詞: