編者按:據傳宋徽宗趙佶曾以“深山藏古寺”為題命人作畫,奪魁的畫作,畫崇山峻嶺之中,一股清泉飛流直下,跳珠濺玉,泉邊有位老態龍鐘的和尚,正舀著泉水倒進桶里。
這幅畫的妙處在于,從“打水的老和尚”這一已知語義信息提取出“古寺”這一隱含信息,從而使得該畫切題應景。而在計算機視覺領域,這一典故正展示了結構化分析中的隱含信息傳遞,對于畫面內容理解的重要性。
近年來,深度學習取得了斐然的成績,然而自其提出之日起,“黑盒智能”、“可解釋性差”等質疑之聲即不絕于耳,“黑盒智能”,意味著無法對結果作出保證,并極易陷入“自信的錯誤”這一致命問題。因此,世界上頂級實驗室都在思考“why"這一問題,并嘗試增強算法的可解釋性,以打開深度學習這一黑盒子。
今天,來自悉尼大學的歐陽萬里教授,將從物體之間的相關性出發,利用結構化建模,嘗試在圖像理解領域,窺一窺深度學習這一黑盒子。
本次報告中,我介紹一下我在香港中文大學以及在悉尼大學和很多老師、學生一起合作的工作。
首先我們來了解一下檢測和人體姿態識別相關的工作。給定一張圖像,確定感興趣的物體在圖片中的位置,比如說這位女士的牙刷,這就是物體檢測工作。目標檢測進一步往上分析,就是關系檢測。得到關系之后,可以進一步做更多語義的理解,比如用句子來描述圖片中某個區域它的語義,如說這位媽媽和可愛的小孩在刷牙。物體檢測后可以逐步把語義信息往上走,也可以對感興趣物體進行深入分析,比如說可以對人體關鍵點進行定位,也就是人體姿態識別。有了這些物體檢測、姿態檢測以后可以分析行人,分析人的動作。
關鍵點定位識別任務具有許多難點,例如說人可能穿不同顏色衣服,會被遮擋,人身體變動靈活,會由于形變產生劇烈視覺信息變化。
為了處理好視覺信息,我們引入結構化學習,學習輸出結構化的信息在我們打開深度學習黑盒子的過程中是很重要的一環。我們期望利用對問題的理解,幫助我們在深度學習能達到的結果之上得到更多的改善。
對于結構化輸出的建模,我們有一些工作。比如在人體姿態識別任務中,對人體關鍵點之間的空間結構關系可以進行建模。對于人與人之間的交互,可能會有很多交互因素,比如說有交互動作,具體到擁抱、手拉手。其它交互因素,比如說人與人之間的距離,傾斜度、朝向等這些因素,他們之間也會有位置關系,所以可以將它們進行結構化建模?;趩文繑z像頭得到深度信息預測任務,可以利用卷積網絡幫我們在不同分辨率特征中得到不同對于深度信息的預測,它們之間也有很多相關性,可以對它們進行結構化建模。最新工作考慮不同的模態,在跨攝像頭尋人信息中對比兩個圖片是不是同一個人,對于人分割多值信息可以有結構化信息幫助我們進行建模。
在進一步打開深度學習黑盒子的情況下,我們可以引入標簽或者輸出所不具備的因素,把對于因素中特性的建模和深度特征的學習繼續聯合學習。具體例子就是物體檢測,我們會遇到遮擋以及人的形變產生的變化,這些因素都是隱含的,標簽中只有一個矩形框,沒有這些信息。如果能夠設計需要非常少參數的方法能夠把隱含因素推理到,其實就能夠幫助到模型學到更好的特征,并實現更好的結果。
例如說有一幅圖像,我們可以利用深度學習模型或者已有手工設計的特征對它進行處理。這個任務中,一個隱含的因素是形變,我們可以引入處理形變和學習形變的模型,一個著名模型是deformable part model。另一個隱含因素是遮擋,比如說在這幅圖中這個人腿就被椅子擋住了。如果能夠對人體的遮擋進行推理,能夠把一些被遮擋的部分找出來,不要用被擋住的椅子學習人腿的視覺形狀。如果能夠得到這樣的隱含因素可以進一步提高檢測效果。最后是進行分類。這些模塊之間的學習都是固定住前面一部分的參數,學習最后的參數,每個模塊之間缺乏通信。我們可以設計聯合深度學習模型,將這些模塊聯合起來,在每次參數學習中,都能夠進行非常好的通信,從而使各模塊通過互相溝通學習到更好的模型以提高準確率。
這是我們設計基本模型,首先利用卷積網絡幫我們學習到特征,有了特征以后就可以利用形變層((deformation layer))學習身體各個部分的形變。
假設有一個檢測器可以檢測人的肩膀在圖片中的位置,其中一個檢測器的例子就是這樣一個肩膀,如果把這個肩膀檢測器在圖片中進行滑動的匹配將會得到這樣的響應圖譜。在沒有肩膀的地方會有我們不想要的高的響應,如果使用這些區域學習人的肩膀長什么樣,特征學不好,肩膀的檢測器也學不好。為了處理好這個問題,我們可以利用形變的特性。我們可以考慮到人的肩膀不會從對應的位置跑到人的右下角,所以我們設計形變的圖譜,自動學習人的形變特性。將這種概率化的描述轉化成圖譜,進行疊加就會得到修正以后的圖譜。如果利用修正以后的圖譜進行檢測,可以準確定位形變物體到底在哪里,相對于特征和檢測學習就會得到更好的結果。
另一方面,人的身體各個部位會被遮擋,會涉及不同大小身體部位的檢測器。比如說關于人的左腿和右腿的檢測器,如果兩個檢測器都被遮擋,兩條腿會一起被遮擋,所以不同檢測器它們之間關系可以用deep belief net來學習。
我們進行了一些實驗,在2013年時最大的行人檢測數據庫上,使用手工設計的特征再加上已有的分類器錯誤率為68%。如果處理好形變隱含的因素可以降到63%,如果將特征學習以及形變和遮擋進行聯合學習可以將錯誤率降到39%。如果進一步使用更好深度學習的方式,最近的工作錯誤率可以降低到9%。
論文相關代碼在如下地址:
http://www.ee.cuhk.edu.hk/~wlouyang/projects/ouyangWiccv13Joint/index.html.
上面所說的我們對于形變和遮擋這兩個隱含因素的學習主要用在單個行人檢測工作中,我們將它進行拓展。第一個拓展是把形變的學習拓展到普適的物體檢測中,我們開發了一個新的形變學習模型,這個工作2017發表在PAMI,連續幾個月都是TPAMI最受歡迎的文章之一。
另外一個擴展是將對于單個行人的可見性與不可見性的推理運用到兩個行人之中,互相遮擋的情況下,他們之間可見性有相融和不相融的關系,從而提高互相遮擋情況下的效果。
上面介紹的是我們利用隱含因素具體研究形變以及遮擋兩個隱含因素,對這兩個隱含因素參數的學習和深度學習中特征學習進行聯合學習,從而提高最終我們具體任務的效果。
為了進一步的打開深度學習的黑盒子,我們考慮特征之間的結構化建模。它的動機是來自于另外一個觀察。全連接網絡或者卷積網絡它們有一個共同特性,在同一層中神經元是沒有連接的,但人腦并不是這樣,在人腦中同一層神經元之間是有連接的。
關于深度學習,研究者得到最多的信息就是要設計很好的學習方法以及很好模型設計方式,使得模型變得越來越深。是不是把模型變得更深就是我們唯一的出路呢?另外一個問題是做視覺研究者對于問題的觀察以及理解是不是也會有幫助?為了回答這個問題,我們設計了GBD-Net。GBD-NET利用上下文信息,幫助我們識別所感興趣的物體是什么。
計算機視覺研究者很早就知道上下文信息對于識別物體有幫助。有了深度學習模型以后怎樣考慮上下文信息呢?我們考慮的是可以學習不同上下文信息的特征之間的關系。比如說,現在有一個特征對應的是兔子的耳朵,它是比較少的上下文的信息,可以推測到下面應該有兔子的頭。因此兔子耳朵這樣比較少上下文的特征和兔子頭這個比較多的上下文特征,反之亦然。由此可見,不同上下文信息的特征之間可以互相驗證。
而另外一方面如果看見一個兔子耳朵并不一定下面就有兔子的頭,如上圖中的反例。在這種情況下,如果我們看見下面不是兔子的頭,而是一個人的臉,我們希望的是讓這個兔子的耳朵不要傳遞信息給兔子的頭。因此信息是需要傳遞的,但是信息的傳遞是需要受到控制的。
基于已有的檢測網絡基礎上我們設計了GBD-Net。它利用已有網絡結構得到不同上下文特征。有了不同上下文信息特征以后,開始進行信息傳遞。
可以把信息從上往下傳,也就是讓上下文信息比較少的特征傳遞給上下文信息比較多的特征。也可以進行反向的傳遞,就是把上下文信息比較多的特征傳遞給上下文信息比較少的特征。我們將兩組通過不同方向傳遞的特征會進行結合,也引入一個函數來幫助我們控制信息的傳遞。
經過信息傳遞以后,這些特征將會被得到修正,我們利用修正特征幫助我們做最終檢測的任務。
實驗發現在不同的數據庫和不同網絡結構中,使用我們這樣的特征之間傳遞信息的方法,效果都可以得到很好的改善。我們利用這個方法參加了2016年的競賽,在靜態物體檢測和動態視頻物體檢測跟蹤中我們都取得第一名。
對GBD-Net進行總結。第一點,特征仍然是重要的。第二點,視覺工作者基于專業知識對于問題的觀察和分析同樣重要。第三點,我們使用深度學習,把它當做一個工具來幫助將特征之間的關系進行建模。具體而言,我們設計的GBD-Net是在不同上下文特征之間進行信息傳遞。論文相關代碼可以掃描二維碼。
剛才所做的只是在物體檢測中,是不是這個特征之間的結構建模只是適用于物體檢測呢?其實不是這樣的,它在其他很多工作中也是有效的。比如說在人體姿態識別中,我們考慮每一個人體的關鍵點都是一個特征,在這些特征中可以進行信息傳遞??梢钥紤]每個關鍵點分別對應的一組特征,有了對應特征以后可以把對應特征認為是結點,有了結點以后可以考慮人體關鍵點樹型結構,在樹形結構上的各個結點之間進行信息傳遞。論文相關代碼在:
https://github.com/chuxiaoselena/StructuredFeature.
剛才我們所介紹的仍然是具有類似語義信息的這樣一些特征,其實這樣的特征并不一定要具有相同語義。在具體工作中,可以考慮這些特征可以具有不同的語義信息。比如說物體檢測中可能有專門對應每一個物體的特征,比如說這位女士自己的特征,對于牙刷也有它自己的特征,小孩和他的牙刷都有自己的特征,往上走不同物體之間關系也有一組專門識別物體關系的特征。繼續上走,每個語句也有自己的特征。如果考慮每一個特征都是一個結點的話,仍然可以利用它們之間的關系,通用邊進行信息傳遞,最終提高這三個不同任務的效果。
上面介紹利用結構化信息傳遞在不同任務進行結構化信息建模。它面臨的問題是信息傳遞沒有任何理論指導,我們只是通過觀察來設計并通過實驗發現這樣做有效。為了解決這個問題,我們引入統計模型。具體而言,我們引入條件隨機場,幫助我們進行網絡結構設計。網絡結構符合這樣的統計模型。在具體工作中,我們對特征之間的信息傳遞利用條件隨機場進行建模,也對加入門限控制的特征信息傳遞利用條件隨機場進行建模。
在統計模型指導下,另外一個優勢可以利用統計模型中一個很好的信息傳遞方法,幫助指導我們怎樣在各個節點之間傳遞信息才是最有效的。
所以,對于結構化信息傳遞,在已有基礎上考慮結構化的輸出,可以引入結構化特征,將結構化特征和結構化輸出進行聯合學習。
除了結構化學習,我們實驗室在基礎網絡設計上我們也做了很多工作。林達華老師設計非常好的網絡-PoLyNet,它是一種非常深的網絡結構。這個網絡結構的基本想法是同一個模塊中,引入多個inception module,可以并行或串行。利用這個方法達華老師所帶的學生參加2016年的競賽,競賽中單個模型結果是當時最好的。
另外一個工作動機是,如果有同樣大小的人臉,但是局部特征是不一樣的。比如說在這個例子中有三張同樣大小人臉,但是人的眼睛和嘴巴視覺信息大小是不一樣的。這就要求我們的神經元具有多樣性能夠捕捉到這些不同大小的特征。
為了捕捉到不同大小的特征,有一種設計,就是設計不同大小的濾波器或者將不同大小的濾波器進行疊加,比如說有3×3再往上疊,可以得到5x5,這會增大參數量和計算復雜度。
我們考慮另外一種方式就是下采樣。第一個分支中不采用任何下采樣,這樣情況下3×3的卷積對應的視覺信息就是3×3的大小,如果另外一個分支使用2的下采樣,特征會變得原來1/2,3×3卷積看到大小就是6×6。通過這種方法,只需要改變下采樣的參數,就能幫助我們實現捕捉不同大小特征的目的。最終,我們利用上采操作,使下采樣造成的不同大小分辨率的特征變成同樣大小,便于把它們連接起來。下采樣和上采樣不需要參數,運算快。這種做法取得了良好的實驗效果。
論文相關代碼在:
https://github.com/bearpaw/PyraNet.
另外一個問題,最近大家提出多種網絡結構化,如ResNet,DenseNet,ResNext,甚至像GoogleNet和我們設計的PolyNet,這些網絡具有一個共性:它有多個分支。有一個問題是,對應于有多個分支的網絡結構情況下,常用的參數初始化方法的基本假設是不成立的。如果用這樣的參數初始化會帶來一些問題。為了解決這個問題,我們進行嚴格的理論推導,并給出最終答案。推導發現與輸入、輸出分支數和參數初始化是相關的。在圖像分類以及人體姿態識別上都發現使用我們的方法以后會得到更好的效果。
另外就是人的行為識別。行為識別和很多做視頻任務里很重要的信息是運動。
如果要得到關于運動的信息,我們發現有一種很簡單的操作,就是先得到兩幀圖像特征,把兩個特征點對點(element-wise)相減。這個相減是時間上的梯度,空間上的梯度可以用很簡單的操作得到。這樣簡單的操作它背后來源于我們數學的推導,數學的推導告訴我們這樣特征的表示和光流(optical flow)是正交的,正交意味著它們是互補的,這種特征會擁有原來optical flow沒有的信息。實驗發現使用我們這種特征而不使用optical flow,能達到的相似的準確率,但在速度上可以快很多。另外,由于特征是由它互補的,特征結合以后可以進一步改善準確率。論文相關代碼會在近期提供。
總結一下,結構化深度學習在很多視覺任務中都是有效的。結構化信息通常是來源于觀察,來源于對問題的理解。視覺領域的研究者對特定問題的觀察和理解可以聯合深度學習一起推進整個視覺的進步。另外,我們可以對輸出和特征進行結構化的建模。而深度學習這樣一個工具提供的能力是將結構的建模和特征的學習進行聯合學習,增大最終解決任務的能力。
-
濾波器
+關注
關注
160文章
7749瀏覽量
177737 -
黑盒子
+關注
關注
0文章
5瀏覽量
8778 -
深度學習
+關注
關注
73文章
5493瀏覽量
121001
原文標題:讓機器“解疑釋惑”:視覺世界中的結構化理解|VALSE2018之八
文章出處:【微信號:deeplearningclass,微信公眾號:深度學習大講堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論