1. 程式人生 > >程明明:面向弱監督的影象理解

程明明:面向弱監督的影象理解

點選上方“深度學習大講堂”可訂閱哦!

編者按:

若言琴上有琴聲,放在匣中何不鳴?

若言聲在指頭上,何不於君指上聽?

蘇軾的《琴詩》暗示了全域性認知對於場景理解的重要性。而在影象理解領域,相較於基於精細標註資料的全監督學習,弱監督學習本質上是一種試圖從全域性出發來理解場景的方式,也更接近於人類對世界的認知機制。本文中,來自南開大學的程明明副教授,將從區域性認知拓展至全域性認知,為大家介紹面向弱監督的影象理解。大講堂特別在文末提供文章以及程式碼的下載連結。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

我報告的主題是“面向弱監督的影象理解”,並對我們組的相關工作進行總結和介紹。

0?wx_fmt=png

本次報告中介紹的所有工作程式碼都是開源的,大家可以掃描圖中二維碼獲取我們主頁進行下載。

0?wx_fmt=png

理解影象資訊是計算機視覺的重要部分,我們希望計算機能夠像人的眼睛一樣看見並理解影象中的內容。

0?wx_fmt=png

現在計算機視覺領域的大多數問題還是依賴於特定的資料集進行訓練和測試評估的。

0?wx_fmt=png

而Data annotation(資料標註)的成本是極其高昂的。比如,對於PASCAL VOC資料集,需要十餘工人來標註27374個bounding box(標註框),而對於ImageNet甚至需要25000名人員對上千萬張資料進行標註。MIT的Antonio Torralba曾經在CVML會議上講過一個非常有意思的故事,他的退休的母親幫他做了20餘萬分割目標的精細標註,他開玩笑說希望有更多的父母參與到這份工作中來。

0?wx_fmt=png

如圖,是ADE20K資料集的一張圖片,針對分割任務標註起來是非常困難的。一方面高質量的影象標註為我們進行影象理解提供了方便,另一方面,獲取這樣的標註是非常困難和耗時的。而回顧我們從小識物的過程,父母都是指著不同物體告訴我們每一個物體是什麼,而不用精確地描繪物體的輪廓。這種從物體層面的認識區別於現有多數演算法對畫素精度標註的依賴。

0?wx_fmt=png0?wx_fmt=png

這裡我們對近期的工作做了一些梳理。在low level vision層面,我們做了一些基於attention mechanism(注意力機制)的工作,以及邊緣檢測和區域分割工作來對影象進行預處理和category-independent的影象分析,注意力機制可以幫助我們準確快速地定點陣圖像的區域,而不需要進行人工分割。

在light weighted semantic parsing方面,我們一方面將介紹語義分割,另一方面介紹它和interaction的結合。

最後,為大家介紹它們在影象及視覺領域的應用,比如進行editing(編輯)、Synthesis(合成)、web images(網路圖片)方面的工作。

Low Level Vision

0?wx_fmt=png

視覺注意力機制在影象認知中起到了非常重要的作用。對於機器而言,傳統方法採用滑動視窗機制來檢測影象中的每一個位置可能是什麼樣的物體,而人類觀察影象並不是基於滑動視窗的機制對上百萬個影象視窗進行搜尋和檢測,往往是藉助很強的注意力來定位可能的物體區域,只是判斷少量潛在物體區域的具體類別資訊,這能夠幫助我們進行快速有效地識別,並擺脫對大資料的依賴。

0?wx_fmt=png

注意力機制有幾個重要的分支:其一為fixation prediction,旨在預測出影象中的注視點,這個注視點有可能是bottom-up與任務無關的,還有可能是top-down與當前任務相關的;其二為salient object detection(顯著性物體檢測);其三為objectness proposals,它是基於視窗的度量方法,通過預測影象中的每個視窗有多大可能性含有物體,有助於後期做物體檢測。

0?wx_fmt=png0?wx_fmt=png

首先介紹我們基於全域性對比的顯著性區域檢測工作。我們通過對影象預分割,根據影象區域和其他所有區域的對比度來計算顯著性物體的區域。我們將在後面介紹如何用它來進行弱監督的學習。

0?wx_fmt=png

在公開資料集上的測試結果顯示我們的方法相對於傳統方法有較大的提升。

0?wx_fmt=png

剛才的工作無論是選擇特徵還是特徵組合都是基於人手工的方法來做的。我們提出了基於學習的方式進行顯著性物體檢測,對每個區域提取特徵,基於機器學習的方式自動選擇特徵的組合,這樣能得到更好的分割結果。這個工作也取得了非深度學習方法中最好的結果。

0?wx_fmt=png

如果大家對我們的這方面工作感興趣,可以看這篇Benchmark綜述文章,我們基於40多個主流的資料集進行了實驗比較。

0?wx_fmt=png

除了對特徵的組合進行學習,我們去年CVPR上有一個工作通過深度方法對特徵本身也進行學習,來得到顯著性物體的區域。通過把不同層次的深度特徵結合起來,通過一些short connections(短連線)的形式,能得到非常好的顯著性物體檢測結果,

0?wx_fmt=png

我們採用多層次的資訊融合方式,如上圖中間所示,它是一種深度神經網路架構。對於我們的方法,越高層的卷積運算,可以得到更加大尺度的資訊。我們把不同尺度資訊通過short-connection層連線起來,同時通過side output做指導,能夠得到更好的顯著性物體檢測的結果。

0?wx_fmt=png

近幾年,顯著性物體檢測取得了很大的進步。在很多公開資料集上,顯著性物體檢測的結果已接近實用,比如在MSRA-B和ECSSD資料集上precision和recall都已達到了90%以上的結果,同時missing error都已下降到零點零幾的水平。由此啟發我們是否能將它用於弱監督學習中去,從顯著性物體檢測的結果來學習知識。

0?wx_fmt=png

物體是由閉合輪廓圍成的區域並有其重心,我們在2014年的一個工作中據此設計了一種根據影象梯度估計影象中區域可能含有物體的可能性的方法。

0?wx_fmt=png0?wx_fmt=png

在PASCAL VOC2007資料集上進行測試,我們的方法和傳統的方法效果基本接近,但是我們的方法速度要快出1000倍。

0?wx_fmt=png

除了注意力機制,邊緣檢測也是對弱監督學習非常有幫助的。

0?wx_fmt=png

這是我們近期發表在CVPR2017的邊緣檢測方面的工作。我們發現在不同的卷積層都有不同的有用資訊,與其從池化層的前一層中拿出來做整合,不如提出所有卷積層的資訊充分利用。

0?wx_fmt=png

傳統上我們在幾次卷積運算之後再做池化,中間層的特徵只利用池化前的最後一層。我們新的工作把不同層的資訊疊加起來,通過concat的方式來得到更加豐富的特徵表達,通過這樣的特徵表達來訓練邊緣檢測的結果。

0?wx_fmt=png

這樣的方法也達到了非常好的效果。比如在pascal voc資料集上,我們的方法是國際上首個能夠實時運算,並且結果的F measure值已經超過當時在伯克利segmentation dataset上的人類平均的標註質量的方法。

0?wx_fmt=png

此外,在low level vision裡面,還有分割問題。通過對影象分組得到很多區域,期望每一個region裡面只含有一個物體類別,作為比較強的約束資訊可以幫助我們更好地理解影象內容。

0?wx_fmt=png

這裡邊一個例子就是,我們曾經用顯著性物體檢測的結果幫助我們initialize影象的區域,然後通過iteratively run GrabCut的方法分割出影象中的重要物體區域。這些分割資訊加上keyword 資訊本身可以幫助我們生成一些高質量的pixel-accurcy label(畫素層面的影象標籤),來更好地做語義分割。

0?wx_fmt=png

除了做語義分割之外,我們直接用影象處理的方式(比如顯著性物體檢測、分割等)進行處理,我們對Internet image做object segmentation和顯著性物體檢測,藉助一些關鍵字在分割裡面做retrievel,得到這些retreival資訊後,top ranking裡面的retrieval results資訊很多都是我們需要的物體類別,通過物體類別自動獲取的example 包括它的分割資訊去學習一些apperance model學習一些更加重要的知識,通過這些知識來更新我們對顯著性物體的理解。

0?wx_fmt=png

還有一個分割的工作是對影象做over segmentation,就是把影象分成很多塊,我們希望每個塊都不要跨越多個物體,因為同一個塊通常只屬於其中一個物體,哪怕區域裡面有一些噪聲,通過平均抑制噪聲讓分割資訊更好,之前常用的over segmentation方法是efficient graph based image segmentation,其缺點是比較慢,因此我們在ECCV2016提出了一種基於GPU的方法對影象預處理而得到superpixel(超畫素),然後對超畫素提取特徵並通過SVM(支援向量機)去學習一些特徵組合,再對特徵組合進行融合來得到非常好的結果。

