【精讀AI論文】VGG深度學(xué)習(xí)圖像分類算法

ImageNet圖像分類競賽歷年Tops 錯(cuò)誤率


VGG16和VGG19

- D是VGG16,E是VGG19
- 每一個(gè)模型都分為5個(gè)bolck,所有的卷積層全部使用3*3大小的卷積核,隨著模型的變深,每一個(gè)模型的channel(或者說卷積核)的個(gè)數(shù)都翻倍
- VGG16
?
VGG16和VGG19 P2 - 00:42
?- A-LRN(通過對(duì)比發(fā)現(xiàn)添加LRN并沒有什么用)?VGG16和VGG19 P2 - 02:39?

- 紅色表示max pooling,最大池化下采樣層,下采樣層并不包含參數(shù),所以并不包含在16或者19中
- 白色表示卷積層
- 像素層面的長寬越來越小,語義層面的通道數(shù)越來越深(長寬越來越小,通道數(shù)越來越多)
- VGG16和VGG19本質(zhì)上并沒有什么區(qū)別,只是VGG19比VGG16在后面三個(gè)block中各多了一個(gè)卷積層
VGG16

- 最常用的遷移學(xué)習(xí)的骨干模型
- 輸入時(shí)224*224*3的RGB彩色圖像
- 第一個(gè)block輸出的feature map是224*224*64,有64個(gè)卷積核,每一個(gè)卷積核生成一個(gè)channel,每一個(gè)channel還是224*224
- 下采樣后長寬減半,然后繼續(xù)用128個(gè)卷積核進(jìn)行卷積,得到128個(gè)channel
- 以此類推
- 第五個(gè)block輸出的feature map是7*7*512,經(jīng)過下采樣將它展平成為一個(gè)長向量,再經(jīng)過3個(gè)全連接層(第一二層有4096個(gè)神經(jīng)元,第三層有1000個(gè)神經(jīng)元)
- 經(jīng)過最后一個(gè)全連接層輸出1000個(gè)類別的logic分?jǐn)?shù),這1000個(gè)分?jǐn)?shù)經(jīng)過softmax處理,得到1000個(gè)類別的后驗(yàn)概率
- 長寬信息逐漸減小,通道信息逐漸增加(將像素空間的信息轉(zhuǎn)化成語義信息)

- 有圖有誤,最后一個(gè)全連接層神經(jīng)元的個(gè)數(shù)應(yīng)該是1000
所有卷積層輸出的feature map的尺寸

- 2、2、3、3、3



- 紅色表示VGG中每一層所占用的內(nèi)存
- 藍(lán)色表示每一層所對(duì)應(yīng)的參數(shù)數(shù)量
- 前兩層卷積占用了絕大部分內(nèi)存
- 第一層全連接層占用了絕大部分參數(shù)
- 總共的內(nèi)存消耗大約是96MB(只是前向傳播)
為什么VGG全部使用3*3的卷積?
?
3 x 3卷積的作用 P3 - 00:01
?
- 帶權(quán)重的卷積核在原圖上進(jìn)行滑動(dòng),它所覆蓋到的區(qū)域叫做感受野
- 感受野上的像素和對(duì)應(yīng)的卷積核上對(duì)應(yīng)的權(quán)重相乘并求和,最終得到feature map


- 5*5的輸入通過一個(gè)3*3的卷積核(步長為1)得到一個(gè)3*3的feature map,再通過一個(gè)3*3的卷積核(不用進(jìn)行滑動(dòng))進(jìn)行卷積,最后得到一個(gè)值,這個(gè)值反映的是原來的5*5的輸入的信息,即2個(gè)3*3的卷積可以代替1個(gè)5*5的卷積
- 這樣做的好處,經(jīng)過兩層之后模型深度變深了,非線性次數(shù)變多了,學(xué)習(xí)能力會(huì)變得更好,表示空間會(huì)變得更大而且參數(shù)的數(shù)量減少了

- 3個(gè)3*3的卷積核進(jìn)行堆疊可以等價(jià)于1個(gè)7*7的卷積核
- 所以VGG中全部使用3*3的卷積
- 3*3本身也有一個(gè)好處:他是最小的能夠包含左右、上下和中心點(diǎn)的最基本的單元


- 這種結(jié)構(gòu)在inception中也用到了:用兩個(gè)3*3的卷積核來代替一個(gè)5*5的卷積核
- 一個(gè)3*3卷積也可以分解為一個(gè)3*1卷積和一個(gè)3*1卷積,相當(dāng)于不對(duì)稱卷積,這樣也能夠減少參數(shù)數(shù)量
VGG網(wǎng)絡(luò)特點(diǎn)
?
VGG模型特點(diǎn) P4 - 00:03
?特點(diǎn)鮮明
- 它的準(zhǔn)確率并不是最優(yōu)秀的(經(jīng)典神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),深度并不是很深),準(zhǔn)確率處于中游水平

- 臃腫:計(jì)算量和參數(shù)量都特別大
- 上圖中橫軸代表計(jì)算量(一次正向推斷/前向傳播運(yùn)算的計(jì)算量),縱軸表示Top1準(zhǔn)確率,圓圈的大小表示模型的參數(shù)數(shù)量

- 上圖中橫軸代表計(jì)算量(一次正向推斷/前向傳播運(yùn)算的計(jì)算量),左圖縱軸表示Top1準(zhǔn)確率,右圖縱軸表示Top1準(zhǔn)確率,圓圈的大小表示模型的參數(shù)數(shù)量

- 上圖中a圖表示單位參數(shù)能為準(zhǔn)確率做出多少貢獻(xiàn),可以看出VGG的效率是非常差的
- b圖是a圖的散點(diǎn)圖
圖像增強(qiáng)使用的是隨機(jī)的水平翻轉(zhuǎn)和隨機(jī)的顏色變化

- 預(yù)測的時(shí)候把全連接層轉(zhuǎn)化成為了卷積層,這樣全卷積網(wǎng)絡(luò)就能輸入任意大小的圖像

- 上圖比較了訓(xùn)練尺寸是不是固定對(duì)模型性能的影響
- 縱軸表示錯(cuò)誤率,越低表示性能越好
- 從圖中可以看出圖像尺寸越大
遷移學(xué)習(xí)與可解釋性分析

- 以VGG作為遷移學(xué)習(xí)的基模型非常簡單,只需要將最后一層全連接層換成自己類別個(gè)數(shù)的神經(jīng)元就可以了
- 可以在新的類別的數(shù)據(jù)集上凍結(jié)之前的模型,僅訓(xùn)練最后改的那層全連接層就可以實(shí)現(xiàn)遷移學(xué)習(xí)的目的了

- VGG是一個(gè)經(jīng)典的的串行的卷積神經(jīng)網(wǎng)絡(luò),沒有引入跨層連接等fancy的trick,所以最后提取出來的feature map是包含圖像的位置信息的(最后提取的feature map與原圖中的區(qū)域是相對(duì)應(yīng)的)
標(biāo)簽: