CVPR 2015 之深度學習總結

Part 1 - AlexNet 和 VGG-Net

      今年的 CVPR 非常的火爆,總共有2800多人蔘與,相比去年增加了700多人,這與deep learning的異軍突起是不無關係的。CVPR 2015 基本是 “the year of deep learning”,有大概70%的文章是關於deep learning的。大會請來了2位 keynote speakers: 計算機學家 Yann LuCun (NYU, Facebook) 和 心理學家、神經學家 Jack Gallan (Berkeley)。 Yann是公認的 Convolutional Neural Network (CNN) 之父,而Jack是爲數不多的神經學領域看好deep learning的科學家,他用實驗顯示了ConvNets不同層和 visual cortex (視覺皮層) 不同層 它們之間的相關性。顯然,deep learning在工程和科學領域都引起了不小的轟動,不過既然CVPR是一個工程領域會議,我們就先聊聊deep learning在工程領域過去2年的進展。


AlexNet和VGG-Net也成爲約定俗成的術語
     在過去的十年裏,SVM,SIFT,HOG 已成爲計算機視覺學者人人皆知的名詞,每個計算機視覺學者直接把它們當作專有名詞寫進文章,而不需要加以解釋,甚至到後來也不用註明出處。今年的 CVPR, 由於過去2年 deep learning 在 computer vision 的很多問題上取得了state-of-the-art 的結果,使得這2種 deep architectures: AlexNet & VGG-Net, 成爲一個約定俗成的專有名詞,大家開始在文中廣泛的使用它們,就如大家以前廣泛使用 HOG,SVM一樣。

AlexNet和VGG-Net 的起源與network結構
     AlexNet 是一種典型的 convolutional neural network,它由5層 convolutional layer,2層 fully connected layer,和最後一層 label layer (1000個node, 每個node代表ImageNet中的一個類別) 組成。2012年,deep learning的大牛教授 Geoffrey Hinton (University of Toronto, Google) 的學生Alex Krizhevsky 設計了一個8層的CNN,並把它用於ImageNet的image classification,直接把當時最好算法的錯誤率差不多減半。這引起了computer vision community 的強烈關注。這篇文章的出現也是 deep learning 開始被 computer vision community 接受的關鍵轉折點。如是後來大家把這個8層的CNN命名爲AlexNet。

圖片

      VGG-Net同樣也是一種CNN,它來自 Andrew Zisserman 教授的組 (Oxford),VGG-Net 在2014年的 ILSVRC localization and classification 兩個問題上分別取得了第一名和第二名,VGG-Net不同於AlexNet的地方是:VGG-Net使用更多的層,通常有16-19層,而AlexNet只有8層。另外一個不同的地方是:VGG-Net的所有 convolutional layer 使用同樣大小的 convolutional filter,大小爲 3 x 3。

圖片

AlexNet和VGG-Net 中的 feature
    Deep learning 實際上是一種 feature engineering 的方法。不論是AlexNet還是VGG-Net,倒數第二層都可以很好的描述image全局特徵,所以它們通常用來當作 input image 新的 feature,用來做 image classification(最後一層N個node的softmax層,代表了N個類別)。那麼, AlexNet 和 VGG-Net 的 intermediate layer(中間層)呢? 他們是否也可以作爲特徵來使用? 答案是肯定的。 這些 intermediate convolutional layer 描述了影像的 local feature (局部特徵),而最後的幾層(倒數第二、第三層) fully connected layer,描述了影像的 global feature (全局特徵)。如果一個 deep architecture 只有 convolutional layer, 那麼 input image 可以任意大小,可是一旦在convolutional layer 上面疊加上 fully connected layer,input image大小就需要固定了。今年CVPR有好多文章使用 convolutionally filtered intermediate layer 作爲 local feature,典型的代表有 Jitendra Malik (Berkeley) 組的 Hypercolumns for Object Segmentation and Fine-grained Localization,Xiaoou Tang (CUHK) 組的 Action Recognition With Trajectory-Pooled Deep-Convolutional Descriptors。

Part 2 - deep learning在計算機視覺各個子領域的應用

