導(dǎo)讀 YOLOv5是目前Yolo系列應(yīng)用非常廣的算法,迭代了很多版本,目前已升級到V6.2版本,從原本訓(xùn)練目標(biāo)檢測,到也可訓(xùn)練分類模型,整個(gè)算法生態(tài)越來越完善,通過本文的梳理,希望對大家學(xué)習(xí)有幫助。
yolov5-6.2增加了分類訓(xùn)練、驗(yàn)證、預(yù)測和導(dǎo)出(所有 11 種格式),還提供了 ImageNet 預(yù)訓(xùn)練的 YOLOv5m-cls、ResNet(18、34、50、101) 和 EfficientNet (b0-b3) 模型。
此次發(fā)布的主要目標(biāo)是引入超級簡單的 YOLOv5 分類工作流程,就像現(xiàn)有的目標(biāo)檢測模型一樣。以下新的 v6.2 YOLOv5-cls 模型只是一個(gè)開始,作者將繼續(xù)與現(xiàn)有的檢測模型一起改進(jìn)這些模型。
下一個(gè)版本 v6.3 計(jì)劃于 9 月發(fā)布,將為 YOLOv5 帶來官方實(shí)例分割支持,今年晚些時(shí)候?qū)l(fā)布一個(gè)主要的 v7.0 版本,更新所有 3 個(gè)任務(wù)的架構(gòu)——分類、檢測和分割。
1、重要更新
分類模型:TensorFlow、Keras、TFLite、TF.js 模型導(dǎo)出現(xiàn)在使用python export.py --include saved_model pb tflite tfjs完全集成。
ClearML日志記錄:與開源實(shí)驗(yàn)跟蹤器 ClearML 集成。使用 pip install clearml 安裝將啟用集成并允許用戶跟蹤在 ClearML 中運(yùn)行的每個(gè)訓(xùn)練。這反過來又允許用戶跟蹤和比較運(yùn)行,甚至遠(yuǎn)程安排運(yùn)行。
Deci.ai優(yōu)化:一鍵自動編譯和量化 YOLOv5 以獲得更好的推理性能。
GPU導(dǎo)出基準(zhǔn):使用 python utils/benchmarks.py --weights yolov5s.pt --device 0 用于 GPU 基準(zhǔn)測試或 --device cpu 用于 CPU 基準(zhǔn)測試,對所有 YOLOv5 導(dǎo)出格式進(jìn)行基準(zhǔn)測試(mAP 和速度)。
訓(xùn)練可再現(xiàn)性:使用 torch>=1.12.0 的單 GPU YOLOv5 訓(xùn)練現(xiàn)在完全可再現(xiàn),并且可以使用新的 --seed 參數(shù)(默認(rèn)種子 = 0)。
Apple Metal Performance Shader (MPS) 支持:通過 --device mps 對 Apple M1/M2 設(shè)備的 MPS 支持(完整功能在 pytorch/pytorch#77764 中等待更新)。
2、分類模型與精度
使用 4×A100 在 ImageNet 上訓(xùn)練了 YOLOv5-cls 分類模型 90 個(gè) epoch,并且訓(xùn)練了 ResNet 和 EfficientNet 模型以及相同的默認(rèn)訓(xùn)練設(shè)置進(jìn)行比較。將所有模型導(dǎo)出到 ONNX FP32 進(jìn)行 CPU 速度測試,并將所有模型導(dǎo)出到 TensorRT FP16 進(jìn)行 GPU 速度測試。在 Google Colab Pro 上進(jìn)行了所有速度測試,以便輕松重現(xiàn)。
?
3、使用
YOLOv5 分類訓(xùn)練支持使用 --data 參數(shù)自動下載 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 數(shù)據(jù)集。例如,要開始在 MNIST 上進(jìn)行訓(xùn)練,使用 --data mnist。
train
#Single-GPU pythonclassify/train.py--modelyolov5s-cls.pt--datacifar100--epochs5--img224--batch128 #Multi-GPUDDP python-mtorch.distributed.run--nproc_per_node4--master_port1classify/train.py--modelyolov5s-cls.pt--dataimagenet--epochs5--img224--device0,1,2,3
val
bashdata/scripts/get_imagenet.sh--val#downloadImageNetvalsplit(6.3G,50000images) pythonclassify/val.py--weightsyolov5m-cls.pt--data../datasets/imagenet--img224#validate
test
pythonclassify/predict.py--weightsyolov5s-cls.pt--datadata/images/bus.jpg
4、構(gòu)建形式
分類模型的構(gòu)建依舊是YOLOv5的風(fēng)格,加入了分類的head,這里點(diǎn)贊,不怕沒有預(yù)訓(xùn)練權(quán)重了!
classClassificationModel(BaseModel): #YOLOv5classificationmodel def__init__(self,cfg=None,model=None,nc=1000,cutoff=10):#yaml,model,numberofclasses,cutoffindex super().__init__() self._from_detection_model(model,nc,cutoff)ifmodelisnotNoneelseself._from_yaml(cfg) def_from_detection_model(self,model,nc=1000,cutoff=10): #CreateaYOLOv5classificationmodelfromaYOLOv5detectionmodel ifisinstance(model,DetectMultiBackend): model=model.model#unwrapDetectMultiBackend model.model=model.model[:cutoff]#backbone m=model.model[-1]#lastlayer ch=m.conv.in_channelsifhasattr(m,'conv')elsem.cv1.conv.in_channels#chintomodule c=Classify(ch,nc)#Classify() c.i,c.f,c.type=m.i,m.f,'models.common.Classify'#index,from,type model.model[-1]=c#replace self.model=model.model self.stride=model.stride self.save=[] self.nc=nc def_from_yaml(self,cfg): #CreateaYOLOv5classificationmodelfroma*.yamlfile self.model=None
-
開源
+關(guān)注
關(guān)注
3文章
3227瀏覽量
42343 -
模型
+關(guān)注
關(guān)注
1文章
3121瀏覽量
48663 -
跟蹤器
+關(guān)注
關(guān)注
0文章
130瀏覽量
19999
原文標(biāo)題:?Yolov5-6.2版本更新,Yolov5也可訓(xùn)練分類模型,語義分割+實(shí)例分割即將發(fā)布!
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論