0?wx_fmt=png

在伯克利的資料集上我們的方法取得了非常好的結果,速度上每秒能處理幾十上百張影象,F measure值也不錯,可以作為low-level領域的一個很好的工具去更好地約束弱監督學習的方式。

Light Weighted Semantic Parsing

0?wx_fmt=png

之前介紹的low level vision領域的注意力機制、邊緣檢測、影象分割相關工作結果都和影象的object category(物體類別)無關,因此這些資訊就可以直接地運用到影象中去,幫助我們約束一個問題。比如影象裡只含有一個物體,訓練集裡哪怕沒有語義分割資訊只有關鍵字資訊,也會幫助我們去做語義分割。

0?wx_fmt=png

這裡介紹我們的一個工作(STC:A Simple to Complex Framework for Weakly-supervised Semantic Segmentation)。通過顯著性物體檢測的結果,自動地生成語義分割的標籤。通過low-level vision得到的約束能夠幫助我們在弱監督的語義分割的學習中,減少對人工標註的依賴。

0?wx_fmt=png

上一個工作是通過bottom-up的方式進行分割,發表在CVPR2017的另外一個工作使用一種top-dowm的方式。比如針對一個分類任務,可以通過attention network找到哪個區域屬於哪類別,通過迭代使用top-down的注意力機制,更好地實現語義分割。

0?wx_fmt=png

從實驗結果可以得知,雖然只有keyword的監督資訊,語義分割的結果通過top-down attention機制也能得到很好的改進。

0?wx_fmt=png

除了語義分割之外,通過light weighted semantic parsing,我們還可以支援一些interaction的工作。

0?wx_fmt=png

在interaction方面特別是在graphics方面, 很多情況下我們關注一些應用問題,比如做image manipulation,影象編輯。對於這樣的問題,graphics領域的大公司比如photoshop、迪士尼會更加關注。對於mage level detection(影象層面的物體檢測)問題,人與機器之間存在一定的鴻溝,影象在計算機中是以畫素為單位儲存的,而人是從物體、場景層次等關係來理解的。基於這種機理,我們只能選擇一些畫素來進行處理,一方面這些畫素選擇時候可能會出現錯誤,另一方面這種方式不符合人的直觀理解,人腦是從high-level的角度來思考。我們試圖藉助計算機視覺的一些工具對影象的內容進行理解,使得影象編輯更加符合人的直觀感受。

0?wx_fmt=png

這是在SIGGRAPH2010年的一個工作,對於一張影象,通過簡單互動找到影象中的不同物體,同時通過相似物件的分析把物體的遮擋部分補全,並分析影象中物體層次的關係,這裡不同於視覺中的影象深度,我們關心的只是物體大小位置等相對關係。即使有這些簡單的關係,我們也可以做影象編輯的簡單應用。

點選邊框調出視訊工具條 點選邊框調出視訊工具條 

另外一個工作是我們把interaction(互動)擴充套件到三維空間,通過輸入的RGB和depth(深度)影象重構出三維場景,在重構的過程中也可以做一些使用者的互動。

Graphics/Vision Applications

0?wx_fmt=png

下面介紹一下我們light weighted semantic parsing的工作在圖形學和視覺領域的應用,首先是在影象編輯中的應用。

0?wx_fmt=png

其中一個將語義解析的結果用於圖形學應用的事例是,通過對影象的理解做一些互動任務。

0?wx_fmt=png

其中一個是基於語音的互動。通過一些移動裝置拍攝照片,這些照片其實只是二維矩陣,須對其進行處理才能更好地利用影象,我們試圖採用互動的方式提高這類方法的魯棒性,但是這些裝置沒有外接滑鼠鍵盤,傳統的互動方式在此並不能被很好地用起來,因此我們試圖尋找方法更好地利用這些影象資訊。

0?wx_fmt=png

比如一個非常簡單的影象編輯的操作,使用者語音指令為“把影象中間靠下方的木桌子變得低一點”。這個任務離不開對影象裡面每一個畫素語義的理解,把使用者指令中的動詞自動轉化為影象編輯的一些操作,名詞和形容詞對應物體檢測中的屬性分析,通過物體檢測和屬性分析,來實現並服務於影象編輯應用。這個問題是image caption(從影象生成語言)的反問題。

0?wx_fmt=png

另外給大家介紹把light weighted semantic parsing的結果用於影象合成(synthesis)的工作。

0?wx_fmt=png