Image Classification (圖像分類)
     deep learning 的騰飛歸功於其在 image classification 上的巨大成功。2012年的 AlexNet 的分類效果遙遙領先於第二名。後來各種 deep architectures 被採用,其中有名的是 VGG-Net 和 GoogLeNet,他們比 AlexNet 使用了更多的層。其次,GoogLeNet 還使用了 multi-scale processing 的思想: 即同一層有不同scale的信息;而 AlexNet和VGG-Net 的同一層來自於使用固定大小的 convolutional template 卷積和設定大小的pooling窗口pooling得到的,因此只有一個scale的信息。

Image Segmentation (圖像分割)
      傳統的影像分割叫做 semantic image segmentation,就是要給每個pixel一個類別。一個算法可以無限的精確,也就是它可以讓每個pixel的類別都和ground truth一致。可是,這樣的算法的問題是:如果我要問影像中有多少個 objects,每個 object 覆蓋了哪些pixels,這個算法是不知道的。爲了解決這個問題,Jitendra Malik 組在2014年的ECCV發表了一篇文章:Simultaneous Detection and Segmentation (SDS),用於檢測一個類別的所有的 objects,並確定每個 object 覆蓋了哪些pixels。今年 Jitendra Malik 組又提出了 Hypercolumn Object Segmentation 算法,它比SDS擁有更好的精度。(注:hypercolumn是借用神經學中的概念,它用來描述那些對不同 orientation & frequency edge 敏感的v1神經元)。不論SDS還是hypercolumn,它們都使用了 CNN features。然而 SDS 僅僅用了 fully connected layer 特徵,也就是圖像的全局特徵。僅使用全局特徵有明顯的缺陷,因爲 object boundary 的準確定位需要更低層的特徵。而 hypercolumn 同時考慮了低層特徵和全局特徵,使得 object segmentation 更加的準確。在hypercolumn出現之前,也就是2013年,Yann LeCun的組發表的 Learning Hierarchical Features for Scene Labeling 這篇文章,裏面使用了 multi-scale 的思想來同時考慮低層和高層的特徵進行pixel-wise的分類。補充一點:SDS和hypercolumn的第一步都是基於R-CNN (Region CNN) 的,R-CNN是目前 object bounding box detection 最流行的算法, 它的思想很優美,首先使用 selective search (2013年由荷蘭的阿麼斯特丹大學的 Jasper R. R. Uijlings 等提出)得到一系列的 object proposal, 然後通過CNN對這些 object proposal 分類。
     如果回到 semantic image segmentation,也就是不需要知道每個類別有多少個 object,以及每object 覆蓋了哪些 pixels,那麼最好的方法是 UCLA & Google 提出的算法: Sementic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs。它同樣是基於CNN提取feature,然後用 CRF 來進行分類。這篇文章代表了一類典型的模式:deep learning + X. 簡單來講,因爲deep learning有很強的特徵提取能力,那麼第一步先用 deep learning 提取feature,接下來就能用常規的 machine learning 的方法來處理這些 features 了。

Depth Estimation, Normal Estimation (深度、法向量 估計)
     depth和normal estimation問題,如果在有 stereo image pair 的情況下並不困難。但是否能從單張影像估計出 depth 或者 normal 呢?在有大量的 training data 和一些 constraints 下(比如vanishing points, orthogonal surfaces...),也是可行的。 2014年 Rob Fergus 的學生,就把 depth 和 normal estimation 看作一個 regression 問題,然後使用強大的高度非線性 regressor (CNN) 來做 end-to-end 的 training, 也就是從 image 到 depth normal 的 training (參考原文: Depth map prediction from a single image using a multi-scale deep network)。文中使用了 multi-scale deep network,coarse scale 能根據整個場景得到全局的depth map,這個 overall depth map 和原始的影像,一起 feed 到 fine scale 的CNN 中。總之,使用了deep architecture 後,depth normal estimation 就是個簡單的 regression 問題了,而且數據越多越好。今年的 CVPR,CMU 的教授 Abhinav Gupta 組也做了從單張影像估計 normal 的工作。他們的大致思想一致,只是把 normal estimation 離散化了,變成了一個 classification 問題。同樣,文章中使用了兩個 deep nets: coarse & fine (原文:Designing Deep Networks for Surface Normal Estimation)。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章