“落霞與孤鶩齊飛,秋水共長天一色。”
短短十四個字,極具層次性地提煉出了視覺畫面中的色彩之美、動態之美、虛實之美、以及立體之美,因此成為了景物描寫的絕唱之筆。
而在計算機視覺領域,這十四個字的創作過程,其實就是從視覺系統中提取關鍵特征、并以簡短緊湊的方式呈現出來的過程。
計算機視覺技術自誕生之日起,即面臨著較大的計算壓力,這一領域的研究也一直在以空間換時間、或者以時間換空間這兩種嘗試中交替前行。至今,雖然隨著GPU的盛放,算力得到了很大的提升,然而,在真實場景下的人機交互中,仍面臨著端側資源不足的問題。因此, 如果我們的特征提取過程能夠做到對整個視覺輸入的“提綱挈領”,即提取過程更加快速、特征表示更加緊湊,將有助于計算機視覺在生活中的真實落地。
今天,來自廈門大學的紀榮嶸教授,將從視覺信息的緊湊性、深度網絡的緊湊性、以及檢測算法的緊湊性三方面,來介紹如何實現緊致化的視覺大數據分析系統。
文末,大講堂提供文中提到參考文獻的下載鏈接。
首先,刷一波福利,廈門大學媒體分析與計算組,在招收碩士生、博士生、博士后、助理教授等。
在廈門大學那么小的研究組怎樣能做一些跟別人不一樣的事情呢?我們從思考現有算法的問題入手,思考除了精度之外還有哪些問題。其實如果大家看一下視覺搜索和識別的流程,從特征抽取、描述、到索引,都對系統緊湊性有很重要的要求,雖然目前還沒有引起廣泛關注,但已有很多工業界的應用需求。因此,從2013年到現在差不多五年的時間,我主要研究怎樣把搜索系統和識別系統做小和做快。
本次報告包含三個部分:
第一部分是視覺特征緊湊型:如果特征抽出來沒有明確目標做視覺特征檢索,這時候怎么把特征做得又小又快。
第二部分是神經網絡緊湊型:現在有很多做端到端的學習,神經網絡怎么做小怎么把速度提起來。
第三部分是檢測算法的緊湊性。
在視覺特征緊湊型方面,視覺數據是大數據里面的主體,談到大數據,我們首先想到的數據量最大的還是圖像和視頻數據。
如果不可以把圖像和視頻數據找到,它們的價值其實很難得到發現。我們這時候面臨的問題是,需要在上百萬或者上千萬的數據集里面,高速高效的把相關視覺數據找到。這個問題本身并沒有那么容易,因為它是非結構的,這個時候不得不用近似搜索方式在有限精度損失情況下,能高速把視覺數據找到。
為了做這個問題,現在有些特征也能達到視覺搜索的目的,但是沒有辦法在移動視覺伸縮或者高通量檢索里面做。比如現在的視覺包特征,CNN特征,VLAD特征等,他們的維度相對來說還是很高,另外可以用一些倒排索引技術,用空間換時間,當然如果空間開銷過大,也會造成在移動式或者嵌入式系統里面無法使用的問題。
在過去4年時間里我研究興趣轉到去做特征的二值化。給定一組圖像數據庫,我們希望把每張圖像映射成二值編碼,如果兩張圖像相似,期望二值編碼相似,如果不相似,期望二值編碼距離要越遠越好。
如果能達到這個目標當然更好了,我們就可以做高速高效的匹配。首先哈希函數的特征投影快,其次他的搜索時間為漢明查表,復雜度O(1)時間也很快。最后百萬級的圖像可以像搜索系統一樣壓縮的儲存在內存中,使得它的體積相對小很多。
它的特征可以快速緊湊存到內存里,這種速度上的提升背后會帶來精度上的損失。所以,從2004年第一次提出這個問題之后,大家關注在怎樣把損失減小。從研究方法來分可以分兩類,第一類是construction損失減小跟數據沒有關系這叫數據獨立的哈希,第二類是期望把數據分布考慮到量化誤差上,這里面根據有標簽和沒有標簽分成兩類,無監督或者有監督,想要有監督效果更好,但是需要人工標注非常貴。這是一些早期的發表的相關文章。
對于特征空間做隨機劃分,我們可以精確保證,如果兩個點在原始空間里面是近的,生成二值空間里面有一定概率仍然是近的,這個概率跟哈希比特碼程度是正相關的。
原始空間并不是那么完美,可以對當前數據集建立一個近鄰圖,然后去算圖的拉普拉斯,希望把圖上的相似性得到二值碼學習過程中,很直接就相當于加了一個權重矩陣。
但是,如果這么做,就會存在一些問題。主要問題在于對這些數據去做拉普拉斯,去求矩陣的特征向量,我們知道當矩陣很大的時候求矩陣的特征分解是很困難的。
為了解決這個問題,在2011年在ICML上提出了采用錨點圖估計graph結構,因此計算基于數據點到數據點的相似性,轉變成數據點到錨點的相似性,錨點再到數據點的相似性。
如果要算矩陣估計的近似,首先得給個約束,我們可以通過矩陣分解快速求得基于錨點的相似點矩陣,因此可以加快計算。
此外,原始空間不完美,因此可以先對空間先做一次PCA投影,計算投影矩陣,然后計算旋轉矩陣,通過量化二者之間的交替和疊加的方式去做,這就是無監督的方法。
此外有監督的方法從2012年開始也有相關涉及,這是我們發在CVPR上的文章,我們除了引入哈希里面的圖像點之間之外,我們希望有些圖像越相近越好,有些圖像越不相近越好。
當時我們做了一個很重要的貢獻,我們把漢明距離通過編碼的內積進行計算,并通過數學計算來證明。之后發展很快,我們也做了很多工作。
今天主要介紹兩個方面,第一個2015年開始是排序敏感的視覺特征的哈希,在哈希學習過程中怎樣把排序信息嵌入到二值碼的學習。第二個方面是怎樣在二值學習空間里面可以做圖形處理。第一個動機我們最早發表在2015ICCV上,以前的工作算是Pairwise similarity。我們想如果做哈希特征,它的目的是做檢索。那么拿得到的排序信息更多的來自于它的ranking list。所以我們期望在特征空間里面如果有個原始的ranking,希望映射成二值碼之后。二者排序列表要越相近越好。
為了解決這個問題,我們在特征數據集里面隨機選取三元組,如果在原始空間里面兩個點,比如說I和J的距離小于I和S的距離,假設生成的I和J的距離大于I和S的距離,就會產生損失。我們可以通過在數據集里面大量的生成,來衡量生成二值碼里面這個損失到底有多大。再加上其他的方法就可以把損失嵌入到傳統哈希學習里面去。
我們對比三個數據集SUM397,ImageNet,YouTubeface等去驗證我們的方法,當時超過了大部分的無監督/有監督哈希方法。
到了16年,我給我的學生講我們在15年做的工作,需要采大量的ranking list,才能去保證性能有比較好的提升。所以在這個過程中排序信息是比較冗余的,因此我們就思考可不可以有更緊湊的監督。實際上監督的緊湊性是存在的,這個叫做保序性。所謂的保序性,不是給的一個點,而是點對和點對的相似性關系。這個圖上每個節點給出的是兩個點之間的相似性,點對點之間的相似性即使序列關系。把給定序列相似性嵌到哈希學習方法里面去,這是2016年論文主要工作。
由于原序列圖的規模較大,我們通過landmark-based ordinalembedding的方法,把原來與樣本大小成四次方的序列數量降低到樣本數的二次方。
這里面我們做了幾個事,第一就是在傳統圖像數據集上評測。比如說CIFAR10,LebelMe.第二是跟騰訊優圖實驗室做比較好的合作。我們參加音樂檢索競賽,在音樂檢索過程中,有一個很重要步驟,切成很多音樂片斷,片段與片段之間要算他們的相似性。這個相似性切得越細效果越好,但是會越慢。我們跟它的合作就是怎樣把切片保證切細的情況下把速度提上去。
廈門大學把這項技術轉化轉移到騰訊QQ音樂里面聽歌識曲的功能中去,這是結合做的比較好的典范。
下一項工作,從2016年之后我們進一步思考,我們發表的OEH里面存在的一些問題,OEH方法雖然效果不錯,時間復雜度相對較高,同時我們要隨機的選擇訓練點。我們可不可以進一步加速這個模型的訓練過程,這是我們在2017年的文章,我們探索高階序列關系,并重點解決兩個問題,一是怎樣高效表示序列的關系,二是如何縮減序列關系數量。
針對第一個問題,我們提出張量序列圖。我們構建一個S和DS矩陣,這兩個矩陣做成張量圖,這個方式可以把原來的復雜度進一步降低。
第二個問題我們做的是序列約束的投影。精確來說,我們把傳統四元組之間的序列關系,在投影之后變成兩兩三元組之間關系的求差,這個方式可以高效縮減它的復雜度,把原來L的四次方降成L的三次方,使數量跟樣本點無關,極大加速了算法離線學習過程。
這是對應的性能的表格。
去年另外一個工作,我們做的事情就是,傳統的二值空間。大家想做比如近鄰圖,比如做PCA。我們知道還有更好的方式,希望學的子空間能夠流型相似性。主要問題是學出來的是二值碼,怎樣在漢明空間保留流形結構,保留數據之間的局部近鄰結構和線性關系,這是我們解決的問題。
我們的工作是離散的LLH,這是受LLH啟發后的版本,我們的哈希函數是傳統線性的函數,目標函數有幾項。第一項B-SB,你生成的二值碼和你這個二值碼把這個點扔掉,用其他點去重構他,他們是不是一致?如果是一致的話就表明局部保持了這種一致性。第二項有點像ITQ里面去做旋轉之后做二值投影。
直接解目標函數也可以,但它們復雜性還是挺高的,這里面有N的平方。之前的工作,我們在這里面引入基于錨點的方式,有些公式很簡單。原始的特征點算他們的相似性,我們采用一些anchor,算兩個點之間的相似性,我們不直接算,我們算這個點到anchor,anchor再到這個點的相似性。這種方法可以使我們的時間復雜度得到精確的下降,并使我們的內存開銷得到很大的減少。
如圖所示,是隨著我們樣本數的增加,內存開銷相關的量。基于anchor的方式可以有效地減少內存開銷。
對應起來,我們在CIFA10和YouTube face上對比,我們采用加anchor的方式,有些性能可能降低,但我們的訓練速度得到了很大的提升。
下面分享一下我們最近做的深度網絡緊湊性。這里有兩塊,第一塊是怎樣把網絡壓小,第二塊是怎樣把網絡做快。壓小不等于做快,做快不等于壓小,二者有不同的處理方式。
我們現在有龐大的數據集,有著強大的GPU計算硬件設備。
因此從2012年image的冠軍開始,深度學習迅速崛起,涌現了一系列深度神經網絡。
像VGG從11層到19層,GoogLeNet (Inception V1),Facebook的resnet等等一些模型。有很多的網絡,這些網絡陸續一直在出來,也有很多相關應用。在這里面大家做新網絡過程中,如果簡單的相對這個研究而言,生命周期就短了一些。
這里面有很多問題值得做,只是我還沒有能力做這個事情,比如說小樣本的情況下怎么做,如果正樣本很少負樣本很多的情況下,怎樣解決有偏差樣本分布。 還有一些無監督的問題,黑盒子的問題。
我們現在做的事情更多來自于里面的復雜度。第一點,就是把里面模型參數量減少,對應把模型壓小。第二是把模型浮點數運算減小,對應把模型做加速。以下簡短回顧一下在這個方向里大家怎么做以及我們做的事情。
從模型壓縮角度來說,我認為這里面工作可具體分成三種。第一種是將不同原始參數,構建一定映射共享同一參數,叫做參數共享,代表性的方法包括TTQ,PQ等等。第二套方法是在模型里面把參數裁減掉。第三個方法是把兩層之間的參數想象成矩陣,可以運用很多矩陣分解方式去做模型壓縮。
這是最早的ICML的2015的文章,HashedNets,利用hashing技巧來進行權值共享,例如原來是4*4,要保留16個參數,現在做一個量化表,除了這三個單詞特征之外,只保留量化表里面的索引,這樣就可以把網絡壓小。
這是一篇經典的實現參數共享,減少內部參數的冗余性。可以通過簡單二值量化,即將原始的浮點型參數量化成二值化的參數,只需要比較參數和閾值0的大小。另外,也提出了利用乘積量化的方法,將原始的權重W分解成m個不同的子矩陣,通過對每個子矩陣進行k-means聚類,得到子字典及其索引值。當字典單詞的個數較小時,就可以實現壓縮參數的目的。
這是ICLR2017上的文章,利用三值量化的方法,來防止二值網絡的量化誤差過大問題。具體而言,通過設計一個非對稱的量化值,并在網絡訓練過程中自適應的學習該參數。與此同時,引入另外一個梯度用于學習該三值網絡的索引,由此提高了網絡的準確率。這是第一套方法。
第二套方法主要做剪枝,最早的起點是2015BMVC的文章,它的做法是計算所謂的顯著性,就是當前把相關葉子跟子集裁掉之后,當前網絡誤差性能的上升,希望找到這樣的節點,使得它的裁剪不會影響整個網絡性能。
對于這個問題大家最早知道的是來自這篇韓松的文章。這篇文章第一塊是做網絡裁剪,中間用量化方式做網絡參數共享,第三塊在裁剪和共享之后再做對應的霍夫曼編碼進一步做縮減。
第三套方法是用數學方式去做里面的壓縮。例如發表在NIPS13上文章,提出從理論與實驗方面驗證深度神經網絡中存在大量的冗余信息,只有少量的參數需要學習,大部分的參數都可以根據已知參數直接得到,不需要通過額外的學習。其中可利用低秩分解技術壓縮網絡模型,通過將原始較大的網絡參數,分解成兩個小型的矩陣相乘。
另外,可以利用特殊的TT-format格式存儲全連接層的密集權重矩陣, TT-format的權值具有擁有很少的參數,而且在背向傳播過程中也能比較容易求出偏導,兼容性較強。
這是之前網絡壓縮方向代表性的工作,我們做了簡單的嘗試,我們嘗試的動機跟之前的方法有些不一樣。我們總結前人的方法,他們做剪枝,權值共享,矩陣壓縮等。他們做法優化目標是重構里面具體參數,優化單元是一層一層的做。
我們這樣做要要突破兩點,第一點,我們更多的考慮了之前的那層output,我們希望輸出的向量跟原始模型向量相似就好,中間的參數重構重要但不是那么必要。第二我們不是一層做完之后就不動了,是每層和每層合在一起去做。我們初始的網絡壓縮完之后,我們會更新里面的參數,最小化非線性響應的全局重建誤差。
從率失真曲線可以看出,我們的方法壓縮AlexNet和VGG-19,得到了新的state-of-the-art結果。
在固定壓縮比情況下,也顯示了算法的可靠性。
這是我們2018發在CVPR上的文章。我們還是考慮模型參數的二值化,我們都知道模型二值化優點會極大的減小存儲空間。但是它的缺點是會大大降低模型性能。我們的方法叫Modulated Convolutional Networks。MCN訓練完成后,只需要存儲二值化的參數,在線推理的時候可以重構原來的參數。
我們主要貢獻是用M-Filters來重構網絡參數。所謂的M-Filters就是通過學習得到的參數,它優化了三個損失,第一個損失是重構的線性分類誤差。第二個損失是重構的網絡參數誤差,第三個,我們希望加強類內特征緊湊性,減小這種二值化帶來的擾動,因此我們叫做中心損失,壓縮完之后我們只保留二值參數。
我們的實驗驗證,MCN有可能可以接近全精度的性能。這是一個網絡結構用我們的方式去做在線恢復的結果,以及對應網絡誤差的學習過程。同一類特征要越緊湊越好,以加強類內特征的緊湊性。這是簡單實現卷積網絡的效果,感興趣可以看我們的代碼和論文。我們文章測了之前有代表性的網絡結構,歡迎大家使用。
最后花一點時間講一下我們在網絡的加速這方面相關工作。這里包含三類,二值化網絡、結構化剪枝以及張量分解。
二值化網絡原理很簡單,binary原則上是沒有什么做優化。因此為了解決這問題,2015的NIPS 的文章,做BinaryConnect概念的映射,每次訓練完這個大網絡之后通過這個概念直接映射成對應的二值化網絡。理論上可以極大加速算法對應的性能。
此外去做結構化的稀疏學習,所謂的結構化稀疏學習公式很多,其實很簡單,要卷積的時候,對應參數要么同時為零,要么不為零。所以很自然的用組稀疏的方式放到結構里,利用梯度下降法可自動學習結構化稀疏參數。
最后利用傳統的CP張量分解算法,成功應用于深度網絡模型加速中,主要思想是將一個張量濾波K分解成4個秩1的向量,然后進行卷積計算,減少了內存開銷,同時加速了整個卷積層的計算。
我們第一個論文做的事情,之前大家考慮更多的是把通道域冗余去除。我們做的是進一步考慮空間域的冗余去除。我們的加速原理是只計算空間中重要的點,對于不重要的點可以利用knn或最近鄰點近似估計(不重要的點的空間位置信息可以預先存儲起來),這樣我們可以節省很多空間的計算資源。
那么如何選擇空間中重要的點位置信息呢?提出了基于三種的策略:隨機的采樣,均勻采樣,以及impact采樣。所有的位置保存形式可以用mask顯示出來,對于不重要點的位置設置為0,重要的則為1。
對于隨機和均勻的容易理解,關鍵是impact。對于impact主要利用了學習策略,首先認為如果空間點位置信息比較重要,刪除后(即將位置點的計算值O為0)對于網絡輸出的損失變化較大。通過利用構建泰勒公式展開,整理并排序損失增量期望值E,通過選擇指定數量的重要的點最為mask為1。
這是我們在ImageNet 和Googlenet上面做的實驗,結果表明我們的方法相比其他的方法性能還是提高很多。
這是我們今年一篇新的論文,用全局和動態的方式做對應的剪枝,這里面的想法很直接。這之前所有文章都是剪掉就剪掉了,選取什么時候剪是一層一層的選。
我們允許這個網絡被裁剪之后還可以被挪回來,所以是動態的,這是對應算法的框架。
我們的主要貢獻有三點,第一點充分的考慮濾波間的關系,全局濾波移除,第二點是動態更新濾波的顯著性,第三點是統一全局與動態方式。
這是我們的實驗結果,由于時間的關系我就不一一解釋了。
最后講一下檢測算法緊湊性。我們會發現在視覺分析系統里面,神經網絡是比較慢,但有些時候它并不是速度的瓶頸,瓶頸還有其他地方。比如說傳統的弱監督學習中的目標檢測,我給一個圖像級別的標簽,然后去訓練目標檢測器。
這是之前的主流的弱監督目標檢測的工作,他們不像全監督(比如yolo,SSD)一樣快,他們很慢。在這之前最快只有2幀不到的在線檢測速度,肯定不能實時。為什么呢?主要原因有兩點,第一點它做了多尺度和翻轉的數據擴充,因此時間消耗很大。第二點,檢測過程需要提取候選區域,這個需要消耗大量的時間。
我們這個方式用的是現在很流行的生成對抗學習,生成器G是快速的強監督目標檢測器。那我們用什么去訓練生成器G呢?我們需要對抗,我們不是用簡單的判別器。這里有代理器F,F是一個基于候選區域的,慢速的弱監督目標檢測器。我們的判別器D不是判別檢測性能好壞,是來判定檢查結果來自于強監督的檢測器還是弱監督的檢測器,我們希望生成器G能騙過判別器D,使強監督更穩定一些。這就是利用弱監督的目標檢測器和對抗生成學習來達到強監督的效果。
這是對應損失函數的設計,這里面的框架可以是任意的,比如生成器G可以用SSD,yolo等等,代理器F可以用任意的弱監督目標檢測器。這里面的目標函數,第一是對抗圖像檢測結果來源。另外一個就是同一張圖像檢測結果要盡量一致。對代理器F和生成器F的訓練是類似知識蒸餾的過程,我們希望強監督可以去學習弱監督的結果。因為弱監督是準的,強監督是快的,做完以后會得到又快又準的訓練效果。
這是主要的實驗結果,我們在PASCAL VOC 2007上可以達到最好的結果。
這是我們關于檢測速度的實驗,相對其他方法來說速度比之前最快方法提升了50多倍。準確度也有很大的提升。
這是一些相關的論文。
最后,感謝我們的團隊,實驗室的老師和同學今天都來開會,給我們這個工作做了很多工作,此外項目得到了很多企業支持,包括騰訊優圖實驗室等,謝謝大家!
-
計算機視覺
+關注
關注
8文章
1698瀏覽量
46030 -
大數據
+關注
關注
64文章
8896瀏覽量
137517
原文標題:讓機器“提綱挈領”:視覺系統的緊湊性初探|VALSE2018之七
文章出處:【微信號:deeplearningclass,微信公眾號:深度學習大講堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論