這是我們之前做的一個sketch2photo影象合成工作,使用者輸入類似於左上角的影象(包含很多keywords),每個keyword就可以對應很多的Internet image,然後可以把物體區域自動分割出來,並通過輪廓比對獲取目標區域,然後據此就可以自動生成目標影象。再加之一些圖形學裡的合成處理,使得生成的影象符合使用者輸入的輪廓資訊。

0?wx_fmt=png

除了對單個影象的編輯和合成,我們還可以對海量的web images進行分析。

0?wx_fmt=png

在web images裡面,國際上很多研究者用我們的工作開展了object discovery,影象的彩色化(把黑白影象變成彩色),影象分類及語義分割等工作。

0?wx_fmt=png0?wx_fmt=png

今天主要對我們組的工作做了survey性質的介紹,上圖是我們在南開的團隊。這是我們組的一些低年級的同學們近來發表的學術成果。希望有更多的合作也歡迎碩士生的加入!

文中引用文章的下載連結為: 

http://pan.baidu.com/s/1gfALAIR

文中提到的語義分割工作詳見:

致謝:

0?wx_fmt=jpeg

本文主編袁基睿,誠摯感謝志願者楊茹茵對本文進行了細緻的整理工作

0?wx_fmt=png

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

作者資訊:

作者簡介:

0?wx_fmt=png

程明明,南開大學副教授,博導,國家“萬人計劃”青年拔尖人才、中科協青年人才託舉工程、南開大學百名青年學科帶頭人計劃入選者。2012年博士畢業於清華大學,之後在英國牛津從事計算機視覺研究,並於2014年加入南開大學。其主要研究方向包括:計算機圖形學、計算機視覺、影象處理等。已在IEEE PAMI等CCF-A類國際會議及期刊發表論文20餘篇。相關研究成果受到國內外同行的廣泛認可,論文他引5000餘次,最高單篇他引1700餘次。其研究工作曾被英國《BBC》,《每日電訊報》,德國《明鏡週刊》,美國《赫芬頓郵報》等權威國際媒體撰文報道。

VALSE是視覺與學習青年學者研討會的縮寫,該研討會致力於為計算機視覺、影象處理、模式識別與機器學習研究領域內的中國青年學者提供一個深層次學術交流的舞臺。2017年4月底,VALSE2017在廈門圓滿落幕,近期大講堂將連續推出VALSE2017特刊。VALSE公眾號為:VALSE,歡迎關注。

0?wx_fmt=jpeg

往期精彩回顧

0?wx_fmt=jpeg0?wx_fmt=png0?wx_fmt=png

歡迎關注我們!

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

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

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

0?wx_fmt=jpeg0?wx_fmt=jpeg

中科視拓

0?wx_fmt=jpeg

深度學習大講堂

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

相關推薦

明明面向監督影象理解

點選上方“深度學習大講堂”可訂閱哦!編者按:若言琴上有琴聲,放在匣中何不鳴?若言聲在指頭上,何不

【學習筆記】六面向物件的程式設計——理解JS中的物件屬性、建立物件、JS中的繼承

  ES中沒有類的概念,這也使其物件和其他語言中的物件有所不同,ES中定義物件為:“無序屬性的集合,其屬性包含基本值、物件或者函式”。現在常用的建立單個物件的方法為物件字面量形式。在常見多個物件時,使用工程模式的一種變體。 1.理解物件   1)物件的屬性分兩種:資料屬性和訪問器屬性,每個型別的屬性都具有

面向切面編AOP的理解

glib 之間 切入點 targe con rgs 強制 sof 作用 AOP AOP(Aspect Oriented Programming),即面向切面編程,可以說是OOP(Object Oriented Programming,面向對象編程)的補充和完善。OOP引入

python學習筆記9面向對象編,類

數據 相同屬性 技術 -o 必須 是把 oop ack 繼承 一、面向對象編程   面向對象--Object Oriented Programming,簡稱oop,是一種程序設計思想。   還有另一種程序設計思想——面向過程編程。面向過程的思想是把一個項目、一件事情按照一定

第八篇面向對象編

-1 eight 常用 attr recent 建立 動作 空間 過程 OOP介紹 一、什麽是OOP 1、編程的發展已經從簡單控制流中按步的指令序列進入到更有組織的方式中 2、結構化的或過程性編程可以讓我們把程序組織成邏輯塊,以便重復或重用 3、面向對象編增強了

Day28面向對象編——類和對象

