細(xì)膩度圖像分類MACNN
一、MACNN介紹
細(xì)粒度識(shí)別通常包括兩個(gè)問(wèn)題:區(qū)域定位和基于區(qū)域的細(xì)粒度特征學(xué)習(xí)。傳統(tǒng)的方法都是獨(dú)立的解決這兩個(gè)問(wèn)題,卻忽略了兩者是可以相互促進(jìn)的。論文作者認(rèn)為兩者是相互關(guān)聯(lián)的,即初始的區(qū)域定位能夠?qū)W到細(xì)粒度特征,反過(guò)來(lái)能夠促進(jìn)生成更加精細(xì)的區(qū)域定位,于是作者提出了MACNN,它能夠以一種相互促進(jìn)的方式來(lái)進(jìn)行區(qū)域定位和基于區(qū)域的細(xì)粒度特征學(xué)習(xí)。

二、MACNN的結(jié)構(gòu)
MACNN包括:convolution、channel grouping 、part classifification sub-networks

如上圖所示,MACNN首先以一張F(tuán)ull Image作為輸入,經(jīng)過(guò)convolution層后,生成了feature map,大家應(yīng)該知道,每一個(gè)feature channel 代表了原圖中的某一個(gè)部分,也就是會(huì)對(duì)原圖中的某一個(gè)部分產(chǎn)生峰值響應(yīng),即上圖(c)中有12個(gè)feature channel,每一個(gè)feature channel上都有白色的區(qū)域,那個(gè)就是峰值響應(yīng)。channel grouping要做的事就是把這些峰值響應(yīng)區(qū)域相鄰的channel給放在一塊,也就是把上圖(c)中顏色相同的channel放在一塊,最后生成(f),至于怎么生成(f),后續(xù)會(huì)有講解,可以看到在(f)中會(huì)有四個(gè)不同的區(qū)域,我們要對(duì)每個(gè)區(qū)域進(jìn)行分類,所以使用part classifification sub-networks對(duì)每一個(gè)part進(jìn)行分類,這就是MACNN的網(wǎng)絡(luò)結(jié)構(gòu)。
三、MACNN采用的方法
首先給出一張圖片X,我們提取這張圖片基于區(qū)域的特征,所以把這張圖片喂到卷積神經(jīng)網(wǎng)絡(luò)中提取特征,即:W ? X,這里的?代表卷積、池化、激活一系列操作,W代表卷積層的所有參數(shù),最后得到的conv layers的大小為w × h × c,w代表寬度,h代表高度,c代表通道數(shù)。
由于我們要對(duì)channel進(jìn)行分組,我們?cè)O(shè)定要將channel分為N組,那么就需要N個(gè)channel layers,為了能夠使channel grouping優(yōu)化,論文中采用FC層來(lái)完成通道分組操作,對(duì)于N個(gè)part,則有F(·) = [f1(·), ..., fN (·)]。每一個(gè)f(.)的輸入都是卷積層的feature map,公式為:

結(jié)果為權(quán)重向量:

這里得到的結(jié)果為一個(gè)vector,個(gè)數(shù)為特征圖的通道數(shù),代表的是什么含義呢?代表的就是第j(1<j<c)個(gè)通道是否屬于第i個(gè)part,如果在,則
=1,反之為0,當(dāng)然只是接近于1或者0,因?yàn)橹挥性诶硐肭闆r下才是等于1或者0。
得到了權(quán)重向量之后,我們就可以生成attention map,公式如下:

這里的
代表的是第j個(gè)通道的特征,然后乘以一個(gè)標(biāo)量
,這個(gè)是什么意思呢?意思就是把屬于相同區(qū)域的通道給累加起來(lái)從而獲取更加豐富的信息,然后經(jīng)過(guò)sigmoid函數(shù)得到一個(gè)probablity,仔細(xì)品一品看看是不是這個(gè)道理。
有了attention map之后,我們開(kāi)始生成part representation,公式如下:

這里的
代表的是第j個(gè)通道的特征,然后逐元素相乘
,
代表的只是對(duì)于某一個(gè)part來(lái)說(shuō),某一個(gè)像素屬于這個(gè)part的probability,也之所以作者做了一下歸一化(通過(guò)所有元素的和)。
得到了part representation之后就可以通過(guò)part classifification sub-networks對(duì)每一個(gè)part進(jìn)行分類啦。
四、MACNN損失函數(shù)
MACNN損失函數(shù)如下:

其中前面一部分就是我們常見(jiàn)的分類損失,后一部分的公式如下:



其中Dis()可以使得part內(nèi)變得更加聚集,Div()可以使得part間變得更加分散,這樣可以使得channel盡可能的只存在于某一個(gè)part中,另外,通過(guò)存在多個(gè)part,能夠使得在部分區(qū)域被遮擋的情況下,仍然能夠通過(guò)其他的part進(jìn)行分類,增加了分類網(wǎng)絡(luò)的泛化性。
作者的優(yōu)化思路是基于上面兩個(gè)損失函數(shù)進(jìn)行的,這兩個(gè)損失函數(shù)相互加強(qiáng),不斷迭代。先固定住圖二(b)、(g)部分的參數(shù),使用Lcng優(yōu)化channels grouping部分。然后固定住channels grouping的參數(shù),然后使用Lcls對(duì)(b)、(g)部分進(jìn)行優(yōu)化。這樣不斷迭代,直到兩個(gè)損失值都不再變化。
