1. 程式人生 > >【CVPR2018】物體檢測中的結構推理網路

【CVPR2018】物體檢測中的結構推理網路

物體檢測,是計算機視覺任務的基礎,其精度將直接影響相關視覺任務的效果,在深度學習方法興起之前,開展了很多利用場景上下文來提高檢測精度的研究。近年來,隨著Faster RCNN等深度學習方法的興起,在日益強調資料和效能的背景下,對上下文關聯資訊的利用卻鮮有嘗試。本文將介紹一種結構推理網路(Structure Inference Net,簡稱SIN),將物體檢測問題形式化為圖結構推理,採用圖結構同時建模物體細節特徵、場景上下文、以及物體之間關係,採用門控迴圈單元(GRU)的訊息傳遞機制對影象中物體的類別和位置進行聯合推理。在基準資料集PASCAL VOC和MS COCO上的實驗,驗證了方法在精度提升方面的有效性,同時證實了上下文資訊對於輸出更為符合人類感知的檢測結果確有幫助。

1.問題&動機

640?wx_fmt=jpeg

圖1.Faster R-CNN檢測器典型錯誤樣例

目前的檢測器一般在分類和位置迴歸時,只利用了興趣區域內的視覺特徵,尤其是兩階段檢測器(將檢測視為對候選區域的分類問題)。所以檢測器就會出現圖1中典型的檢測錯誤(樣例來自於Faster R-CNN方法)。左圖將水中的船隻誤檢成了汽車,如果能夠利用全圖的場景上下文資訊,那可能檢測器就不會認為水中是汽車了。右圖漏檢了滑鼠,如果利用物體之間的關係,電腦和滑鼠經常一起相鄰出現,那麼可能就能夠推斷到滑鼠的存在了。

640?wx_fmt=jpeg

圖2.圖結構問題

自然而然,我們的動機就是不僅僅依賴物體視覺特徵,同時利用場景上下文和物體關係來聯合推理解決物體檢測問題。我們認為自然場景圖是一個有機的結構體,如圖2所示,包含三種視覺概念分別是場景、物體、物體間關係。在場景的指導下,物體之間通過關係程度相互互動。所以我們將問題形式化為一個圖結構G=(V,E,s),其中V是節點node代表ROI,E是邊edge代表ROI之間的關係程度打分,s是場景scene描述。通過圖結構中的元素聯合推理互動,物體狀態得到豐富的表示再用於分類和位置refine迴歸。下面首先需要對圖結構中的三元素進行建模,再設計相應的互動機制來相互傳遞資訊。

2.方法

理論上來說,我們的模組可以應用到各種框架上(單階段和兩階段檢測器)。這裡我們使用Faster R-CNN作為基本框架,設計我們的結構推理網路,整體框架如圖3所示。

2.1 圖結構建模

640?wx_fmt=jpeg

圖3.方法框架

其中,scene是場景,這裡沒有場景標籤,所以用全圖特徵來建模。node是ROI,也就是RPN的生成結果,選取固定數目128個ROIs。edge是物體間的關係,這裡是一個標量相當於一個打分,用ROI之間的視覺特徵和位置關係同時建模,表達關係的時候距離很重要,具體是什麼東西也很重要,例如對於鍵盤來說,同樣近的滑鼠比杯子更重要。

2.2 互動機制

640?wx_fmt=jpeg

圖4.訊息傳遞機制

在場景指導下,物體之間通過關係程度相互互動,其實就是物體接收場景的指導資訊,每個物體接收其他物體傳遞來的資訊,只不過關係不同,接收程度不同。所以互動機制也就是訊息傳遞,我們這裡採用GRU來實現,如圖4所示。例如當前物體需要接受場景的資訊,那麼將當前物體的狀態作為隱狀態,場景資訊作為輸入,輸出即接收資訊更新後的物體狀態;同理當物體需要接受其他物體的資訊,同樣將當前物體狀態作為隱狀態,其他物體傳遞來的資訊作為輸入,輸出即更新後的物體狀態。GRU的Gate結構可以使得隱狀態丟棄與輸入無關的部分,也可以選擇與輸入相關的部分根據輸入來更新隱狀態。所以GRU本身是一種很巧妙的實現訊息傳遞的方式。

2.3 結構推理

640?wx_fmt=jpeg

圖5.結構推理模組

對於當前node vi,左邊scene GRU接收場景資訊,將node特徵作為隱狀態,場景特徵作為資訊輸入。右邊edge GRU接收其他物體的資訊,通過關係程度計算每個物體傳遞的資訊,再pooling所有物體傳遞來的整合資訊,將整合後的資訊傳遞到當前node。兩種GRU的輸出融合為最終的狀態表達,作為物體狀態。當物體狀態更新後,物體之間的關係發生變化,更多次的資訊互動迭代可以更魯棒的表示物體狀態。

