2023.4.20Pytorch用SSD訓(xùn)練自己的數(shù)據(jù)集
1、【Pytorch 搭建自己的SSD目標(biāo)檢測(cè)平臺(tái)(Bubbliiiing 深度學(xué)習(xí) 教程)】 https://www.bilibili.com/video/BV1A7411976Z/?share_source=copy_web&vd_source=1e6f2281c23ca69b18df2d7768310983
筆記
2.2 SSD源碼解析(Pytorch)
2、SSD網(wǎng)絡(luò)的搭建
(1)推薦看up主之前的6.1ResNet網(wǎng)絡(luò)結(jié)構(gòu)和6.2使用Pytorch搭建ResNet并基于遷移學(xué)習(xí)訓(xùn)練
(2)python語(yǔ)法中對(duì)于索引是左閉右開(kāi)的
(3)非關(guān)鍵字參數(shù)
3、Default box生成
計(jì)算時(shí)用的相對(duì)坐標(biāo)。
4、Loss計(jì)算
(1)負(fù)樣本的獲取
對(duì)除正樣本之外的default box計(jì)算highest confidence loss ,下面就是獲取分類損失最大的兩個(gè)default box的算法過(guò)程。
[0.3,0.1,……]是對(duì)應(yīng)的分類損失,對(duì)其進(jìn)行降序排列,獲得索引[3,0,4,……],在對(duì)該索引進(jìn)行升序排列,得到索引的索引[1,3,4,……],因?yàn)槭侨∽畲蟮?個(gè),所以進(jìn)行判斷,得到[True,False,……],對(duì)比第一個(gè)列表和第四個(gè)列表,可以看到True對(duì)應(yīng)的位置正好是損失最大的兩個(gè)。即可獲得獲取分類損失最大的兩個(gè)default box作為負(fù)樣本。

5、后處理算法
(1)Batch NMS篩除低質(zhì)量的框
原本篩框是對(duì)每一類的框分別進(jìn)行NMS算法篩除,但是這樣算法效率會(huì)比較低,根據(jù)pytorch官方給的可以進(jìn)行如下操作:
如下第一行數(shù)值為四個(gè)框的左上角和右下角坐標(biāo),第二行為四個(gè)框的類別label。
第一步:找到所有坐標(biāo)的最大值(0.6)
第二步:獲得一個(gè)新的列表,列表數(shù)值為(max=0.6)
即[0,0,1.6,1.6]
第三步:讓對(duì)應(yīng)框的坐標(biāo)加上上述列表數(shù)值,如[0.1,0.1,0.3,0.3]變?yōu)閇0.1,0.1,0.3,0.3];[0.4,0.1,0.5,0.2]變?yōu)閇2,1.7,2.1,1.8],即可將不同類的框分開(kāi)
第四步:進(jìn)行NMS處理


6、正負(fù)樣本匹配
SSD正樣本選?。海?)對(duì)每一個(gè)GT box找IOU最大的default box作為正樣本;(2)對(duì)每一個(gè)default box,如果其與任意一個(gè)GT box的IOU的值大于0.5則認(rèn)為為正樣本。
如下表格是每一個(gè)default box與每一個(gè)GT box的IOU值。
算法步驟:
第一步:對(duì)于每一個(gè)DBox找IOU最大的GT(best_dbox_ious),并記錄對(duì)應(yīng)GT的索引(best_dbox_idx)

第二步:對(duì)于每一個(gè)GT找IOU最大的DBox(best_bbox_ious),并記錄對(duì)應(yīng)DBox的索引(best_bbox_idx)

第三步:將對(duì)應(yīng)best_bbox_idx中索引位置的best_dbox_ious處的值變?yōu)?(只要比0.5大即可)

第四步:idx生成一個(gè)列表[0,1,2],根據(jù)best_dbox_idx[best_bbox_idx[idx]]=idx,得到best_dbox_idx:[0,2,1,2,2]
這里是在根據(jù)best_bbox_idx修正DBox匹配的GT,比如在第一步DBox0匹配的是GT1,但在第二步GT0匹配到了DBox0,所以根據(jù)(1)對(duì)每一個(gè)GT box找IOU最大的default box作為正樣本;應(yīng)該將DBox0匹配給GT0,據(jù)此可進(jìn)行修改。

感覺(jué)很神奇的樣子,我還沒(méi)搞懂內(nèi)部邏輯,有沒(méi)有人能解答一下?
Pytorch 搭建自己的SSD目標(biāo)檢測(cè)平臺(tái)(Bubbliiiing 深度學(xué)習(xí) 教程)
P9:Dataset2(訓(xùn)練必看)數(shù)據(jù)集制作
自己制作標(biāo)簽,用到labelimg

學(xué)到了,不要亂改和要細(xì)心……用SSD訓(xùn)練自己的數(shù)據(jù)集的時(shí)候因?yàn)镴PEGImages和JPEGlmages,硬是找了三個(gè)小時(shí)才發(fā)現(xiàn)這個(gè)錯(cuò)誤……