最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

5000字多圖長(zhǎng)文預(yù)警!手把手帶你調(diào)參Yolo v5(二)

2023-03-03 17:55 作者:深度之眼官方賬號(hào)  | 我要投稿

來源:投稿 作者:王同學(xué)
編輯:學(xué)姐

本文篇幅較長(zhǎng),建議同學(xué)收藏起來慢慢看哦~?

今天我們繼續(xù)昨天的YOLOv5參數(shù)解析,這次主要解析源碼中train.py文件中包含的參數(shù)。

  • 1.1'--weights'

  • 1.2'--cfg'

  • 1.3'--data'

  • 1.4'--hyp'

  • 1.5'--epochs'

  • 1.6'--batch-size'

  • 1.7'--imgsz', '--img', '--img-size'

  • 1.8'--rect'??

  • 1.9'--resume'??

  • 1.10'--nosave'

  • 1.11'--noval'

  • 1.12'--noautoanchor'??

  • 1.13'--evolve'??

  • 1.14'--bucket'

  • 1.15'--cache'

  • 1.16'--image-weights'

  • 1.17'--device'

  • 1.18'--multi-scale'??

  • 1.19'--single-cls'

  • 1.20'--optimizer'

  • 1.21'--sync-bn'

  • 1.22'--workers'

  • 1.23'--project'

  • 1.24'--name'

  • 1.25'--exist-ok'

  • 1.26'--quad'

  • 1.27'--cos-lr'??

  • 1.28'--label-smoothing'??

  • 1.29'--patience'

  • 1.30'--freeze'??

  • 1.31'--save-period'

  • 1.32'--local_rank'

  • 1.33'--entity'

  • 1.34'--upload_dataset'

  • 1.35'--bbox_interval'

  • 1.36'--artifact_alias'

0.首次運(yùn)行常見錯(cuò)誤??

剛拿到代碼可以運(yùn)行train.py文件看看,一般都會(huì)出現(xiàn)這個(gè)錯(cuò)誤:


解決方案:在train.py文件里加入以下代碼:


1.train.py參數(shù)解析??

首先還是打開根目錄下的train.py,直接看parse_opt()


1.1'--weights'

指定預(yù)訓(xùn)練權(quán)重路徑;如果這里設(shè)置為空的話,就是自己從頭開始進(jìn)行訓(xùn)練;下圖是官方提供的預(yù)訓(xùn)練權(quán)重

1.2'--cfg'

指定模型配置文件路徑的;源碼里面提供了這5個(gè)配置文件,配置文件里面指定了一些參數(shù)信息和backbone的結(jié)構(gòu)信息。


1.3'--data'

數(shù)據(jù)集對(duì)應(yīng)的參數(shù)文件;里面主要存放數(shù)據(jù)集的類別和路徑信息。

yolo源碼里面提供了9種數(shù)據(jù)集的配置文件

1.4'--hyp'

指定超參數(shù)文件的路徑;超參數(shù)里面包含了大量的參數(shù)信息,同樣提供了5個(gè)


1.5'--epochs'

訓(xùn)練的輪數(shù);默認(rèn)為300輪,顯示效果是0-299

1.6'--batch-size'

每批次的輸入數(shù)據(jù)量;default=-1將時(shí)自動(dòng)調(diào)節(jié)batchsize大小。

? 這里說一下epoch、batchsize、iteration三者之間的聯(lián)系

1、batchsize是批次大小,假如取batchsize=24,則表示每次訓(xùn)練時(shí)在訓(xùn)練集中取24個(gè)訓(xùn)練樣本進(jìn)行訓(xùn)練。?

