CAM:如何利用分類網絡找到物體的位置?
項目地址:https://github.com/metalbubble/CAM
論文:Learning Deep Features for Discriminative Localization
應用:在弱監督語義分割(僅有圖片level的監督信息時)定位物體的位置
方法:很簡單,其實就是在ImageNet訓練的分類網絡進行改進得到的,做了什麼修改呢?
首先,發現下圖中,沒有了全連接層哦~
(1)通過對卷積層輸出的feature maps使用GAP Pooling生成一個向量
具體地,即feature maps 尺寸爲C*H*W,C爲通道數目也是feature map數目,這裏將一個feature map進行GAP pooling 即變爲一個值,這個值爲feature map 的均值。
其次,將feature maps通過GAP pooling成一個向量之後,該進行分類啦,這裏是不是有一些分類的參數呢?如圖中的W,那麼對於最後的每一個預測值,都是由前面pooling來的一個向量乘以對應的W的值的加權和得到的,對於不同的w,如圖中的w1-wn,是不是可以表示前面的這些feature maps對於預測成該分類的重要程度呢?
(2)使用最後一層預測爲類別C(假設爲圖中最後一列的標出的第二個圓)的weights參數與對應的feature map相乘,最後相加就得到最後的CAM啦
這樣就可以得到下面的結果啦,具體操作及代碼細節,見下節