如果你要做一個計算機視覺應用,相比於從頭訓練權重,或者說從隨機初始化權重開始,如果你下載別人已經訓練好的網絡結構的權重,那么你的進展會相當快。用這個預訓練,然后轉換到你感興趣的任務上。
假如說你要建立一個貓的檢測器,用來檢測你自己的寵物貓,我們這里分類3個類別,Tigger、Misty和neither。
方法:
1)首先下載別人的網絡及其權重,比如說ImageNet比賽的網絡,其有1000類的輸出。
2)去掉這個網絡的最后一層softmax層,創建自己的softmax單元,比如這里輸出Tigger、Misty和neither三個類別。
3)就網絡而言,建議把所有的層都凍結住,即凍結住所有層的參數,只需要訓練和剛才新創建的softmax層有關的參數
通過使用其他人預訓練的權重,你很可能得到很好的性能,即使只有一個小的數據集。
如果有比較多的數據集,這種情況下,你應該凍結更少的層,比如凍結前面部分層,然后訓練后面的層
如果你有越多的數據,你需要凍結的層數就越少,你能夠訓練的層數就越多。
如果你有大量的數據,你應該做的就是用開源的網絡和它的權重,把整個的當做初始化,然后訓練整個網絡,當然,如果你的分類數量與原網絡不同,那么你需要換成你自己的softmax輸出層。
換句話說,如果你有越多的標定的數據,你就可以訓練越多的層,極端情況下,你可以用下載的權重只作為初始化,用它們來代替隨機初始化,接着你可以用梯度下降法訓練,更新網絡所有的層的權重。
數據擴充
大部分的計算機視覺任務使用很多的數據,所以數據增強(data augmentation)是經常使用的一種技巧來提高計算機視覺系統的表現能力
數據增強方法
1)垂直鏡像對稱
2)隨機裁剪(Random Cropping)
可以看出,隨機裁剪有時候裁剪的並不好,但是,在實踐中還是很有用的。
3)色彩轉換(Color shifting)、顏色扭曲(Color distortions)
一般RGB的更改是根據某種概率分布來決定的,這樣做的理由是,比如說有時候可能陽光會有點偏黃,或者由於燈光照明,會導致改變圖像的顏色。對RGB有不同的采樣方式,其中一種算法是PCA(主成分分析),在AlexNet論文中有講述。
另外,還可以旋轉圖片,shearing,Local wraping等
多次裁剪方法:對原始圖像,1個中心區域裁剪 + 4個角度裁剪,然后將圖像鏡像,做相同的處理,總共10個crop
內容主要來自與:
Andrew Ng的卷積神經網絡課程