2、iteration是迭代次數(shù),1個(gè)iteration就等于一次使用24(batchsize大?。﹤€(gè)樣本進(jìn)行訓(xùn)練。

3、epoch:1個(gè)epoch就等于使用訓(xùn)練集中全部樣本訓(xùn)練1次。

1.7'--imgsz', '--img', '--img-size'

訓(xùn)練集和測(cè)試集圖片的像素大?。惠斎肽J(rèn)640*640,這個(gè)參數(shù)在你選擇yolov5l那些大一點(diǎn)的權(quán)重的時(shí)候,要進(jìn)行適當(dāng)?shù)恼{(diào)整,這樣才能達(dá)到好的效果。

1.8'--rect'??


是否采用矩陣推理的方式去訓(xùn)練模型;

? 所謂矩陣推理就是不再要求你訓(xùn)練的圖片是正方形了;矩陣推理會(huì)加速模型的推理過程,減少一些冗余信息。

下圖分別是方形推理方式和矩陣推理方式


1.9'--resume'??

斷點(diǎn)續(xù)訓(xùn):即是否在之前訓(xùn)練的一個(gè)模型基礎(chǔ)上繼續(xù)訓(xùn)練,default 值默認(rèn)是 false;如果想采用斷點(diǎn)續(xù)訓(xùn)的方式,這里我推薦一種寫法,即首先將default=False 改為 default=True 隨后在終端中鍵入如下指令

==D:\Pycharm_Projects\yolov5-6.1-4_23\runs\train\exp19\weights\last.pt==為你上一次中斷時(shí)保存的pt文件路徑

輸入指令后就可以看到模型是繼續(xù)從上次結(jié)束時(shí)開始訓(xùn)練的

1.10'--nosave'

是否只保存最后一輪的pt文件;我們默認(rèn)是保存best.pt和last.pt兩個(gè)的

1.11'--noval'

只在最后一輪測(cè)試;正常情況下每個(gè)epoch都會(huì)計(jì)算mAP,但如果開啟了這個(gè)參數(shù),那么就只在最后一輪上進(jìn)行測(cè)試,不建議開啟

1.12'--noautoanchor'??

是否禁用自動(dòng)錨框;默認(rèn)是開啟的,自動(dòng)錨點(diǎn)的好處是可以簡(jiǎn)化訓(xùn)練過程;

yolov5中預(yù)先設(shè)定了一下錨定框,這些錨框是針對(duì)coco數(shù)據(jù)集的,其他目標(biāo)檢測(cè)也適用,可以在models/yolov5.文件中查看,例如如圖所示,這些框針對(duì)的圖片大小是640640。這是默認(rèn)的anchor大小。需要注意的是在目標(biāo)檢測(cè)任務(wù)中,一般使用大特征圖上去檢測(cè)小目標(biāo),因?yàn)榇筇卣鲌D含有更多小目標(biāo)信息,因此大特征圖上的anchor數(shù)值通常設(shè)置為小數(shù)值,小特征圖檢測(cè)大目標(biāo),因此小特征圖上anchor數(shù)值設(shè)置較大。

在yolov5 中自動(dòng)錨定框選項(xiàng),訓(xùn)練開始前,會(huì)自動(dòng)計(jì)算數(shù)據(jù)集標(biāo)注信息針對(duì)默認(rèn)錨定框的最佳召回率,當(dāng)最佳召回率大于等于0.98時(shí),則不需要更新錨定框;如果最佳召回率小于0.98,則需要重新計(jì)算符合此數(shù)據(jù)集的錨定框。在parse_opt設(shè)置了默認(rèn)自動(dòng)計(jì)算錨框選項(xiàng),如果不想自動(dòng)計(jì)算,可以設(shè)置這個(gè),建議不要改動(dòng)。

1.13'--evolve'??

遺傳超參數(shù)進(jìn)化;yolov5使用遺傳超參數(shù)進(jìn)化,提供的默認(rèn)參數(shù)是通過在COCO數(shù)據(jù)集上使用超參數(shù)進(jìn)化得來的(也就是下圖這些參數(shù))。由于超參數(shù)進(jìn)化會(huì)耗費(fèi)大量的資源和時(shí)間,所以建議大家不要?jiǎng)舆@個(gè)參數(shù)。

遺傳算法是利用種群搜索技術(shù)將種群作為一組問題解,通過對(duì)當(dāng)前種群施加類似生物遺傳環(huán)境因素的選擇、交叉、變異等一系列的遺傳操作來產(chǎn)生新一代的種群,并逐步使種群優(yōu)化到包含近似最優(yōu)解的狀態(tài),遺傳算法調(diào)優(yōu)能夠求出優(yōu)化問題的全局最優(yōu)解,優(yōu)化結(jié)果與初始條件無關(guān),算法獨(dú)立于求解域,具有較強(qiáng)的魯棒性,適合于求解復(fù)雜的優(yōu)化問題,應(yīng)用較為廣泛。

