論文閱讀
細(xì)粒度分類 (FGVC) 是為了解決“類內(nèi)分類”問(wèn)題碰纬,有別于貓狗分類悦析,它要解決的是 [這只狗是薩摩還是哈士奇] 這種問(wèn)題强戴。這類問(wèn)題的特點(diǎn)是類別之間的區(qū)別較小骑歹,本人從事的瑕疵檢測(cè)也是屬于這一領(lǐng)域道媚,有瑕疵的樣本與正常樣本往往區(qū)別很小衰琐,用普通的分類網(wǎng)絡(luò)并不能達(dá)到很好的效果羡宙,這篇論文中介紹的網(wǎng)絡(luò)親測(cè)比普通的分類網(wǎng)絡(luò)效果更好狗热。
該論文提出了一種針對(duì)細(xì)粒度視覺(jué)分類任務(wù)的方法,采用基于弱監(jiān)督學(xué)習(xí)的圖像增強(qiáng)方法僧凰,結(jié)合注意力機(jī)制训措,這使得網(wǎng)絡(luò)可以在不需要額外標(biāo)注信息的情況下聚焦到那些圖像中“有話語(yǔ)權(quán)”的部分光羞,在細(xì)粒度分類問(wèn)題中達(dá)到 state-of-art 的水準(zhǔn)纱兑。
論文地址:https://arxiv.org/pdf/1901.09891.pdf?arxiv.org
論文的前面兩小節(jié)潜慎,作者大概介紹了一下他們發(fā)這篇論文做的工作以及業(yè)界對(duì) FGVC 問(wèn)題的進(jìn)展。精華從第三小節(jié)開(kāi)始:
1.訓(xùn)練過(guò)程
上圖是整個(gè)網(wǎng)絡(luò)的訓(xùn)練過(guò)程,也是整片論文的核心驳遵。訓(xùn)練過(guò)程分成了(A)Weakly Supervised Attention Learning 以及 (B) Attention-Guided Data Augmentation 兩部分唆迁,下面分別講解這兩部分
- (A)Weakly Supervised Attention Learning
這一步是基于弱監(jiān)督的注意力區(qū)域?qū)W習(xí)竞穷。首先瘾带,網(wǎng)絡(luò)會(huì)對(duì)原始圖片基礎(chǔ) CNN 進(jìn)行特征提取,特征提取網(wǎng)絡(luò)默認(rèn)使用 inceptionV3朴恳,當(dāng)然我們也可以用其他網(wǎng)絡(luò)于颖。提取到的特征文中稱為 Feature maps森渐,隨后 Feature maps 經(jīng)過(guò)一個(gè)kernel size 為 1 的卷積運(yùn)算得到 Attention maps同衣,就是說(shuō) Attention maps 是由 Feature maps 降維之后得到的,具體降到多少維度 M 是一個(gè)超參數(shù)可以自行配置浪秘。根據(jù)作者描述秫逝,M 個(gè) Attention map 中每一個(gè)都代表了物體的一個(gè)位置例如鳥(niǎo)的頭部,飛機(jī)的機(jī)翼等金蜀。后面網(wǎng)絡(luò)還會(huì)根據(jù) Attention map 對(duì)圖片進(jìn)行針對(duì)性的增強(qiáng)渊抄。
在得到 Feature maps 和 Attention maps 之后护桦,作者受 Bilinear Pooling 的啟發(fā)二庵,提出了 Bilinear Attention Pooling催享,簡(jiǎn)稱 BAP哟绊,如上圖中所示,具體操作是將 Feature maps 與每個(gè) channel 的 Attention map 按元素相乘铣耘,如下式涡拘。相乘之后再經(jīng)過(guò)池化降維以及拼接操作獲得最后的 Feature Matrix据德,這是最后線性分類層的輸入棘利。
- (B) Attention-Guided Data Augmentation
這一步是用之前步驟獲得的 Attention map 來(lái)指導(dǎo)數(shù)據(jù)增強(qiáng)善玫,這會(huì)比普通的隨機(jī)數(shù)據(jù)增強(qiáng)更有優(yōu)勢(shì)茅郎,將Attention map 提取的部位放大作為增強(qiáng)后的數(shù)據(jù)進(jìn)行訓(xùn)練,為細(xì)粒度分類這一問(wèn)題提供了有效的解決方式奕扣。
在上面的步驟中,我們獲得了 M 個(gè) Attention Map奔害,網(wǎng)絡(luò)會(huì)在 M 個(gè)中隨機(jī)選取一個(gè)作為后面做數(shù)據(jù)增強(qiáng)的依據(jù)华临,至于為啥隨機(jī)選取我的理解是第一可以增加魯棒性雅潭,第二是可以對(duì)多個(gè)物體部位做到“雨露均沾”寻馏。隨機(jī)選取一個(gè) Attention Map 之后先對(duì)其歸一化以方便后續(xù)的操作诚欠。
現(xiàn)在可以根據(jù) Attention Map 生成 Crop Mask 了,Crop Mask 個(gè)人理解為截圖的策略尼荆,文中策略是將 中大于閾值
的元素置為 1 捅儒,其他置為 0巧还,這一塊為 1 的區(qū)域就是我們細(xì)粒度分類中需要的細(xì)節(jié)區(qū)域麸祷,將它上采樣至模型輸入的圖片大小阶牍,當(dāng)作一個(gè)新的“樣本”輸入對(duì)模型進(jìn)行訓(xùn)練星瘾,以強(qiáng)制模型“注意”這些細(xì)節(jié)區(qū)域磕瓷。上面的
作為一個(gè)超參數(shù)也是可以根據(jù)具體問(wèn)題進(jìn)行調(diào)節(jié)的生宛,文中默認(rèn)為 0.5。
Attention Dropping 與 Attention Cropping 類似审洞,將 Attention Map 中小于閾值 的元素置為 1 芒澜,其他為 0 痴晦。加入這個(gè)操作是因?yàn)樽髡甙l(fā)現(xiàn)不同的 Attention Maps 可能聚焦了物體相同的部位誊酌,為了讓模型也可以注意到其他位置碧浊,比如上圖中的 Attention Map 是鳥(niǎo)的頭部箱锐,該操作就可以讓模型注意到鳥(niǎo)的其他部位浩聋,就像是在告訴模型,看看啊臊恋,除了頭衣洁,身體長(zhǎng)這樣的也是某某種鳥(niǎo)啊。Attention Dropping 操作讓模型提高了 0.6% 的準(zhǔn)確率捞镰。
訓(xùn)練過(guò)程還有一個(gè)很新穎的點(diǎn)是損失函數(shù)的設(shè)計(jì)闸与,除了計(jì)算預(yù)測(cè)結(jié)果的交叉熵?fù)p失之外,作者為了每次各個(gè) Attention Map 可以找到相同的物體部位岸售,還加入了特征圖與部位中心的平方差之和作為懲罰項(xiàng)践樱,如下公式,這就會(huì)讓每個(gè)特征圖固定到每個(gè)部位的中心凸丸。其中部位中心也是每次學(xué)習(xí)到的特征圖來(lái)更新的拷邢,這種設(shè)計(jì)真的很妙!
2. 預(yù)測(cè)過(guò)程
預(yù)測(cè)過(guò)程依然分為兩個(gè)部分环肘,最終預(yù)測(cè)結(jié)果是兩個(gè)子結(jié)果的平均值欣喧。
第一步,原始圖片輸入訓(xùn)練好的模型中得到屬于各個(gè)類別的概率久免,以及 Attention Maps。
第二步,將第一步中得到的 M 個(gè) Attention Maps 取平均值,注意這里不是像訓(xùn)練過(guò)程里面隨機(jī)取一個(gè)區(qū)域,我的理解是這里如果隨機(jī)取的話,可能會(huì)導(dǎo)致模型不穩(wěn)定团搞,每次的預(yù)測(cè)結(jié)果不一樣复隆。下面就是與訓(xùn)練過(guò)程類似了轻局,根據(jù) Attention Maps 的平均值
畫(huà)出截取框,將截取框上采樣再放入訓(xùn)練好的網(wǎng)絡(luò)中箕母,得到“注意力區(qū)域”屬于各個(gè)類別的概率。
最后一步將上面兩步的結(jié)果取平均值得到最后的分類結(jié)果
后面作者對(duì)比了一下該算法與現(xiàn)有的算法在各個(gè)數(shù)據(jù)集上的表現(xiàn):
可以看出矾湃,該算法在各個(gè)細(xì)粒度分類數(shù)據(jù)集上的表現(xiàn)都比現(xiàn)有的分類算法有所提升拍屑,大家如果有細(xì)粒度分類的任務(wù)也可以試試該算法矢渊。
代碼
pytorch 實(shí)現(xiàn)的代碼地址:https://github.com/GuYuc/WS-DAN.PyTorch
這個(gè)代碼一個(gè)大神寫(xiě)的毡鉴,有注釋很容易看懂陈瘦,跑起來(lái)也ok,如果有問(wèn)題的話可以留言我們一起交流咖驮。
待續(xù)
后面想嘗試將其中的特征提取網(wǎng)絡(luò)換成 se_ResNeXt 袋坑,這也是在細(xì)粒度分類領(lǐng)域中常用的算法也颤,如果結(jié)合的話也許會(huì)有更好的效果,試試才知道。
最后,求贊求關(guān)注姐霍,歡迎關(guān)注我的微信公眾號(hào)[MachineLearning學(xué)習(xí)之路] 赃泡,深度學(xué)習(xí) & CV 方向的童鞋不要錯(cuò)過(guò)!况鸣!