1. 程式人生 > >【轉載】細粒度影象識別Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification

【轉載】細粒度影象識別Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification

細粒度影象識別Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification(OPADDL) 論文筆記

原文:"Object-Part Attention Model for Fine-grained Image Classification", IEEE Transactions on Image Processing (TIP), Vol. 27, No. 3, pp. 1487-1500, Mar. 2018.
作者:Yuxin Peng, Xiangteng He, and Junjie Zhao(北京大學)
下載地址:https://arxiv.org/abs/1704.01740 
【pdf】

細粒度影象識別系列其他文章:

1 簡介

  • 細粒度影象識別是現在影象分類中一個頗具挑戰性的任務,它的目標是在一個大類中的數百數千個子類中正確識別目標。相同的子類中物體的動作姿態可能大不相同,不同的子類中物體可能又有著相同的動作姿態,這是識別的一大難點。細粒度影象分類的關鍵點在尋找一些存在細微差別的區域性區域(比如鳥類的喙、眼睛、爪子等),因此,現有的細粒度影象識別演算法不但尋找影象中的整個物體(object),還尋找一些有區別的區域性(part)。
    image_1bg2p0e0617kbkod1bt21mjk34n9.png-65.8kB
    image_1bg2ppbik1td581s11as1h6j1bu7m.png-260.9kB
  • 過去常用的生成object和part演算法為Selective search,但它的召回率高,精準度低。細粒度影象識別中的尋找object和part可以視為一個兩級注意力模型,一級是尋找object,另一級是尋找parts。大多數演算法在訓練尋找object和part的網路時都依賴於object-level attention 和 parts annotations等額外標註
    ,這是一個非常大的勞動量。此為第一個限制。
  • 雖然現在有很多人開始不用annotations來訓練尋找object和part的網路,但他們的生成方法破壞了object和parts之間的關聯性,這就導致生成的parts包含大量背景,且parts之間互相重疊嚴重。此為第二個限制。
  • 為了解決上述兩個限制,作者提出了object-part attention driven discriminative localization(OPADDL)方法。它在生成object和part方面使用了兩個模型:
    • Object-Part Attention Model:該模型可以不利用人工annotaions資訊來生成object和parts。它的注意力分為兩級:Object級注意力模型
      利用CNN中的全域性平均池化提取saliency map,以定位物體在圖中的位置;Part級注意力模型首先選出有區別的部分,然後再把它們根據神經網路中的 cluster pattern 排列起來,以學習區域性特徵。將兩級模型連線起來,就可以增強multi-view and multi-scale的特徵學習。
    • Object-Part Spatial Constraint Model:該模型同樣分為兩個約束:Object級空間約束強行讓選擇出來的parts定位到object區域中;Part級空間約束減少parts中的重疊,且強調parts的顯著性,這樣可以消除重複且提高parts的區分性。兩種空間約束聯合起來,不僅可以發現更多顯著的區域性細節,還可以大大提高細粒度影象分類的準確率。
  • 最後強調一下,作者使用的弱監督方法,即訓練和測試時不用任何annotations!

2 相關工作

  • 本章就不詳細展開了,有興趣的讀者可以看看原文。提一下,現有的細粒度影象識別方法可以分成三類:Ensemble of Networks Based Methods、Visual Attention Based Methods、Part Detection Based Method。

3 OPADDL模型

image_1bg2sqh5e1bg61fb1mvs18j11ara13.png-253.5kB

  • OPADDL模型的全部結構正如上圖所呈示,咋一看模型十分複雜,接下來我們把模型進行拆分,一塊一塊地說明。