1.14'--bucket'

谷歌云盤;通過這個(gè)參數(shù)可以下載谷歌云盤上的一些東西,但是現(xiàn)在沒必要使用了

1.15'--cache'

是否提前緩存圖片到內(nèi)存,以加快訓(xùn)練速度,默認(rèn)False;開啟這個(gè)參數(shù)就會(huì)對(duì)圖片進(jìn)行緩存,從而更好的訓(xùn)練模型。

1.16'--image-weights'

是否啟用加權(quán)圖像策略,默認(rèn)是不開啟的;主要是為了解決樣本不平衡問題;開啟后會(huì)對(duì)于上一輪訓(xùn)練效果不好的圖片,在下一輪中增加一些權(quán)重;

1.17'--device'

設(shè)備選擇;這個(gè)參數(shù)就是指定硬件設(shè)備的,系統(tǒng)會(huì)自己判斷的

1.18'--multi-scale'??

是否啟用多尺度訓(xùn)練,默認(rèn)是不開啟的;多尺度訓(xùn)練是指設(shè)置幾種不同的圖片輸入尺度,訓(xùn)練時(shí)每隔一定iterations隨機(jī)選取一種尺度訓(xùn)練,這樣訓(xùn)練出來的模型魯棒性更強(qiáng)。

多尺度訓(xùn)練在比賽中經(jīng)??梢钥吹剿碛埃潜蛔C明了有效提高性能的方式。輸入圖片的尺寸對(duì)檢測(cè)模型的性能影響很大,在基礎(chǔ)網(wǎng)絡(luò)部分常常會(huì)生成比原圖小數(shù)十倍的特征圖,導(dǎo)致小物體的特征描述不容易被檢測(cè)網(wǎng)絡(luò)捕捉。通過輸入更大、更多尺寸的圖片進(jìn)行訓(xùn)練,能夠在一定程度上提高檢測(cè)模型對(duì)物體大小的魯棒性。

1.19'--single-cls'

設(shè)定訓(xùn)練數(shù)據(jù)集是單類別還是多類別;默認(rèn)為 false多類別

1.20'--optimizer'

選擇優(yōu)化器;默認(rèn)為SGD,可選SGD,Adam,AdamW

1.21'--sync-bn'

是否開啟跨卡同步BN;開啟參數(shù)后即可使用 SyncBatchNorm多 GPU 進(jìn)行分布式訓(xùn)練

1.22'--workers'

最大worker數(shù)量;這里經(jīng)常出問題,建議設(shè)置成0

1.23'--project'

指定訓(xùn)練好的模型的保存路徑;默認(rèn)在runs/train

1.24'--name'

設(shè)定保存的模型文件夾名,默認(rèn)在exp;

1.25'--exist-ok'

每次預(yù)測(cè)模型的結(jié)果是否保存在原來的文件夾;如果指定了這個(gè)參數(shù)的話,那么本次預(yù)測(cè)的結(jié)果還是保存在上一次保存的文件夾里;如果不指定就是每次預(yù)測(cè)結(jié)果保存一個(gè)新的文件夾下。

1.26'--quad'

官方給出的開啟這個(gè)功能后的實(shí)際效果:

  • 好處是在比默認(rèn) 640 大的數(shù)據(jù)集上訓(xùn)練效果更好

  • 副作用是在 640 大小的數(shù)據(jù)集上訓(xùn)練效果可能會(huì)差一些

1.27'--cos-lr'??

是否開啟余弦學(xué)習(xí)率;

這是我不采用cos-lr時(shí)學(xué)習(xí)率的曲線:

開啟后的學(xué)習(xí)率應(yīng)該是這樣子:

1.28'--label-smoothing'??

是否對(duì)標(biāo)簽進(jìn)行平滑處理,默認(rèn)是不啟用的;

