Deep Residual Learning for Image Recognition 笔记
下面轉(zhuǎn)自博客:http://blog.csdn.net/u014114990/article/details/50505331
今天跑了把googlenet1應(yīng)用到自己的分類任務(wù)中,識(shí)別率有大約有0.8%的提高。 看來大網(wǎng)絡(luò)還是有用的, 只要你能很好的解決隨著網(wǎng)絡(luò)層數(shù)增多,容易引起過梯度消失或爆炸等問題。
https://github.com/ShaoqingRen/faster_rcnn/issues/47 這里有關(guān)于這個(gè)網(wǎng)絡(luò)實(shí)現(xiàn)的討論
https://github.com/beijbom/beijbom_python_lib/blob/master/beijbom_caffe_tools.py 這個(gè)是在caffe上的實(shí)現(xiàn),可以參考一下。
https://github.com/KaimingHe/deep-residual-networks 這是caffe上的實(shí)現(xiàn), 官方caffe已經(jīng)實(shí)現(xiàn)該網(wǎng)絡(luò),只需要利用這里面的配置文件即可。
同時(shí)基于keras,torch等庫,都有實(shí)現(xiàn),可以進(jìn)行嘗試。
http://mp7.watson.ibm.com/ICCV2015/ObjectDetectionICCV2015.html ICCV 2015 Tutorial on Tools for Efficient Object Detection# 全部六位講者的幻燈片已開放:1.導(dǎo)言,R.Feris 2.剛性模板,R.Benenson 3.區(qū)塊法,J.Hosang 4.人工特征+CNN特征,XY.Wang 5. CNN法,KM.He 6.R-CNN,R.Girshick
http://research.microsoft.com/en-us/um/people/kahe/ilsvrc15/ilsvrc2015_deep_residual_learning_kaiminghe.pdf 何凱明對(duì)這個(gè)網(wǎng)絡(luò)的PPT講解。
下面轉(zhuǎn)載于博客http://blog.csdn.net/cv_family_z/article/details/50328175
這是微軟方面的最新研究成果, 在第六屆ImageNet年度圖像識(shí)別測(cè)試中,微軟研究院的計(jì)算機(jī)圖像識(shí)別系統(tǒng)在幾個(gè)類別的測(cè)試中獲得第一名。
本文是解決超深度CNN網(wǎng)絡(luò)訓(xùn)練問題,152層及嘗試了1000層。
隨著CNN網(wǎng)絡(luò)的發(fā)展,尤其的VGG網(wǎng)絡(luò)的提出,大家發(fā)現(xiàn)網(wǎng)絡(luò)的層數(shù)是一個(gè)關(guān)鍵因素,貌似越深的網(wǎng)絡(luò)效果越好。但是隨著網(wǎng)絡(luò)層數(shù)的增加,問題也隨之而來。
首先一個(gè)問題是 vanishing/exploding gradients,即梯度的消失或發(fā)散。這就導(dǎo)致訓(xùn)練難以收斂。但是隨著 normalized initialization [23, 9, 37, 13] and intermediate normalization layers[16]的提出,解決了這個(gè)問題。
當(dāng)收斂問題解決后,又一個(gè)問題暴露出來:隨著網(wǎng)絡(luò)深度的增加,系統(tǒng)精度得到飽和之后,迅速的下滑。讓人意外的是這個(gè)性能下降不是過擬合導(dǎo)致的。如文獻(xiàn) [11, 42]指出,對(duì)一個(gè)合適深度的模型加入額外的層數(shù)導(dǎo)致訓(xùn)練誤差變大。如下圖所示:
如果我們加入額外的 層只是一個(gè) identity mapping,那么隨著深度的增加,訓(xùn)練誤差并沒有隨之增加。所以我們認(rèn)為可能存在另一種構(gòu)建方法,隨著深度的增加,訓(xùn)練誤差不會(huì)增加,只是我們沒有找到該方法而已。
這里我們提出一個(gè) deep residual learning 框架來解決這種因?yàn)樯疃仍黾佣鴮?dǎo)致性能下降問題。 假設(shè)我們期望的網(wǎng)絡(luò)層關(guān)系映射為 H(x), 我們讓 the stacked nonlinear layers 擬合另一個(gè)映射, F(x):= H(x)-x , 那么原先的映射就是 F(x)+x。 這里我們假設(shè)優(yōu)化殘差映射F(x) 比優(yōu)化原來的映射 H(x)容易。
F(x)+x 可以通過shortcut connections 來實(shí)現(xiàn),如下圖所示:
2 Related Work
Residual Representations
以前關(guān)于殘差表示的文獻(xiàn)表明,問題的重新表示或預(yù)處理會(huì)簡化問題的優(yōu)化。 These methods suggest that a good reformulation or preconditioning can simplify the optimization
Shortcut Connections
CNN網(wǎng)絡(luò)以前對(duì)shortcut connections 也有所應(yīng)用。
3 Deep Residual Learning
3.1. Residual Learning
這里我們首先求取殘差映射 F(x):= H(x)-x,那么原先的映射就是 F(x)+x。盡管這兩個(gè)映射應(yīng)該都可以近似理論真值映射 the desired functions (as hypothesized),但是它倆的學(xué)習(xí)難度是不一樣的。
這種改寫啟發(fā)于 圖1中性能退化問題違反直覺的現(xiàn)象。正如前言所說,如果增加的層數(shù)可以構(gòu)建為一個(gè) identity mappings,那么增加層數(shù)后的網(wǎng)絡(luò)訓(xùn)練誤差應(yīng)該不會(huì)增加,與沒增加之前相比較。性能退化問題暗示多個(gè)非線性網(wǎng)絡(luò)層用于近似identity mappings 可能有困難。使用殘差學(xué)習(xí)改寫問題之后,如果identity mappings 是最優(yōu)的,那么優(yōu)化問題變得很簡單,直接將多層非線性網(wǎng)絡(luò)參數(shù)趨0。
實(shí)際中,identity mappings 不太可能是最優(yōu)的,但是上述改寫問題可能能幫助預(yù)處理問題。如果最優(yōu)函數(shù)接近identity mappings,那么優(yōu)化將會(huì)變得容易些。 實(shí)驗(yàn)證明該思路是對(duì)的。
3.2. Identity Mapping by Shortcuts
圖2為一個(gè)模塊。A building block
公式定義如下:
這里假定輸入輸出維數(shù)一致,如果不一樣,可以通過 linear projection 轉(zhuǎn)成一樣的。
3.3. Network Architectures
Plain Network 主要是受 VGG 網(wǎng)絡(luò)啟發(fā),主要采用3*3濾波器,遵循兩個(gè)設(shè)計(jì)原則:1)對(duì)于相同輸出特征圖尺寸,卷積層有相同個(gè)數(shù)的濾波器,2)如果特征圖尺寸縮小一半,濾波器個(gè)數(shù)加倍以保持每個(gè)層的計(jì)算復(fù)雜度。通過步長為2的卷積來進(jìn)行降采樣。一共34個(gè)權(quán)重層。
需要指出,我們這個(gè)網(wǎng)絡(luò)與VGG相比,濾波器要少,復(fù)雜度要小。
Residual Network 主要是在 上述的 plain network上加入 shortcut connections
3.4. Implementation
針對(duì) ImageNet網(wǎng)絡(luò)的實(shí)現(xiàn),我們遵循【21,41】的實(shí)踐,圖像以較小的邊縮放至[256,480],這樣便于 scale augmentation,然后從中隨機(jī)裁出 224*224,采用【21,16】文獻(xiàn)的方法。
4 Experiments
下面是大神的筆記,直接轉(zhuǎn)載到這里方便以后查看:
本文介紹一下2015 ImageNet中分類任務(wù)的冠軍——MSRA何凱明團(tuán)隊(duì)的Residual Networks。實(shí)際上,MSRA是今年Imagenet的大贏家,不單在分類任務(wù),MSRA還用residual networks贏了 ImageNet的detection, localization, 以及COCO數(shù)據(jù)集上的detection和segmentation, 那本文就簡單分析下Residual Networks。
目錄
————————————
1. Motivation
2. 網(wǎng)絡(luò)結(jié)構(gòu)
3. 實(shí)驗(yàn)結(jié)果
4. 重要reference
作者首先拋出了這個(gè)問題, 深度神經(jīng)網(wǎng)絡(luò)是不是越深越好。
照我們一般的經(jīng)驗(yàn),只要網(wǎng)絡(luò)不訓(xùn)飛(也就是最早在LSTM中提出的vanishing/exploding problem),而且不過擬合, 那應(yīng)該是越深越好。
但是有這么個(gè)情況,網(wǎng)絡(luò)加深了, accuracy卻下降了,稱這種情況為degradation。如下圖所示(詳見[1]):
Cifar-10 上的training/testing error. 網(wǎng)絡(luò)從20層加到56層,error卻上升了。
按理說我們有一個(gè)shallow net,在不過擬合的情況下再往深加幾層怎么說也不會(huì)比shallow的結(jié)果差,所以degradation說明不是所有網(wǎng)絡(luò)都那么容易優(yōu)化,這篇文章的motivation就是通過“deep residual network“解決degradation問題。
Shortcut Connections
其實(shí)本文想法和Highway networks(Jurgen Schmidhuber的文章)非常相似, 就連要解決的問題(degradation)都一樣。Highway networks一文借用LSTM中g(shù)ate的概念,除了正常的非線性映射H(x, Wh)外,還設(shè)置了一條從x直接到y(tǒng)的通路,以T(x, Wt)作為gate來把握兩者之間的權(quán)重,如下公式所示:
y=H(x,WH)?T(x,WT)+x?(1?T(x,WT))
shortcut原意指捷徑,在這里就表示越層連接,就比如上面Highway networks里從x直接到y(tǒng)的連接。其實(shí)早在googleNet的inception層中就有這種表示:
Residual Networks一文中,作者將Highway network中的含參加權(quán)連接變?yōu)楣潭訖?quán)連接,即
y=H(x,WH)?WT+x
Residual Learning
至此,我們一直沒有提及residual networks中residual的含義。那這個(gè)“殘差“指什么呢?我們想:
如果能用幾層網(wǎng)絡(luò)去逼近一個(gè)復(fù)雜的非線性映射H(x),那么同樣可以用這幾層網(wǎng)絡(luò)去逼近它的residual function:F(x)=H(x)?x,但我們“猜想“優(yōu)化residual mapping要比直接優(yōu)化H(x)簡單。
推薦讀者們還是看一下本文最后列出的這篇reference paper,本文中作者說與Highway network相比的優(yōu)勢(shì)在于:
所以說這個(gè)比較還是比較牽強(qiáng)。。anyway,人家講個(gè)故事也是不容易了。
34層 residual network
網(wǎng)絡(luò)構(gòu)建思路:基本保持各層complexity不變,也就是哪層down-sampling了,就把filter數(shù)*2, 網(wǎng)絡(luò)太大,此處不貼了,大家看paper去吧, paper中畫了一個(gè)34層全卷積網(wǎng)絡(luò), 沒有了后面的幾層fc,難怪說152層的網(wǎng)絡(luò)比16-19層VGG的計(jì)算量還低。
這里再講下文章中講實(shí)現(xiàn)部分的 tricks:
圖片resize:短邊長random.randint(256,480)
裁剪:224*224隨機(jī)采樣,含水平翻轉(zhuǎn)
減均值
標(biāo)準(zhǔn)顏色擴(kuò)充[2]
conv和activation間加batch normalization[3]
幫助解決vanishing/exploding問題
minibatch-size:256
learning-rate: 初始0.1, error平了lr就除以10
weight decay:0.0001
momentum:0.9
沒用dropout[3]
其實(shí)看下來都是挺常規(guī)的方法。
34層與18層網(wǎng)絡(luò)比較:訓(xùn)練過程中,
34層plain net(不帶residual function)比18層plain net的error大
34層residual net(不帶residual function)比18層residual net的error小,更比34層plain net小了3.5%(top1)
18層residual net比18層plain net收斂快
Residual function的設(shè)置:
A)在H(x)與x維度不同時(shí), 用0充填補(bǔ)足
B) 在H(x)與x維度不同時(shí), 帶WT
C)任何shortcut都帶WT
loss效果: A>B>C
[1]. Highway Networks
[2]. ImageNet Classification with Deep Convolutional Neural Networks
[3]. Batch Normalization
[4]. VGG
總結(jié)
以上是生活随笔為你收集整理的Deep Residual Learning for Image Recognition 笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下调试python
- 下一篇: VERY DEEP CONVOLUTIO