Test過(guò)程:
1. 用selective search方法提取圖片的2000個(gè)proposal,并保存到文件
2. 將圖片輸入到已經(jīng)訓(xùn)好的CNN 網(wǎng)絡(luò),在ROI pooling Layer的地方,對(duì)每一個(gè)proposal,提取到其對(duì)應(yīng)的ROI
3. 對(duì)每一個(gè)ROI, 將其劃分成固定大小的網(wǎng)格,并且在每一個(gè)小網(wǎng)格中,對(duì)該網(wǎng)格中所有的值取最大,得到固定大小的feture map,并將其輸入到后續(xù)的fc層,最后一層輸出201類(lèi)別相關(guān)信息和4個(gè)boundinf box的修正偏移量
4. 對(duì)bounding box 按照上述得到的位置偏移量進(jìn)行修正,再根據(jù)nms對(duì)所有的proposal進(jìn)行篩選,即可得到對(duì)該張圖片的bounding box預(yù)測(cè)值以及每個(gè)bounding box對(duì)應(yīng)的類(lèi)和score
Training過(guò)程:
1. 對(duì)訓(xùn)練集中所有的圖片,用selective search提取出各圖片對(duì)應(yīng)的2000個(gè)proposal,并保存。(圖片路徑+bounding box信息)
2. 對(duì)每張圖片,根據(jù)圖片中bounding box的ground truth信息,給該圖片的2000個(gè)proposal賦類(lèi)標(biāo)簽,并保存。(這2000個(gè)proposal,如果跟ground truth中的proposal的IoU值超過(guò)了閾值(IOU>=0.5),則把ground truth中的proposal對(duì)應(yīng)的類(lèi)標(biāo)簽賦給原始產(chǎn)生的這個(gè)proposal,其余的proposal(IOU [0.1, 0.5))都標(biāo)為background)
3. 使用mini-batch=128,25%來(lái)自有非背景標(biāo)簽的proposal,其余來(lái)自標(biāo)記為背景的proposal(最開(kāi)始的理解:具體在這個(gè)過(guò)程中,mini-batch有兩個(gè)層次,一個(gè)是對(duì)于同一張圖片,64個(gè)proposal組成的mini-batch,另一個(gè)是完成單張圖片的導(dǎo)數(shù)計(jì)算后,兩張圖片是一個(gè)mini-batch,更新的時(shí)候?qū)蓮垐D片求得的值取平均來(lái)更新權(quán)重),其實(shí),就是ROI pooling layer以前,batch size=2,ROI pooling layer之后,batch size=128
4. 訓(xùn)練CNN,最后一層的結(jié)果包含類(lèi)信息和位置修正信息,所以用多任務(wù)的loss,一個(gè)是分類(lèi)的損失函數(shù),一個(gè)是位置的損失函數(shù)
補(bǔ)充:
1. mini-batch的問(wèn)題:ROI pooling layer前后,batch size發(fā)生了變化
2. 為什么一開(kāi)始要resize到一個(gè)確定的值:為了控制顯存,防止在訓(xùn)練過(guò)程中,因?yàn)槟硰垐D片特別大導(dǎo)致顯存不夠,程序崩了
3. 為什么比R-CNN快?(1)避免了overlap部分的多次重復(fù)計(jì)算,雖然引入了一些bounding box之外的計(jì)算。Fast R-CNN是在一張圖上做的,如果圖片很大,proposal很小,而且少,極少有overlap,那么R-CNN更快。(2)另一方面,R-CNN在SVM之前,需要把所有的圖片再跑一次得到fc7 feature,而Fast R-CNN不需要。