電子 網(wǎng)站建設(shè)申請(qǐng)過程網(wǎng)站排名seo培訓(xùn)
一、逐點(diǎn)卷積
??當(dāng)前先進(jìn)的輕量化網(wǎng)絡(luò)大都使用深度可分離卷積或組卷積,以降低網(wǎng)絡(luò)的計(jì)算量,但這兩種操作都無法改變特征圖的通道數(shù),因此需要使用1×1的卷積??傮w來說,逐點(diǎn)的1×1卷積有如下兩點(diǎn)特性:
-
可以促進(jìn)通道之間的信息融合,改變通道至指定維度。
-
輕量化網(wǎng)絡(luò)中1×1卷積占據(jù)了大量的計(jì)算,并且致使通道之間充滿約束,一定程度上降低了模型的精度。
??為了進(jìn)一步降低計(jì)算量,ShuffleNet提出了通道混洗的操作,通過通道混洗也可以完成通道之間信息的融合。
二、通道混洗
1. 實(shí)現(xiàn)思想
??圖2-1中a圖代表了常規(guī)的兩個(gè)組卷積操作,可以看到,如果沒有逐點(diǎn)的1×1卷積或者通道混洗,最終輸出的特征僅由一部分輸入通道的特征計(jì)算得出,這種操作阻礙了信息的流通,進(jìn)而降低了特征的表達(dá)能力。
??因此,我們希望在一個(gè)組卷積之后,能夠?qū)⑻卣鲌D之間的通道信息進(jìn)行融合,類似于圖2-1中b操作,將每一個(gè)組的特征分散到不同的組之后,再進(jìn)行下一組卷積,這樣輸出的特征就能夠包含每一個(gè)組的特征,而通道混洗恰好能夠?qū)崿F(xiàn)這個(gè)過程,如圖2-1的c所示。
2. 實(shí)現(xiàn)過程
??通道混洗可以通過幾個(gè)常規(guī)的張量操作巧妙地實(shí)現(xiàn),如圖2-2所示。為了更好地講解實(shí)現(xiàn)過程,這里對(duì)輸入通道做了1-12的編號(hào),一共包含3個(gè)組,每個(gè)組包含4個(gè)通道。
??下面詳細(xì)介紹混洗過程中使用到的3個(gè)操作:
- Reshape:首先將輸入通道的一個(gè)維度Reshape成兩個(gè)維度,一個(gè)是卷積組數(shù),一個(gè)是每個(gè)卷積包含的通道數(shù)。
- Transpose:將擴(kuò)展出的兩維進(jìn)行置換。
- Flatten:將置換后的通道Flatten平展后即可完成最后的通道混洗。
3. 代碼示例
def channel_shuffle(x, groups):batchsize, num_channels, height, width = x.data.size()channels_per_groups = num_channels // groups# Reshape操作,將通道擴(kuò)展為兩維x = x.view(batchsize, groups, channels_per_group, height, width)# Transpose操作,將組卷積兩個(gè)維度進(jìn)行置換x = torch.transpose(x, 1, 2).contiguous()# Flatten操作,兩個(gè)維度平展成一個(gè)維度x = x.view(batchsize, -1, height, width)return x