3.實驗結果

文章的實驗中詳細分析了單獨應用場景、單獨應用物體間關係各自所帶來的效果,以及二者結合的整體表現。在這裡,我們只簡單展示SIN的一些定量結果和定性的結果,更多的實驗分析與結果可以參考論文。

3.1 定量結果

640?wx_fmt=png

表1.各資料集檢測結果

相比於基準模型Faster R-CNN,可以發現在多個基準資料集上均有較為明顯的效能提升,這裡使用的是VGG-16模型。

3.2 定性結果

640?wx_fmt=jpeg

圖6.定性結果對比(左:faster R-CNN baseline 右:SIN)

部分檢測結果如圖6。左上角樣例中,基準模型把石板誤檢為surfboard,儘管其表觀確實有點相似;而通過應用場景和關係,我們的方法避免了這樣的錯誤,而且能夠檢測到更多的鳥兒。右上角樣例中,我們的方法可以正確檢測水中的船隻。左下角樣例中,我們的方法能夠檢測到小孩手裡的手機,桌子上的勺子等。右下角樣例中,Faster R-CNN經常會對一個ROI預測出多個可能的類別,我們的方法則能夠很好的避免這個問題。

4.結論&展望

文章初步驗證了當前主流的檢測框架下,應用場景和物體之間關係能夠有效的幫助提高檢測效能。在未來更大規模的資料庫上,我們認為應用場景資訊和關係能夠對檢測發揮更大的作用,我們將進一步驗證嘗試。同時在更強的網路框架上,以及在單階段的檢測器上如何有機嵌入推理模組也將做出更進一步的嘗試與探索。

更多細節詳見程式碼&論文:

https://github.com/choasup/SIN 

http://vipl.ict.ac.cn/view_database.php?id=6

參考文獻:

Yong Liu, Ruiping Wang, Shiguang Shan, Xilin Chen, "Structure Inference Net: Object Detection Using Scene-Level Context and Instance-Level Relationships," IEEE Conference on Computer Vision and Pattern Recognition(CVPR2018), pp. 6985-6994, Salt Lake City, UT, June 18-22, 2018.


主編:袁基睿,編輯:程一

--end--

該文章屬於“深度學習大講堂”原創,如需要轉載,請聯絡 Emily_0167。

作者簡介:

640?wx_fmt=jpeg

劉永,中科院計算所VIPL課題組碩士研究生,導師為王瑞平研究員。研究方向是物體檢測,相關成果在CVPR2018發表論文一篇。

往期精彩回顧

640?wx_fmt=jpeg640?wx_fmt=png640?wx_fmt=png

歡迎關注我們!

深度學習大講堂是由中科視拓運營的高質量原創內容平臺,邀請學術界、工業界一線專家撰稿,致力於推送人工智慧與深度學習最新技術、產品和活動資訊!

中科視拓(SeetaTech)將秉持“開源開放共發展”的合作思路,為企業客戶提供人臉識別、計算機視覺與機器學習領域“企業研究院式”的技術、人才和知識服務,幫助企業在人工智慧時代獲得可自主迭代和自我學習的人工智慧研發和創新能力。

中科視拓目前正在招聘: 人臉識別演算法研究員,深度學習演算法工程師,GPU研發工程師, C++研發工程師,Python研發工程師,嵌入式視覺研發工程師,運營經理。有興趣可以發郵件至:[email protected],想了解更多可以訪問,www.seetatech.com

640?wx_fmt=jpeg640?wx_fmt=jpeg

中科視拓

640?wx_fmt=jpeg

深度學習大講堂

點選閱讀原文開啟中科視拓官方網站

相關推薦

CVPR2018物體檢測結構推理網路

物體檢測,是計算機視覺任務的基礎,其精度將直接影響相關視覺任務的效果,在深度學習方法興起之前,開

深度學習50物體檢測:SSD: Single Shot MultiBox Detector論文翻譯