軟件 聲明 關於 main 部分 一個 自動 個人 rgs 一、面向對象的程序設計   在此之前用到的事面向過程的程序設計,它的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比設計好一條流水線,考慮周全什麽時候處理什麽東西。 優點:極大的降低了程序

VB面向信息編

帶來 依然 寫代碼 特色 功能 可視化 並且 日誌 就是 說到VB,順帶提一個詞“可視化編程”。“可視化編程”大致可以分兩種情況,一是流程圖型的“可視化”,二是專指窗口程序設計中的可視化。我主要強調第二點,也就是VB的主要特性。   我學過一點tk和pyqt,並且以前接觸過

[Python]學習基礎篇面向對象編

必須 outline func pad order ola 項目設計 tom return 面向對象編程是種具有對象概念的程序編程典範,同時也是一種程序開發的抽象方針。它可能包含數據、屬性、代碼與方法。對象則指的是類的實例。它將對象作為程序的基本單元,將程序和數據封裝其中,

Java基礎教程面向對象編

pac tps 存在 app span lsp 程序員 面向 解釋執行 Java基礎教程:面向對象編程 Java語言概述 Java語言特點 1.Java為純面向對象的語言,它能夠直接反映現實生活中的對象。總之,Everything is object! 2.平臺無關性。Ja

Java基礎教程面向對象編[2]

是否 info clas 必要條件 耦合 oid 保護 類成員變量 因此 Java基礎教程:面向對象編程[2] 三大特性 封裝   封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節部份包裝、隱藏起來的方法。封裝可以被認為是一個保護屏障,防止該類的代

Python基礎語法介紹面向對象編

Python 面向對象 面向對象編程 面向對象編程,簡稱OOP:是一種解決軟件服用的設計和編程方法。這種方法把軟件系統中相似的邏輯操作、數據、狀態等以類的形式描述出來,通過對象實例在軟件系統中復用,從而提高軟件開發效率。 類和對象 類:一個事物的抽象,定義了一類事物的屬性和行為。類具有繼承,多態的特性

PHP基礎知識面向對象的編

PHP1.類的定義 class關鍵字+類名+{},大括號內定義變量和方法。 類的變量使用 var 來聲明, 也可以初始化值。 類創建後可以使用 new 運算符來實例化該類的對象。 註:變量 $this 代表自身的對象。 2.成員函數 構造函數:用來在創建對象時初始化對象, 即為對象成員變量賦初始值,在創

第三模塊面向對象&網絡編基礎 第4章 FTP項目作業講解

家目錄 RR col intern 進度條 host net odi data 01-FTP項目需求 02-FTP項目框架搭建 03-FTP項目用戶認證 04--FTP項目制定標準定長消息頭 05-FTP項目下載功能開發 06-FTP項目下載功能開發2 07-FTP項目l

Python全棧開發之路 【第八篇】面向對象編設計與開發(2)

ssi pen 解析 執行 示例 動態 類型 put 所有 一、繼承與派生 什麽是繼承? 繼承指的是類與類之間的關系,是一種什麽是什麽的關系,繼承的功能之一就是用來解決代碼重用問題。 繼承是一種創建新的類的方式,在python中,新建的類可以繼承一個或多個父類,父類又可以成

Java8系列教程Java8編入門、面向對象編、高級編、核心設計模式 DAO設計模式

線程與進程 lamda java程序 thread類 pat 調用 watermark image fab Java8系列教程:Java8編程入門、面向對象編程、高級編程、核心設計模式 —— DAO設計模式01_《Java8編程入門》02001_JAVA發展簡介02002

python Class面向對象高級編

term 可見 繼承 yellow from stroke RoCE none 對象 一、Class添加新方法: MethodType外掛類class Animal(object): def __init__(self, name, age): sel

python Class面向對象高級編 @property

odi ack sel color birt -a oat nor family 看不懂,先記錄一、#!/usr/bin/env python3# -*- coding: utf-8 -*-class Student(object): @property def

python Class面向對象高級編 多重繼承

adding back 運行 p s bject def int anim float 繼承:通過子類繼承父類信息而達到子類可以擴展功能的目的多重繼承:通過子類繼承多個類一、多重繼承一類套用廖雪峰的例子:https://www.liaoxuefeng.com/wiki/00

python Class面向對象高級編 __str__ / __repr__

fun highlight eat mic bsp let ring float nor 其實:__str__ 與 __repr__效果一樣, 人們說:__str__ 是面向用戶的, 而__repr__是面向程序員的, 轟朵你?官網解釋:object.__repr__(se