CVPR 2015 之深度学习篇 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)。
3D Modeling
前面我们谈了 deep learning 在 2D image 和 2.5D depth 中的应用。那么,deep learning 是否可以用到3D模型中呢?Princeton的 Jianxiong Xiao 教授的组使用 deep belief network (DBN) 来给 3D shape 建模。居如 CNN,RNN 都是 deterministic model,而DBN是一个stochastic generative model。DBN描述了 object 和 object label 的联合概率分布 (joint distribution)。如是,当object有 missing data 的时候,DBN也可以根据联合概率分布来 sample missing data。这是 deterministic deep network 没有的性质。3D ShapeNets: A Deep Representation for Volumetric Shapes 这篇文章和早在2012年发表在CVPR上的文章 The Shape Boltzmann Machine: a Strong Model of Object Shape,有很多的相似,有兴趣的读者可以读一读,他们都用DBN来对 object 和 object label 建立概率模型 (原文:3D ShapeNets: A Deep Representation for Volumetric Shapes; The Shape Boltzmann Machine: a Strong Model of Object Shape )。
我们讲到的CNN主要用来描述信号的空间相关性(spatial correlation)。而另外一种更 deep 的architecture – recurrent neural network (RNN),则可以用来 model temporal sequences (理论上可以无限深)。RNN 在 language translation, image captioning, activity recognition (video) 中有大量的应用。RNN,LSTM (long-short term memory) 将是我们下一篇要介绍的内容。