A. Object-level Attention Model

  • 現有的很多弱監督模型著重於提取parts,而忽略了object的定位,事先提取object是可以除去很多背景噪聲的。作者使用saliency extraction方法來自動定位object,其中分為兩個內容:Patch Filter濾掉一張圖中的背景patch,保留和object有關的patch來訓練一個CNN網路ClassNet;Saliency Extraction通過全域性平均池化(GAP)提取saliency map,完成object的定位。整個網路稱為ObjectNet
    • Patch Filter:對於一張圖,作者先用傳統的selective search生成一堆patch,再用一個事先在ImageNet上預訓練好的CNN(作者稱之為FilterNet)進一步篩掉更多的背景patch。篩選的準則就是設定一個閾值,CNN的softmax層的輸出(根據標籤)高於閾值才保留。注意這個patch filter只在訓練階段使用,測試時就直接上ClassNet了。
    • Saliency Extraction:Saliency map表明有在CNN子類別識別中做出貢獻的區域(Fig.4第二行)。上一步用patch filter篩出一些包含pbject的patch後,用CAM來生成子類別c的saliency map \(M_c\)接著根據saliency map就可以生成定位框(Fig.4第三行)。具體生成M的公式如下:

     image_1bg30t9911icujel1pnt1ikd1lh11g.png-35.2kB

    image_1bg30tg80d39q0q1pcm3c5r2f1t.png-289kB

B. Part-level Attention Model

和上面對應,B小節整個網路統稱為“PartNet”

Object-Part Spatial Constraint Model

  • 本小節說的是object和part兩個級別的空間約束。上面已經提到過了,沒有object空間約束會使提取的parts包含大量背景,而沒有parts空間約束會使提取的parts大量重疊,有些關鍵part被忽略。
  • 給定一張影象\(I\),它的saliency map \(M\)和object邊緣\(b\)已經從小節A中獲得。接下來以\(\mathbb{P}\)表示selective search生成的所有patch集合,\(P=\{p_1,p_2,...p_n\}\)代表選出來的n個parts。整個約束要做的事情就是實現如下最大值優化:

image_1bg33s2t0g251ba3776vjv7442n.png-18.1kB

    • \(\Delta_{box}(P)\)表示object的空間約束。具體定義如下圖。從定義可以看出,該約束就是為了鼓勵parts和object儘可能重疊,IOU過閾值的個數越多,分數越高。

    image_1bg346i2r1qn91so615t11djnoa734.png-15.4kB

    • \(\Delta_{parts}(P)\)表示parts空間約束。既然saliency map可以表現出影象有區別的地方,作者就將saliency和parts的空間關係聯合起來定義約束:

    image_1bg34a87r1jj35vu1uvb1jg03ts3h.png-32.6kB

    image_1bg34ahr01s3ug001gha1ut69c3u.png-19.1kB

Part Alignment

  • 通過上面約束模型求解出來的n個patch是無序的,在這一節裡面將把它們按語義分類好(哪些是頭,哪些是腳等等)。按語義分類的主要依據是CNN倒數第二層輸出不同通道的響應區別,有些通道可能對頭部有明顯響應,有些則對腳有明顯相應。
  • 首先計算兩個神經元\(u_iu_j\)的相似矩陣\(S(i,j)\),接著用譜聚類把神經元分成m個簇。具體的操作步驟如下:
    • 改變patch的尺寸,讓它傳播到網路倒數第二層時只有1*1大小(單值);
    • 前向傳播patch,每個通道都得到一個分數;
    • 每個簇內的通道值相加得到簇的分數(共m個分數);
    • 一個patch哪個簇分數最高,就把這個patch歸到哪一類去,最後這些patch就能按語義被分成幾類簇。整個演算法如下描述:
      image_1bg3fa33l1ii2goa1gfgjfusnd4b.png-69.6kB

C. Final Prediction

  • 上面出現了許多網路,現在總結一下。ClassNet關注的是原始影象,ObjectNet關注的是目標object,PartNet關注的是區域性parts。ObjectNet裡面還有FilterNet
  • Object-level注意模型首先利用FilterNet生成與object相關的patch,這些patch又推動ClassNet更好地學習特徵和目標定位。part-level注意模型選擇出合適的區域性資訊。
  • 最後的得分方式是:
    image_1bg3gembm1nvu1gpb8k71tdj1l6n4o.png-9.2kB
    三個分數分別代表了ClassNet、ObjectNet、PartNet的softmax值,\(\alpha, \beta\, \gamma\)通過交叉驗證來選擇,以使final_score最高。

