2017-04-18 40 views
0

最近,我一直在玩MATLAB的RCNN深度學習示例here。在這個例子中,MATLAB設計了一個輸入大小爲32x32的基本15層CNN。他們使用CIFAR10數據集來預培訓這個CNN。 CIFAR10數據集也有大小爲32x32的訓練圖像。後來他們使用一個小的停車標誌數據集來微調CNN來檢測停車標誌。這個停車標誌的小數據集只有41個圖像;所以他們使用這41張圖片來微調CNN,即訓練一個RCNN網絡。這是他們如何檢測停止標誌: enter image description here 正如您所看到的,邊界框幾乎覆蓋了整個停止標誌,除了頂部的一小部分。 使用代碼我決定用C語言VOC數據集對CIFAR10數據集預先訓練過的同一網絡進行微調,但僅限於「飛機」類。 這些都是一些結果我得到: result 1深度學習架構的輸入大小有多重要?

result 2

正如你所看到的檢測包圍盒幾乎覆蓋了整個飛機;所以當我評估它們時,這會導致精度爲0。我明白,在MATLAB示例中提到的原始RCNN論文中,輸入尺寸爲227x227,CNN有25層。這可能是爲什麼檢測不準確? CNN的輸入大小如何影響最終結果?

回答

1

幾乎肯定是的!當您通過網絡傳遞圖像時,網絡會嘗試最小化從圖像中獲取的數據,直到獲得最相關的數據。在這個過程中,輸入一次又一次地縮小。例如,如果您向網絡插入比想要的圖像更小的圖像,則圖像中的所有數據在網絡傳遞過程中可能會丟失。 在你的情況下,你的結果的一個可選擇的原因是網絡「尋找」有限分辨率的功能,也許大飛機的分辨率超過了。