InceptionV1筆記整理

論文鏈接:https://arxiv.org/abs/1409.4842
年份:2015
會(huì)議/期刊:CVPR

GoogLeNet的參數(shù)是AlexNet的1/12孙技,但是精度上卻更高。受到Network in Network和Provable bounds for learning some deep representations的啟發(fā)萍摊,作者提出了一種稱之為Inception的網(wǎng)絡(luò)結(jié)構(gòu), 主要是提高了網(wǎng)絡(luò)內(nèi)計(jì)算資源的利用率。


目錄

1. Motivation and High Level Considerations
2. Architectural Details
3. GoogLeNet
4. Training Methodology


1. Motivation and High Level Considerations

提升深度網(wǎng)絡(luò)的表現(xiàn)最直接的方式就是增加網(wǎng)絡(luò)的size逊朽,這里的包括網(wǎng)絡(luò)深度depth(網(wǎng)絡(luò)層數(shù))網(wǎng)絡(luò)的寬度width(每一層的神經(jīng)元數(shù))桦他。作者認(rèn)為這會(huì)帶來兩個(gè)主要問題:

  1. 模型的參數(shù)過多茬暇,容易過擬合资锰,尤其是在訓(xùn)練集數(shù)量有限的情況下
  2. 對(duì)計(jì)算資源的需求暴增敢课,比如,如果兩個(gè)卷積層相連,任何增加卷積核的行為將導(dǎo)致計(jì)算量以二次方的倍數(shù)增加直秆,如果增加的容量沒有被有效利用(例如濒募,大多數(shù)權(quán)值趨于0),就會(huì)造成計(jì)算資源的浪費(fèi)圾结。

針對(duì)這兩個(gè)問題的解決思路:使用稀疏連接結(jié)構(gòu)代替全連接結(jié)構(gòu)

  • Arora的開創(chuàng)性工作:根據(jù)特征和輸出聚類之間的相關(guān)性逐層進(jìn)行學(xué)習(xí)瑰剃,得到最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)
  • Hebbian原理:“neurons that fire together, wire together”

但是,現(xiàn)在的計(jì)算硬件能力在處理大量的非均勻(non-uniform)的稀疏數(shù)據(jù)結(jié)構(gòu)時(shí)筝野,是非常低效的晌姚。

這不是把兩頭堵死了嗎?所以歇竟,他們就想有沒有一種辦法挥唠,它既可以即使在filter-level也可以充分利用額外的稀疏性(extra sparsity),又能通過計(jì)算密集矩陣(dense matrices)使得現(xiàn)有的硬件發(fā)揮最大性能途蒋。

Inception架構(gòu)一開始是作為一個(gè)實(shí)現(xiàn)估計(jì)一個(gè)復(fù)雜網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)假設(shè)輸出的學(xué)習(xí)例子,它嘗試接近Arora提出的稀疏結(jié)構(gòu)并用密集且簡(jiǎn)單現(xiàn)有的組件(dense, readily available components)來覆蓋假設(shè)結(jié)果馋记。

僅僅兩輪迭代后号坡,就能看到不錯(cuò)的結(jié)果,最終建立起了Inception結(jié)構(gòu)梯醒】矶眩【PS:結(jié)果的改善是否歸因于Inception結(jié)構(gòu)的設(shè)計(jì)原則是值得深究的】


2. Architectural Details

"... is based on finding out how an optimal local sparse structure in a convolutional vision network can be approximated and covered by readily available dense components..."

再次重申,Inception的主要思想就是在卷積視覺網(wǎng)絡(luò)中如何逼近最優(yōu)局部稀疏結(jié)構(gòu)茸习,并由現(xiàn)有的密集計(jì)算工具(卷積)實(shí)現(xiàn).

naive inception module
  • 參考Network in Network的文章畜隶,使用1x1卷積可以實(shí)現(xiàn)多個(gè)feature map的線性組合。
  • 同時(shí)号胚,也希望獲得更多更大的空間上的信息籽慢,所以加入3x3和5x5的卷積核。
  • Pooling層是CNN中必要的結(jié)構(gòu)猫胁,所以也加進(jìn)來箱亿。
    到此,我們就有了一個(gè)naive版本的Inception模塊了弃秆。
Inception module with dimension reductions

如果直接使用naive版本的話届惋,越到后面堆積的層越多,參數(shù)越多菠赚,非常低效脑豹,所以想到使用1x1卷積進(jìn)行降維和投影。

可是衡查,先卷積后降維會(huì)破壞特征圖的稀疏性瘩欺,因?yàn)榻稻S是一個(gè)信息壓縮的過程,一種密集性的信息表達(dá)方式,難以建模击碗,所以采用了先降維后卷積的思路筑悴。

import torch
import torch.nn as nn
import torch.nn.functional as F

class BasicConv2d(nn.Module):
    def __init__(self, in_channels, out_channels, **kwargs):
        super(BasicConv2d, self).__init__()
        self.conv = nn.Conv2d(in_channels, out_channels, bias=False, **kwargs)

    def forward(self, x):
        x = self.conv(x)
        return F.relu(x, inplace=True)