4 實驗

資料集

  • 文章中使用了三個常用細粒度影象資料集:CUB-200-2011(鳥類)、Cars-196(汽車)和Oxford-IIIT Pet(貓狗等寵物)。評價標準很簡單,正確識別數除以總數。

網路細節

  • 定位和分類網路都用VGGNET作為原型。定位網路中,VGG的conv5-3被移除,並且替換成3*3卷積核,1 padding,1024通道的卷積層,後面跟著GAP和softmax。修正後的VGGNET在ImageNet上預訓練好。
  • 分類網路還加上了batch normalization。由於要識別原始影象、object和parts三塊,每個都用相同的CNN結構,只是訓練資料不同。

分類結果

  • CUB-200-2011上85.83%;Cars-196上92.19%;Oxford-IIIT Pet上93.81%。三個都是當前最高。

轉載別人對自己論文的筆記的滋味真是複雜啊。。

相關推薦

轉載粒度影象識別Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification

細粒度影象識別Object-Part Attention Driven Discriminative Localization for Fine-grained Image Classification(OPADDL) 論文筆記 原文:"Object-Part Attention Model for Fin

轉載Android Gradle Build Error:Some file crunching failed, see logs for details解決辦法

mage erl 博客 details efault roi 成了 options 文件 錯誤日誌:Error:java.lang.RuntimeException: Some file crunching failed, see logs for details Lo

轉載TensorFlow實戰——CNN(VGGNet19)——影象風格轉化

轉自http://blog.csdn.net/u011239443/article/details/73721903 這次我們要做一件比較有趣的事——講影象風格轉化。 如何將一張杭州西湖圖片: 將其風格轉化為和梵高的《星夜》一樣具有鮮明藝術的風格呢? 先給出完整的

Mac + Python + Selenium之PyCharm配置Selenium自動化 轉載Pycharm編輯器破解步驟之idea和Pycharm 等系列產品啟用啟用方法和啟用碼(附:Mac系統) Python pip 命令不識別

一、安裝PyCharm 1、下載地址: Pycharm編輯器官網下載地址 2、安裝完成之後開啟,一路下去點選,直到填寫註冊碼,參考: 《【轉載】【Pycharm編輯器破解步驟】之idea和Pycharm 等系列產品啟用啟用方法和啟用碼(附:Mac系統)》   二、配置Python環境並安

轉載ABAP面向物件(Object Orientation)程式設計2-類的靜態屬性

對於ABAP OO中的靜態屬性,使用  class-data語句定義(ClASS-DATA attr(屬性)[可選]),語句CLASS-DATA只允許被宣告在介面或者類中,這個語句定義一個靜態屬性attr的有效性是和類的例項無關的,只對類的本身有效。所有的類的例項和子類都可以

轉載ABAP面向物件(Object Orientation)程式設計4-類的構造方法(constructor method)

建構函式就是CREATE OBJECT的時候會自動呼叫的方法(method).分為靜態和非靜態兩種。 1,靜態構造方法 語法: 1 CLASS-METHODS class_constructor. 靜態的建構函式是每個類都已

轉載TCP協議狀態簡介

正在 如果 接下來 告訴 ket 正常 主動 基本上 一個 1、建立連接協議(三次握手)(1)客戶端發送一個帶SYN標誌的TCP報文到服務器。這是三次握手過程中的報文1。(2) 服務器端回應客戶端的,這是三次握手中的第2個報文,這個報文同時帶ACK標誌和SYN標誌。因此它表

轉載64位Win7下成功安裝64位的Oracle、32位的InstantClient和PLSQL Developer

註銷 五步 ldb 需要 windows inf 目錄 登錄 class 感謝原作者,原文鏈接:https://wenku.baidu.com/view/433d0b544a7302768f993926.html 經實際安裝操作,通過以下步驟能夠成功地把Oracle安裝到