SSD在眾多的物體檢測方法中算是比較重要的。之前學習過,但是沒過多久就忘了,因此決定將該論文翻譯一下,以加深印象。 Abstract 我們提出了用單個深度神經網路進行物體檢測的方法,稱為SSD。在每個特徵圖中的每個位置,SSD將bbox(bounding

深度學習17物體檢測:Focal Loss 反向求導及darknet上的實現

Focal Loss 反向求導及darknet上的實現 Focal Loss 可以解決不平衡分類問題,是在交叉熵損失函式上的擴充套件。詳見,論文:Focal Loss for Dense Object Detection。 該文,主要推導FL在softmax

CVPR2018實時旋轉魯棒人臉檢測演算法

編者按:蘇軾在《題西林壁》中曾寫道:“橫看成嶺側成峰,遠近高低各不同。”這兩句詩闡釋了視角的變化

轉載理解VB選擇語句Select Case結構的最好例子

1.Select Case結構格式:       Select Case e         Case  e1               A組語句         Case  e2              B組語句         ……         Case  Else             n組

Netapp在模擬器使用disk removeowner報錯

disk removeowner報錯信息如下:Cluster2::storage disk*> removeowner NET-1.43 Error: command failed: Disk NET-1.43 is not conne

Oracle淺析Oracle的事務

ase count 他會 session get 允許 update 查看 操作 1. 什麽是事務 在數據庫中事務是工作的邏輯單元,一個事務是由一個或多個完成一組的相關行為的SQL語句組成,通過事務機制確保這一組SQL語句所作的操作要麽都成功執行,完成整個工作單元操作,要

LoadRunner使用遇到的問題

點擊 adr 原因 登錄 ecif logs pass div vusers 1.問題:loadrunner 報錯:在存取 output.txt 時發生共享違例 產生原因:是錄制的腳本回放時產生的問題或是載入腳本時報錯 解決辦法:打開任務管理器,將使用output.tx

JAVA關於java 類.class.getResource("/").getPath()獲取路徑有空格的問題

() 獲取路徑 return url fig net java.net nbsp 相關信息 寫了一個web工程,在本地測試正確,但是部署到服務器上就出現錯誤。原因是讀取不到配置文件。 後來從打印出來的文件路徑中發現是用Java的class.getResource("/").

Hibernate解析hibernate的緩存

list gre mit details temp odin ica 所有 roo Hibernate中的緩存一共有三種,一級緩存、二級緩存、查詢緩存。緩存除了使用Hibernate自帶的緩存,還可以使用redis進行緩存,或是MongoDB進行緩存。 所使用的Demo:

轉載關於C#聲音的播放

ise player loop 安裝 lin playsound toolbar api函數 lec 轉自 http://www.cnblogs.com/chenjiahong/articles/2716552.html C#中聲音的播放主要有三種方法: 1.使用API

前端深入淺出Javascript的數值轉換

在操作 scrip 入參 ava 原理 過程 int() 字符串解析 p s 由於Javascript是一門弱類型的語言,在我們的代碼中無時無刻不在發生著類型轉換,所以了解Javascript中的類型轉換對於了解我們認識Javascript的運行原理至關重要。 本文主要從數

轉載表單 Readonly 和 Disabled 的區別

作用 .net 單元 ont 應該 表單元 als 利用 取數 今天寫代碼,遇到表單提交的問題,某個字段在不同的情況下,要傳遞不同的值進行賦值,試過一些方法都有些問題,後來請教前端同學,使用 disabled 這個屬性終於搞定了問題,查到一篇講解 readonly 和 di

ECharts3.x的點擊事件與行為

sta tar consola aid 處理 mouseover ati utl rest 在ECharts中主要通過 on 方法添加事件處理函數,ECharts中的事件主要分為兩種,1)鼠標事件,在鼠標click or hove 時觸發鼠標事件; 2)另外一種是在EC

shell命令>/dev/null 2>&1的實現原理

情況 內存 顯示 都是 style hand 引用 nis roo 異步執行 exec("/alidata/server/php/bin/php /nas/wxdoctor/index.php App/Common/WordsPic/user_id/".$user_

VSVS開發遇到的問題的總結

包含 erro 問題 dir pre x64 blank 解決 直接 1. VS中經常會出現無法解析的外部符號,還有LINK ERROR 2019等   這類問題如果檢查代碼沒有錯誤,很大概率就是lib文件錯誤。調試程序找出問題函數,再找出問題函數使用到的lib文件,在項

C#淺析C#的日期處理

see var time tostring 靈活性 ide format tin 介紹 1.字符串轉化為日期 1.1第一種方式 使用 Convert.toDateTime 方法,該方法有很多重載方法,這裏筆者就介紹兩個常用的重載方法。 第一種: 使用: Con

特性select語句使用字符串鏈接獲取字段值失敗

道理 使用字符串 字符串 排查 sof insert 插入 想要 val 坑1 在一個多行的表中,想把其中的一個字段值拿出來,組成一個字符串供後面使用。 按照以往,自己就如以下這麽寫了: declare @sql varchar(8000) set @sql=‘

轉載VC維,結構風險最小化

.html pos 成員 滿足 平衡點 pac 不能 進行 line 以下文章轉載自http://blog.sina.com.cn/s/blog_7103b28a0102w9tr.html 如有侵權,請留言,立即刪除。 1 VC維的描述和理解 給定一個集合S={x1,x

Spark篇---Sparkyarn模式兩種提交任務方式

方式 div -s and clas client 命令 yarn 模式 一、前述 Spark可以和Yarn整合,將Application提交到Yarn上運行,和StandAlone提交模式一樣,Yarn也有兩種提交任務的方式。 二、具體 1、yarn