class Inception(nn.Module):
    def __init__(self, in_channels, pool_features, conv_block=None):
        super(Inception, self).__init__()
        if conv_block is None:
            conv_block = BasicConv2d

        self.branch1x1 = conv_block(in_channels, 64, kernel_size=1)

        self.branch3x3_1 = conv_block(in_channels, 96, kernel_size=1)
        self.branch3x3_2 = conv_block(96, 128, kernel_size=3, padding=1)
        
        self.branch5x5_1 = conv_block(in_channels, 16, kernel_size=1)
        self.branch5x5_2 = conv_block(16, 32, kernel_size=5, padding=1)

        self.branch_pool = conv_block(in_channels, pool_features, kernel_size=1)

    def _forward(self, x):
        branch1x1 = self.branch1x1(x)

        branch3x3 = self.branch3x3_1(x)
        branch3x3 = self.branch3x3_2(branch3x3)

        branch5x5 = self.branch5x5_1(x)
        branch5x5 = self.branch5x5_2(branch5x5)

        branch_pool = F.max_pool2d(x, kernel_size=3, stride=1, padding=1)
        branch_pool = self.branch_pool(branch_pool)

        outputs = [branch1x1, branch3x3, branch5x5, branch_pool]
        return outputs

    def forward(self, x):
        outputs = self._forward(x)
        return torch.cat(outputs, dim=1)

3. GoogLeNet


整個(gè)GoogLeNet總共22層(不含沒有參數(shù)的層)

  • 圖片大小:224 x 224 x 3(3代表RGB通道)稍途,減去均值
  • 所有卷積層(包括為了降維所使用的的1x1卷積層)都緊接著ReLU激活函數(shù)
  • 第一層將輸入圖像的邊長減半阁吝,第二層再次將輸入邊長減半,即此層輸出為原始輸入圖像的1/4械拍,降低了計(jì)算量突勇。
  • LRN層將前兩層的輸出進(jìn)行歸一化,使每個(gè)特征層更專一化坷虑,能夠獲取更廣泛的特征甲馋,具有更高的泛化度。(之后被Batch Normal層替代了)
  • 9個(gè)Inception module迄损,在第二個(gè)Inception module之后定躏,第七個(gè)Inception module之后,各有兩個(gè)步長為2的最大池化層芹敌,為了降低計(jì)算量痊远、為網(wǎng)絡(luò)提速
  • 使用平均池化層(avgpool)代替全連接層(FC)
  • 考慮到網(wǎng)絡(luò)越深,反向傳播會(huì)變得困難氏捞,分別在Inception 4a和Inception 4d增加輔助分類輸出(auxiliary classifier)
    1. 增強(qiáng)底層分類器的discrimination
    2. 增強(qiáng)梯度信號(hào)
    3. 使用額外的正則化
    4. 訓(xùn)練時(shí)的loss權(quán)重為0.3

4. Training Methodology

  • DistBelief
  • 優(yōu)化方法: SGD with 0.9 momentum
  • 學(xué)習(xí)率: 每8個(gè)epoch降低4%
  • Polyak averaging(用在作inference階段)
  • 圖像增強(qiáng)
    1. 圖像各種尺寸patch的采樣碧聪,這些patch的size平均分布在圖像區(qū)域的8%-100%, 寬高比3:4或4:3
    2. photometric distortions(設(shè)置參數(shù)contrast, brightness 和color液茎,調(diào)節(jié)光照變化逞姿,防止over-fitting)
    3. random interpolation methods隨機(jī)插值法

Reference

  1. Going Deeper with Convolutions(Inception v1)筆記
  2. Inception V1,V2,V3,V4 模型總結(jié)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捆等,隨后出現(xiàn)的幾起案子滞造,更是在濱河造成了極大的恐慌,老刑警劉巖栋烤,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件断部,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡班缎,警方通過查閱死者的電腦和手機(jī)蝴光,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來达址,“玉大人蔑祟,你說我怎么就攤上這事〕吝耄” “怎么了疆虚?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我径簿,道長罢屈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任篇亭,我火速辦了婚禮缠捌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘译蒂。我一直安慰自己曼月,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布柔昼。 她就那樣靜靜地躺著哑芹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捕透。 梳的紋絲不亂的頭發(fā)上聪姿,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音乙嘀,去河邊找鬼末购。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乒躺,可吹牛的內(nèi)容都是我干的招盲。 我是一名探鬼主播低缩,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼嘉冒,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了咆繁?” 一聲冷哼從身側(cè)響起讳推,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玩般,沒想到半個(gè)月后银觅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坏为,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年究驴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匀伏。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洒忧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出够颠,到底是詐尸還是另有隱情熙侍,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蛉抓,受9級(jí)特大地震影響庆尘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巷送,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一驶忌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惩系,春花似錦位岔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晤柄,卻和暖如春擦剑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背芥颈。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工惠勒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爬坑。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓纠屋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盾计。 傳聞我的和親對(duì)象是個(gè)殘疾皇子售担,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容