理解YOLOv2训练过程中输出参数含义
轉(zhuǎn)載自https://blog.csdn.net/dcrmg/article/details/78565440
原英文地址:?https://timebutt.github.io/static/understanding-yolov2-training-output/
?
最近有人問(wèn)起在YOLOv2訓(xùn)練過(guò)程中輸出在終端的不同的參數(shù)分別代表什么含義,如何去理解這些參數(shù)?本篇文章中我將嘗試著去回答這個(gè)有趣的問(wèn)題。
剛好現(xiàn)在我正在訓(xùn)練一個(gè)YOLOv2模型,拿這個(gè)真實(shí)的例子來(lái)討論再合適不過(guò)了,下邊是我訓(xùn)練中使用的 .cfg 文件(你可以在cfg文件夾下找到它):
?
以下是訓(xùn)練過(guò)程中終端輸出的一個(gè)截圖:
?
以上截圖顯示了所有訓(xùn)練圖片的一個(gè)批次(batch),批次大小的劃分根據(jù)我們?cè)?.cfg 文件中設(shè)置的subdivisions參數(shù)。在我使用的 .cfg 文件中 batch = 64 ,subdivision = 8,所以在訓(xùn)練輸出中,訓(xùn)練迭代包含了8組,每組又包含了8張圖片,跟設(shè)定的batch和subdivision的值一致。
(注: 也就是說(shuō)每輪迭代會(huì)從所有訓(xùn)練集里隨機(jī)抽取 batch = 64 個(gè)樣本參與訓(xùn)練,所有這些 batch 個(gè)樣本又被均分為 subdivision = 8 次送入網(wǎng)絡(luò)參與訓(xùn)練,以減輕內(nèi)存占用的壓力)
批輸出
針對(duì)上圖中最后一行中的信息,我們來(lái)一步一步的分析。如下的輸出是由 detector.c 生成的,具體代碼見(jiàn):點(diǎn)擊打開鏈接
?
- 9798: 指示當(dāng)前訓(xùn)練的迭代次數(shù)
- 0.370096: 是總體的Loss(損失)
- 0.451929 avg: 是平均Loss,這個(gè)數(shù)值應(yīng)該越低越好,一般來(lái)說(shuō),一旦這個(gè)數(shù)值低于0.060730 avg就可以終止訓(xùn)練了。
- 0.001000 rate: 代表當(dāng)前的學(xué)習(xí)率,是在.cfg文件中定義的。
- 3.300000 seconds: 表示當(dāng)前批次訓(xùn)練花費(fèi)的總時(shí)間。
- 627072 images: 這一行最后的這個(gè)數(shù)值是9798*64的大小,表示到目前為止,參與訓(xùn)練的圖片的總量。
?
分塊輸出
在分析分塊輸出之前,我們得了解一下IOU(Intersection over Union,也被稱為交并集之比:點(diǎn)擊打開鏈接),這樣就能理解為什么分塊輸出中的參數(shù)是一些重要且必須要輸出的參數(shù)了。
?
?
可以看到,IOU(交集比并集)是一個(gè)衡量我們的模型檢測(cè)特定的目標(biāo)好壞的重要指標(biāo)。100%表示我們擁有了一個(gè)完美的檢測(cè),即我們的矩形框跟目標(biāo)完美重合。很明顯,我們需要優(yōu)化這個(gè)參數(shù)。
回歸正題,我們來(lái)分析一下這些用來(lái)描述訓(xùn)練圖集中的一個(gè)批次的訓(xùn)練結(jié)果的輸出。那些想自己深入源代碼驗(yàn)證我所說(shuō)的內(nèi)容的同學(xué)注意了,這段代碼:點(diǎn)擊打開鏈接? 執(zhí)行了以下的輸出:
?
?
- Region Avg IOU: 0.326577: 表示在當(dāng)前subdivision內(nèi)的圖片的平均IOU,代表預(yù)測(cè)的矩形框和真實(shí)目標(biāo)的交集與并集之比,這里是32.66%,這個(gè)模型需要進(jìn)一步的訓(xùn)練。
- Class: 0.742537: 標(biāo)注物體分類的正確率,期望該值趨近于1。
- Obj: 0.033966: 越接近1越好。
- No Obj: 0.000793: 期望該值越來(lái)越小,但不為零。
- Avg Recall: 0.12500: 是在recall/count中定義的,是當(dāng)前模型在所有subdivision圖片中檢測(cè)出的正樣本與實(shí)際的正樣本的比值。在本例中,只有八分之一的正樣本被正確的檢測(cè)到。
- count: 8:count后的值是所有的當(dāng)前subdivision圖片(本例中一共8張)中包含正樣本的圖片的數(shù)量。在輸出log中的其他行中,可以看到其他subdivision也有的只含有6或7個(gè)正樣本,說(shuō)明在subdivision中含有不含檢測(cè)對(duì)象的圖片。
總結(jié)
?
在這篇短文里,我們回顧了一下YOLOv2在終端輸出的不同的參數(shù)的含義,這些參數(shù)也在告訴我們YOLOv2的訓(xùn)練過(guò)程是怎樣進(jìn)行的。這個(gè)能在一定程度上解答大家關(guān)于YOLOv2的訓(xùn)練輸出的大部分問(wèn)題,但請(qǐng)記住,對(duì)YOLOv2的探索決不應(yīng)該到此為止。
跟以往一樣,歡迎大家在評(píng)論區(qū)留言,進(jìn)一步討論關(guān)于YOLOv2的相關(guān)問(wèn)題,我也會(huì)不斷優(yōu)化改進(jìn)這篇文章,所以,別忘了留言評(píng)論哦!
?
原英文地址:?https://timebutt.github.io/static/understanding-yolov2-training-output/
?
總結(jié)
以上是生活随笔為你收集整理的理解YOLOv2训练过程中输出参数含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mask rcnn网络结构笔记
- 下一篇: 小R SLAM机器人基本命令