調(diào)研了一下最近的一些輕量級(jí)網(wǎng)絡(luò)弧呐,列舉并簡(jiǎn)單介紹各個(gè)網(wǎng)絡(luò)的設(shè)計(jì)思路
PVANET
2016年1月在arxiv網(wǎng)站第一次提交
文章地址:https://arxiv.org/abs/1608.08021
代碼鏈接:https://github.com/sanghoon/pva-faster-rcnn
文章目的是減少網(wǎng)絡(luò)計(jì)算量加快網(wǎng)絡(luò)的速度瓤逼,文章采用C.Relu(類似于一個(gè)對(duì)稱的Relu函數(shù))和inception結(jié)構(gòu)(分別如下兩圖所示),通過(guò)減少通道數(shù)增加網(wǎng)絡(luò)層數(shù)來(lái)加速網(wǎng)絡(luò)
C.Relu結(jié)構(gòu)如下圖所示
新的inception結(jié)構(gòu)如下圖所示
pvanet網(wǎng)絡(luò)結(jié)構(gòu)如下表所示
SqueezeNet
2016年2月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1602.07360
代碼地址:https://github.com/DeepScale/SqueezeNet
該文章對(duì)精簡(jiǎn)網(wǎng)絡(luò)遵循三個(gè)策略:
- 使用1*1大小的卷積代替3*3的卷積耿眉,這樣可以減少網(wǎng)絡(luò)參數(shù)
- 減少3*3卷積層的輸入通道數(shù),因?yàn)橐粚?*3網(wǎng)絡(luò)參數(shù)個(gè)數(shù)計(jì)算方式為(輸入通道數(shù)*輸出通道數(shù)*3*3),減少通道數(shù)能夠很大程度的減少網(wǎng)絡(luò)參數(shù)
- 下采樣的操作盡量靠后襟锐,一般的網(wǎng)絡(luò)層后會(huì)接激活層,文章認(rèn)為激活層越大網(wǎng)絡(luò)精度越高窒朋,所以推遲對(duì)feature map下采樣,可以增加激活層的大小嫉嘀,從而提高網(wǎng)絡(luò)精度炼邀。
通過(guò)上述三點(diǎn)文章提出fire module的結(jié)構(gòu)魄揉,根據(jù)fire module構(gòu)造出sqeezenet
fire module結(jié)構(gòu)如下圖所示
sqeezenet及其兩種變式如下圖所示
Densenet
2016年8月在arxiv上第一次提交剪侮,發(fā)表于CVPR 2017
文章地址:https://arxiv.org/abs/1608.06993
代碼地址:https://github.com/liuzhuang13/DenseNet
文章通過(guò)借鑒resenet提出的新的網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)由多個(gè)dense block組成洛退,在dense block中每層的輸入是前面所有層的輸出concat形成的瓣俯,這樣做有下列優(yōu)點(diǎn):
- 減輕了vanishing-gradient(梯度消失)
- 加強(qiáng)了feature的傳遞
- 更有效地利用了feature
- 一定程度上較少了參數(shù)數(shù)量
Dense block結(jié)構(gòu)如下圖所示
DenseNet結(jié)構(gòu)如下表所示
Xception
2016年10月在arxiv上第一次提交,發(fā)表于CVPR 2017
文章地址:https://arxiv.org/abs/1610.02357
代碼地址:https://keras.io/applications/#xception
之所以叫Xception兵怯,文章指出是因?yàn)殪`感來(lái)自于inception彩匕,網(wǎng)絡(luò)結(jié)構(gòu)其實(shí)和inception沒(méi)太大關(guān)系,主要是該網(wǎng)絡(luò)使用了depthwise和pointwise的卷積媒区,構(gòu)建了一個(gè)新的網(wǎng)絡(luò)驼仪,在與inception V3相同參數(shù)量的情況下獲得了比inception V3更好的結(jié)果
Xception網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示
其中的SeparableConv就是由depthwise和pointwise的卷積組成
CondenseNet
2017年11月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1711.09224
代碼地址: https:// github.com/ShichenLiu/CondenseNet
文章是對(duì)Densenet的改進(jìn),在Densenet的基礎(chǔ)上引入了group conv袜漩,但是對(duì)于1*1的卷積采用group conv會(huì)導(dǎo)致網(wǎng)絡(luò)效果下降绪爸,文章猜測(cè)是因?yàn)?*1的輸入是由前面所有的輸出concat得到的,使用group會(huì)導(dǎo)致一些不相關(guān)的feature map進(jìn)行計(jì)算宙攻,從而使得效果降低奠货,所以對(duì)于1*1的卷積文章提出了Learned Group Convolution。
Learned Group Convolution不同于Group convolution的是座掘,它可以自己學(xué)習(xí)分組递惋,而且在得到分組結(jié)果后裁去一些組里面不重要的連接
最后對(duì)于整體網(wǎng)絡(luò)結(jié)構(gòu)不同于Densenet的是,不同的block之間的feature map也相互連接溢陪,隨著網(wǎng)絡(luò)的加深增大了growth rate(densenet每層的輸出通道數(shù))
下圖為densenet與CondenseNet單元結(jié)構(gòu)(block)的對(duì)比圖
左圖為DenseNet的結(jié)構(gòu)萍虽,中圖為CondenseNet訓(xùn)練的結(jié)構(gòu),右圖為CondenseNet推斷(inference)的結(jié)構(gòu)
CondenseNet網(wǎng)絡(luò)的結(jié)構(gòu)示意圖如下圖所示
MobileNets
2017年4月在arxiv上提交
論文地址:https://arxiv.org/abs/1704.04861
代碼地址:https://github.com/tensorflow/models/tree/master/research/slim/nets
文章目的:該網(wǎng)絡(luò)設(shè)計(jì)的主要目的不是減小網(wǎng)絡(luò)而是加快網(wǎng)絡(luò)的計(jì)算速度
主要思想是將一個(gè)普通的卷積分解為一個(gè)depth wise的卷積和一個(gè)point wise的卷積
depthwise就是每個(gè)通道有一個(gè)卷積核形真,卷積結(jié)果不想加是獨(dú)立的
pointwise就是將通道數(shù)轉(zhuǎn)化為最終輸出的通道數(shù)杉编,這樣可以將各個(gè)通道的輸出結(jié)果有個(gè)結(jié)合的過(guò)程
網(wǎng)絡(luò)還有兩個(gè)參數(shù)控制通道數(shù)和feature map的大小可以在程序中進(jìn)行設(shè)置
普通卷積、depthwise卷積没酣、pointwise卷積的區(qū)別如下圖所示
MobileNets網(wǎng)絡(luò)結(jié)構(gòu)如下表所示
MobileNetV2
2018年1月在arxiv上第一次提交王财,發(fā)表于CVPR 2018
文章地址:https://arxiv.org/abs/1801.04381
代碼地址:https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet
文章目的:該網(wǎng)絡(luò)設(shè)計(jì)是給手機(jī)端使用
網(wǎng)絡(luò)中繼承了mobilenet的depthwise和pointwise的思想,并且采用了resnet中的bottleneck的塊結(jié)構(gòu)
該文章殘差塊稱為Inverted residuals裕便,不同于殘差網(wǎng)絡(luò)的殘差塊绒净,這里殘差塊里面的通道數(shù)是先增后減(先增加通道數(shù)可以增加網(wǎng)絡(luò)容量),而且減少通道數(shù)的卷積層是不帶relu函數(shù)的(文章認(rèn)為relu會(huì)對(duì)提取好的特征有一定的損傷)
Inverted residuals結(jié)構(gòu)如下圖所示
左圖為stride=1偿衰,右圖為stride=2的Inverted residuals結(jié)構(gòu)
MobileNetV2結(jié)構(gòu)如下表所示
ShuffleNet
2017年7月在arxiv上第一次提交
文章地址:https://arxiv.org/abs/1707.01083
文章目的:文章主要考慮的是網(wǎng)絡(luò)的計(jì)算量挂疆,提出高效的網(wǎng)絡(luò)
文章采用了group convolutions和channels shuffle改览,采用group convolutions是為了減少計(jì)算量,采用channels shuffle是為了防止group convolutions帶來(lái)的負(fù)效應(yīng)
shuffle的結(jié)構(gòu)
左圖為正經(jīng)group convulution這樣的操作會(huì)導(dǎo)致輸入一直到輸出提取的特征都是分離的沒(méi)有任何交集
中圖的操作方式會(huì)導(dǎo)致GConv2的輸入與Gconv1是強(qiáng)相關(guān)的
右圖加入了shuffle的結(jié)構(gòu)缤言,這樣不同組卷積的結(jié)果能夠一起參與運(yùn)算
ShuffleNet Units
左圖為正經(jīng)的resnet結(jié)構(gòu)并將的卷積改為depthwise convolution
中圖和右圖為ShuffleNet Units宝当,其中中圖stride=1,右圖stride=2
ShuffleNet結(jié)構(gòu)如下圖所示
ShuffleNet V2
2018年7月在arxiv上提交胆萧,發(fā)表在ECCV 2018
文章地址:https://arxiv.org/abs/1807.11164
文章認(rèn)為現(xiàn)在很多評(píng)價(jià)網(wǎng)絡(luò)效率的論文都是只考慮FLOPS庆揩,這個(gè)一種間接的評(píng)價(jià)方法,應(yīng)該直接測(cè)試網(wǎng)絡(luò)的速度跌穗,因?yàn)橄嗤現(xiàn)LOPS的網(wǎng)絡(luò)可能因?yàn)橛布?nèi)存等原因?qū)е戮W(wǎng)絡(luò)速度不同
通過(guò)一系列的試驗(yàn)订晌,文章總結(jié)出四點(diǎn):
- 對(duì)于網(wǎng)絡(luò)的某一層來(lái)說(shuō),輸入與輸出通道數(shù)相同這樣能更高的加速網(wǎng)絡(luò)的計(jì)算速度
- 群卷積對(duì)網(wǎng)絡(luò)計(jì)算速度有一定影響(在相同的FLOPS下蚌吸,群卷積的分的越細(xì)锈拨,即g越大,速度越慢)
- 分支越多羹唠,網(wǎng)絡(luò)計(jì)算速度越慢
- 減少element-wise的操作
ShuffleNet V2 Units結(jié)構(gòu)如下圖所示
a奕枢、b圖為ShuffleNet Units,c佩微、d圖為ShuffleNet V2 Units
a\c圖stride=1缝彬,b\d圖stride=2
ShuffleNet V2網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示
網(wǎng)絡(luò)框架和shuffle net基本一樣
IGCV1
2017年7月在arxiv上第一次提交,發(fā)表在ICCV 2017
文章地址:https://arxiv.org/abs/1707.02725
文中提出了新的block來(lái)消除冗余的卷積核喊衫,認(rèn)為該結(jié)構(gòu)在相同參數(shù)量的情況下相對(duì)與普通的卷積網(wǎng)絡(luò)結(jié)構(gòu)更寬跌造,效果更好
新的block就是group convolution+point wise的結(jié)合
IGCV1 block結(jié)構(gòu)如下圖所示
primary group convolution就是普通的group convolution
secondary group convolution就是point wise convolution
IGCV2
2018年4月在arxiv上提交,發(fā)表在CVPR 2018
文章地址:https://arxiv.org/abs/1804.06202
來(lái)自IGCV1的啟發(fā)族购。第一壳贪,組卷積能夠在保證性能的情況下降低復(fù)雜度,減少計(jì)算量寝杖;第二违施,組卷積中每組分配兩個(gè)通道能夠達(dá)到最佳性能。通過(guò)上述兩點(diǎn)將V1擴(kuò)展瑟幕,不只是將輸入分為兩組卷積磕蒲,而是采用交錯(cuò)組卷積。
IGCV2 block結(jié)構(gòu)如下圖所示
IGCV3
2018年6月在arxiv上提交
文章地址:https://arxiv.org/abs/1806.00178
代碼地址: https://github.com/homles11/IGCV3
在IGCV2和mobilenetV2基礎(chǔ)上提出了新的block只盹,block由point wise conv和group wise組成的一個(gè)類Inverted residuals的結(jié)構(gòu)辣往,先增加通道數(shù)后減少通道數(shù)的操作
IGCV3 block結(jié)構(gòu)如下圖所示
下圖可以很直觀的看出block是先增加通道數(shù)后減少通道數(shù)