轉載MapReduce編程(一) Intellij Idea配置MapReduce編程環境

.net class 上傳 -c word 指定 otl 輸出信息 resource 目錄(?)[-] 一軟件環境 二創建maven工程 三添加maven依賴 四配置log4j 五啟動Hadoop 六運行WordCount從本地讀取文件 七運行Word

轉載Hadoop 2.7.3 和Hbase 1.2.4安裝教程

啟動 運行 property new rop net 文本文 .tar.gz cor 轉載地址:http://blog.csdn.net/napoay/article/details/54136398 目錄(?)[+] 一、機器環境

組播IP轉換為組播MAC地址轉載

映射關系 映射 過程 clas 網段 使用 3層 ans spa 鏈接:https://www.zhihu.com/question/36730567/answer/83083851來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。 組播IP轉換

轉載 Spark性能優化指南——基礎篇

否則 內存占用 是否 進行 優先 邏輯 我們 流式 字節數組 前言 開發調優 調優概述 原則一:避免創建重復的RDD 原則二:盡可能復用同一個RDD 原則三:對多次使用的RDD進行持久化 原則四:盡量避免使用shuffle類算子 原則五:使用map-side預聚

轉載設計模式_抽象工廠模式

ron mage ges 定義 ima cnblogs 工廠 一個 相互 定義:為創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類。 是工廠方法的擴展。    【轉載】設計模式_抽象工廠模式

轉載5天不再懼怕多線程——第一天 嘗試Thread

堆棧 () ole 命名空間 sage console 我們 exc add 原本準備在mongodb之後寫一個lucene.net系列,不過這幾天用到多線程時才發現自己對多線程的了解少之又少,僅僅停留在lock上面, 故這幾天看了下線程參考手冊結合自己的心得整理一下放在博

轉載5天不再懼怕多線程——第四天 信號量

win 釋放 對象 sem eap 調用 state logs 一份 今天整理“信號量”的相關知識,其實想想也蠻有趣的,鎖,互斥,信號量都可以實現線程同步,在framework裏面主要有三種。 <1>:ManualResetEvent <2>:Aut

轉載5天不再懼怕多線程——第五天 線程池

執行 targe 空閑 timer max als htm port 電腦 說到多線程,不可不說線程池,C#中關於池的概念很多,今天來整理下ThreadPool的使用。 是的,如果你很懶,如果你的執行任務比較短,如果你不想對線程做更精細的控制,那麽把這些繁瑣的東西

轉載5天不再懼怕多線程——第三天 互斥體

多線程 str .get 整理 tle ram nbsp line 一點 沒想到我的前兩篇文章還挺受歡迎的,謝謝大家,今天整理下Mutex的使用。 一:Mutex 首先看下MSDN對它的解釋: 不錯,出現了一個亮點,可用於“進程間同步“,既然進程間都可以同步,那

轉載5天不再懼怕多線程——第二天 鎖機制

mon www downgrade current 鎖機制 鎖定 tex 針對 read 當多個線程在並發的時候,難免會碰到相互沖突的事情,比如最經典的ATM機的問題,並發不可怕,可怕的是我們沒有能力控制。 線程以我的理解可以分為三種 ① 鎖。 ② 互斥。 ③ 信號。

轉載大牛很通俗地介紹《信號與系統》

推廣 mil 原始的 智能控制 最好 有時 如果 數學 根據 轉載地址:http://emuch.net/bbs/viewthread.php?tid=4009368&fpage=1 第一課 什麽是卷積 卷積有什麽用 什麽是傅利葉變換 什麽是拉普拉斯變換 引子

轉載對一致性Hash算法,Java代碼實現的深入研究

困難 之前 存在 itl ger 正常 我不 操作 算法實現 原文地址:http://www.cnblogs.com/xrq730/p/5186728.html 一致性Hash算法 關於一致性Hash算法,在我之前的博文中已經有多次提到了,MemCache超詳細解讀一