在訓(xùn)練樣本中,我們并不能保證所有sample都標(biāo)注正確,如果某個(gè)樣本標(biāo)注錯(cuò)誤,就可能產(chǎn)生負(fù)面印象,如果我們有辦法“告訴”模型,樣本的標(biāo)簽不一定正確,那么訓(xùn)練出來的模型對(duì)于少量的樣本錯(cuò)誤就會(huì)有“免疫力”采用隨機(jī)化的標(biāo)簽作為訓(xùn)練數(shù)據(jù)時(shí),損失函數(shù)有1-ε的概率與上面的式子相同,比如說告訴模型只有0.95概率是那個(gè)標(biāo)簽。

1.29'--patience'

早停;如果模型在default值輪數(shù)里沒有提升,則停止訓(xùn)練模型

1.30'--freeze'??

指定凍結(jié)層數(shù)量;可以在yolov5s.yaml中查看主干網(wǎng)絡(luò)層數(shù)。

凍結(jié)訓(xùn)練是遷移學(xué)習(xí)常用的方法,當(dāng)我們?cè)谑褂脭?shù)據(jù)量不足的情況下,通常我們會(huì)選擇公共數(shù)據(jù)集提供權(quán)重作為預(yù)訓(xùn)練權(quán)重,我們知道網(wǎng)絡(luò)的backbone主要是用來提取特征用的,一般大型數(shù)據(jù)集訓(xùn)練好的權(quán)重主干特征提取能力是比較強(qiáng)的,這個(gè)時(shí)候我們只需要凍結(jié)主干網(wǎng)絡(luò),fine-tune后面層就可以了,不需要從頭開始訓(xùn)練,大大減少了實(shí)踐而且還提高了性能。

例如如下指令,代表凍結(jié)前8層,因?yàn)橹挥?層,注意不要超過9

這里分享一個(gè)對(duì)比凍結(jié)效果的項(xiàng)目

這里是項(xiàng)目的部分截圖

1.31'--save-period'

用于設(shè)置多少個(gè)epoch保存一下checkpoint;

1.32'--local_rank'

DistributedDataParallel 單機(jī)多卡訓(xùn)練,單GPU設(shè)備不需要設(shè)置;

1.33'--entity'

在線可視化工具,類似于tensorboard

1.34'--upload_dataset'

是否上傳dataset到wandb tabel(將數(shù)據(jù)集作為交互式 dsviz表 在瀏覽器中查看、查詢、篩選和分析數(shù)據(jù)集) 默認(rèn)False

1.35'--bbox_interval'

設(shè)置界框圖像記錄間隔 Set bounding-box image logging interval for W&B 默認(rèn)-1

1.36'--artifact_alias'

功能作者還未實(shí)現(xiàn)

小彩蛋??

當(dāng)我們?cè)O(shè)置完參數(shù)以后,可以通過如下的方式來查看參數(shù)具體的值,這里拿detect.py文件舉例

第一步:在這個(gè)位置打個(gè)斷點(diǎn)

第二步:點(diǎn)擊“debug”

第三步:點(diǎn)擊“步過”

最后一步:展開opt就可以看到我們的參數(shù)信息啦

有問題歡迎大家指正,如果感覺有幫助的話請(qǐng)點(diǎn)贊支持下??????

關(guān)注【學(xué)姐帶你玩AI】公眾號(hào)

回復(fù)“YOLO

論文PDF+代碼數(shù)據(jù)集免費(fèi)領(lǐng)!


5000字多圖長(zhǎng)文預(yù)警!手把手帶你調(diào)參Yolo v5(二)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
历史| 曲松县| 松江区| 沧州市| 灵璧县| 屏边| 兰西县| 云南省| 五华县| 六枝特区| 射阳县| 扎兰屯市| 陆河县| 武陟县| 体育| 同德县| 锡林浩特市| 时尚| 南阳市| 岳阳县| 扎囊县| 汝城县| 五华县| 商洛市| 繁昌县| 永善县| 乌兰浩特市| 库车县| 克什克腾旗| 西贡区| 泰来县| 秀山| 平湖市| 安丘市| 东兴市| 六盘水市| 安泽县| 尉犁县| 会宁县| 大悟县| 廊坊市|