简单回顾的话,2006年Geoffrey Hinton的论文点燃了“这把火”,现在已经有不少人开始泼“冷水”了,主要是AI泡沫太大,而且深度学习不是包治百病的药方。
计算机视觉不是深度学习最早看到突破的领域,真正让大家大吃一惊的颠覆传统方法的应用领域是语音识别,做出来的公司是微软,而不是当时如日中天的谷歌。计算机视觉应用深度学习堪称突破的成功点是2012年ImageNet比赛,采用的模型是CNN,而不是Hinton搞的RBM和DBN之类,就是Hinton学生做出来以他命名的AlexNet。
(注:顺便提一下,2010年的ImageNet冠军是余凯/林元庆领导的NEC和UIUC Tom Huang组的合作团队,当时采用的方法是基于sparse coding+SVM。)
AlexNet应该算第一个深度CNN; ZFNet采用DeconvNet和visualization技术可以监控学习过程; VGGNet采用小滤波器3X3去取代大滤波器5X5和7X7而降低计算复杂度; GoogleNet推广NIN的思路定义Inception基本模块(采用多尺度变换和不同大小滤波器组合,即1X1,3X3,5X5)构建模型; Highway Networks借鉴了RNN里面LSTM的gaiting单元; ResNet是革命性的工作,借鉴了Highway Networks的skip connection想法,可以训练大深度的模型提升性能,计算复杂度变小; Inception-V3/4用1X7和1X5取代大滤波器5X5和7X7,1X1滤波器做之前的特征瓶颈,这样卷积操作变成像跨通道(cross channel)的相关操作; DenseNet主要通过跨层链接解决vanishing gradient问题; SE-Net是针对特征选择的设计,gating机制还是被采用; 前段时间流行的Attention机制也是借鉴于LSTM,实现object-aware的context模型。 ......
在具体应用领域也出现了不少成功的模型,比如:
detection问题的R-CNN,fast RCNN,faster RCNN,SSD,YOLO,RetinaNet,CornerNet等, 解决segmentation问题的FCN,DeepLab,Parsenet,Segnet,Mask R-CNN,RefineNet,PSPNet,U-Net等, 处理激光雷达点云数据的VoxelNet,PointNet,BirdNet,LMNet,RT3D,PIXOR,YOLO3D等, 实现激光雷达和图像融合的PointFusion,RoarNet,PointRCNN,AVOD等, 做图像处理的DeHazeNet,SRCNN (super-resolution),DeepContour,DeepEdge等, 2.5 D视觉的MatchNet,DeepFlow,FlowNet等, 3-D重建的PoseNet,VINet,Perspective Transformer Net,SfMNet,CNN-SLAM,SurfaceNet,3D-R2N2,MVSNet等, 以及解决模型压缩精简的MobileNet,ShuffleNet,EffNet,SqueezeNet, ......
下面我们针对具体应用再仔细聊。
图像/视频处理
先说图像/视频处理(计算机视觉的底层,不低级)。
这是一个典型成像处理的流程图:
![](https://image.jiqizhixin.com/uploads/editor/bcacdcfe-a75d-4065-895a-d909e318c97a/640.png)
![](https://image.jiqizhixin.com/uploads/editor/2790ecbb-4711-4824-b9aa-59daee196cfb/640.png)
先给出一个encoder-decoder network的AR-CNN模型(AR=Artifact Reduction):
![](https://image.jiqizhixin.com/uploads/editor/f2ed8ce0-c62f-4f9e-b3f3-4ecf16f8b31b/640.png)
![](https://image.jiqizhixin.com/uploads/editor/8d7422f9-b182-44af-a877-45ae76f10848/640.png)
Bilateral filter是很有名的图像滤波器,这里先给出一个受此启发的CNN模型做图像增强的例子:
![](https://image.jiqizhixin.com/uploads/editor/e8a20ffa-e6ae-4a84-997d-656b016a360e/640.png)
![](https://image.jiqizhixin.com/uploads/editor/03434a78-6645-4c5b-9cda-17c8ceeea14c/640.png)
用于修补的基于GAN思想的Encoder-Decoder Network模型:
![](https://image.jiqizhixin.com/uploads/editor/3567908e-97f8-4d7b-a088-bf1dfe8786f2/640.png)
![](https://image.jiqizhixin.com/uploads/editor/fc7433e0-cec8-4e95-afd3-b1cb28cd847f/640.png)
还有计算机视觉的预处理(2-D)。
1、特征提取
![](https://image.jiqizhixin.com/uploads/editor/5b56a5fe-fdea-422d-aa28-c01a54012d04/640.png)
一个轮廓检测的encoder-decoder network模型:
![](https://image.jiqizhixin.com/uploads/editor/387d342c-a6c8-4604-bcf0-22f0296114e5/640.png)
这里给出一个做匹配的模型MatchNet:
![](https://image.jiqizhixin.com/uploads/editor/e8e4f263-6ec1-404a-b39a-7be93b48591e/640.png)
![](https://image.jiqizhixin.com/uploads/editor/46fb1911-6184-4951-8600-1d286b584b64/640.png)
2.5-D计算机视觉
再说2.5-D计算机视觉部分(不是全3-D)。
可以说深度学习是相当“暴力”的,以前分析的什么约束呀,先验知识呀在这里统统扔一边,只要有图像数据就可以和传统机器学习方法拼一把。
传统的方法包括局部法和全局法,这里CNN取代的就是全局法。
![](https://image.jiqizhixin.com/uploads/editor/4bbd99e0-e744-4bd7-8bda-d962a81865c4/640.png)
2、视差/深度图估计
深度图估计和运动估计是类似问题,唯一不同的是单目可以估计深度图,而运动不行。
这里是一个双目估计深度图的模型:
![](https://image.jiqizhixin.com/uploads/editor/1d29228e-2a01-4f65-b3af-4c2f971455a2/640.png)
![](https://image.jiqizhixin.com/uploads/editor/a2d8606a-a133-4081-8598-591a4b779da8/640.png)
![](https://image.jiqizhixin.com/uploads/editor/44a5c830-e008-4e3a-831f-3d2ce7ae5f5b/640.png)
![](https://image.jiqizhixin.com/uploads/editor/3fa74c65-adc9-4906-841a-34e1efd4dfd9/640.png)
![](https://image.jiqizhixin.com/uploads/editor/a168cebc-f4e3-4371-bc9a-ae0477df89bd/640.png)
![](https://image.jiqizhixin.com/uploads/editor/66d97901-e889-4c4f-8cd3-f4ac629c9989/640.png)
![](https://image.jiqizhixin.com/uploads/editor/c3e5a22a-e41e-4ac1-bfee-da3da3dee7d9/640.png)
刚才介绍单目估计深度图的时候,其实已经看到采用inverse warping方法做新视角生成的例子,在IBR领域这里有一个分支叫Depth Image-based Rendering (DIBR)。
这是一个产生新视角的模型:
![](https://image.jiqizhixin.com/uploads/editor/27f4e34a-6ee0-4eef-9905-76a141a922de/640.png)
![](https://image.jiqizhixin.com/uploads/editor/09499f70-7f83-45c5-8c2f-61e597477075/640.png)
3-D计算机视觉
下面谈谈3-D,基于多视角(MVS)/运动(SFM)的重建,后者也叫SLAM。
基本上可以分成两种路径:一是多视角重建,二是运动重建。前一个有一个经典的方法MVS(multiple view stereo),就是多帧匹配,是双目匹配的推广,这样采用CNN来解决也合理。当年CMU在Superbowl展示的三维重建和视角转化,轰动一时,就是基于此路径,但最终没有被产品化(技术已经转让了)。
想想像特征点匹配,帧间运动估计,Loop Closure检测这些模块都可以采用CNN模型解决,那么SLAM/SFM/VO就进入CNN的探索区域。
1、标定
Calibration是计算机视觉的经典问题,摄像头作为传感器的视觉系统首要任务就是要确定自己观测数据和3-D世界坐标系的关系,即标定。摄像头标定要确定两部分参数,一是内参数,二是外参数。对于有多个传感器的视觉系统,比如深度测距仪,以前有Kinect RGB-D,现在有Velodyne激光雷达,它们相互之间的坐标系关系是标定的任务。
![](https://image.jiqizhixin.com/uploads/editor/c009be51-a639-4123-b727-e883efe13949/640.png)
![](https://image.jiqizhixin.com/uploads/editor/a647ddb0-e349-4c79-b397-7cb3f33fe990/640.png)
2、Visual Odometry(VO)
![](https://image.jiqizhixin.com/uploads/editor/b63a141a-85c3-45af-8668-ccec0f5ccddc/640.png)
![](https://image.jiqizhixin.com/uploads/editor/8012d091-e7c3-4bb6-9097-872f7edeaf9d/640.png)
![](https://image.jiqizhixin.com/uploads/editor/fc2b2e8c-c929-4bc3-a558-c791dad6da13/640.png)
![](https://image.jiqizhixin.com/uploads/editor/a0a2180d-43cc-4246-be50-a22c568aa36b/640.png)
![](https://image.jiqizhixin.com/uploads/editor/b2b526c4-e95d-4618-bc07-f5bbcaa190c4/640.png)
运动恢复结构是基于背景不动的前提,计算机视觉的同行喜欢SFM这个术语,而机器人的peers称之为SLAM。SLAM比较看重工程化的解决方案,SFM理论上贡献大。
![](https://image.jiqizhixin.com/uploads/editor/ea9cfc60-66c5-4cde-a962-ce2ef8e58f51/640.png)
![](https://image.jiqizhixin.com/uploads/editor/d423087b-e7cf-4bb5-bd53-9d86d9520ff8/640.png)
![](https://image.jiqizhixin.com/uploads/editor/ec71156b-cbdd-4932-89bc-969e2d935cdc/640.png)
![](https://image.jiqizhixin.com/uploads/editor/bb5bf8ca-3a2d-4ec7-93bb-22f80418154d/640.png)
![](https://image.jiqizhixin.com/uploads/editor/6d81ed54-e492-4bc5-b451-ca83cd4b36e1/640.png)
MVS的传统方法可以分成两种:region growing和depth-fusion,前者有著名的PMVS,后者有KinectFusion,CNN模型求解MVS的方法就是基于此。
![](https://image.jiqizhixin.com/uploads/editor/a0c60635-b3dc-48c1-91a7-9e303d462df9/640.png)
![](https://image.jiqizhixin.com/uploads/editor/3e3a8b1d-e992-490f-8063-5c09d121ad88/640.png)
![](https://image.jiqizhixin.com/uploads/editor/29eb03f5-e7d3-47a5-b42a-16995dbef0ce/640.png)
![](https://image.jiqizhixin.com/uploads/editor/cfd082a9-7e08-4d6f-8034-69b53a487d20/640.png)
![](https://image.jiqizhixin.com/uploads/editor/9dc8dcc4-b0b1-4e49-9c95-50cb679af288/640.png)
![](https://image.jiqizhixin.com/uploads/editor/b1a5d619-0c2a-474d-89e3-1de78984f0be/640.png)
环境理解
核心部分是计算机视觉的高层。
这部分是深度学习在计算机视觉最先触及,并展示强大实力的部分。出色的工作太多,是大家关注和追捧的,而且有不少分析和总结文章,所以这里不会重复过多,只简单回顾一下。
1、语义分割/实例分割(Semantic/Instance Segmentation)
语义分割最早成功应用CNN的模型应该是FCN(Fully Convolution Network),由Berkeley分校的研究人员提出。它是一种pixel2pixel的学习方法,之后各种演变模型,现在都可以把它们归类于Encoder-Decoder Network。
![](https://image.jiqizhixin.com/uploads/editor/df6cdec8-4f1a-4480-96e6-9c4888d05651/640.png)
这是一个借鉴目标检测算法SSD的实例分割模型。
![](https://image.jiqizhixin.com/uploads/editor/0ac1b19e-be44-4799-abc4-54b886f3a407/640.png)
![](https://image.jiqizhixin.com/uploads/editor/a5ba557c-7330-47fd-8f16-d8d136e465a3/640.png)
![](https://image.jiqizhixin.com/uploads/editor/c5a9f700-3bf0-4417-8a01-a76448b6e2ce/640.png)
目标检测的开拓性工作应该是Berkeley分校Malik组出来的,即两步法的R-CNN(Region-based CNN),借用了传统方法中的Region Proposal。之后不断改进的有fast RCNN和faster RCNN,每次都有新点子,真是“群星闪耀”的感觉。
一步法的工作,有名的就是SSD(Single Shot Detection)和YOLO(You Only Look Once),期间何凯明针对one-stage和two-stage方法的各自优缺点引进一个Focal Loss,构建的新方法叫RetinaNet,而后来YOLO3基本也解决了精度低的弱点。
![](https://image.jiqizhixin.com/uploads/editor/69473a38-e82c-4574-a109-927b4211a674/640.png)
激光雷达点云数据的处理,无论识别还是分割,有PointNet以及改进的CNN模型。
![](https://image.jiqizhixin.com/uploads/editor/77d867ce-4810-4db2-821c-11e8db10e4fc/640.png)
![](https://image.jiqizhixin.com/uploads/editor/03b31e6e-d3b8-4ee1-a5fe-f50dc18c3658/640.png)
![](https://image.jiqizhixin.com/uploads/editor/039151b5-2da3-449a-a54b-de20d7645f5b/640.png)
请注意,人脸识别分人脸验证(face verification)和人脸确认(face identification);前者是指两个人是不是同一个人,1-to-1 mapping,而后者是确定一个人是一群人中的某个,1-to-many ampping。以前经常有报道机器的人脸识别比人强了,都是指前者,假如后者的话,那谁能像机器一样识别上万人的人脸数据库呢?何况中国公安部的数据高达亿的数量级。
一个完整的人脸识别系统,需要完成人脸检测和人脸校准(face alignment),而后者是需要人脸关键点(facial landmarks)的检测,也是可以基于CNN模型来做。这里以FB的DeepFace模型为例吧,给出一个人脸识别的系统框图:
![](https://image.jiqizhixin.com/uploads/editor/13b8a141-c524-440e-af51-1b20da1b3466/640.png)
这是不久前刚刚提出的人脸检测模型:Selective Refinement Network
![](https://image.jiqizhixin.com/uploads/editor/51232779-d10d-456e-be1f-2962ae762688/640.png)
而这里给出一个基于facial landmarks做校准的模型:
![](https://image.jiqizhixin.com/uploads/editor/b4dfa710-f9bc-4cda-9ab1-ad2020728bb0/640.png)
![](https://image.jiqizhixin.com/uploads/editor/4aaf5adb-e3c6-4309-a9ad-0beb5c4b94ef/640.png)
![](https://image.jiqizhixin.com/uploads/editor/1d08aed6-27cd-416a-a556-c5d0e7c57c56/640.png)
3、跟踪(特别例子:人体姿态/骨架)
目标跟踪是一个递推估计问题,根据以前的图像帧目标的信息推算当前目标的位置甚至大小/姿态。有一阵子,跟踪和检测变得浑为一体,即所谓tracking by detection,跟踪也可以看出一个目标分割(前后景而言)/识别问题。
跟踪是短时(short term)邻域的检测,而一般的检测是长时(long term)大范围的检测。跟踪的困难在于目标的遮挡(分部分还是全部),背景复杂(相似目标存在),快速(fast)以及突变(agile)运动等等。比如,跟踪人脸,当转90度成侧脸时就会有以上这些问题。
跟踪方法有一个需要区分的点,多目标(MOT)还是单目标(SOT)跟踪器。单目标不会考虑目标之间的干扰和耦合,而多目标跟踪会考虑目标的出现,消失以及相互交互和制约,保证跟踪各个目标的唯一性是算法设计的前提。
跟踪目标是多样的,一般是考虑刚体还是柔体,是考虑单刚体还是铰接式(articulated),比如人体或者手指运动,需要确定skeleton模型。跟踪可以是基于图像的,或者激光雷达点云的,前者还要考虑目标在图像中大小的变化,姿态的变化,难度更大。
基于以上特点,跟踪可以用CNN或者RNN模型求解,跟踪目标的描述本身就是NN模型的优势,检测也罢,分割或者识别也罢,都不是问题。运动特性的描述也可以借鉴RNN模型,不过目前看到的结果这部分不比传统方法好多少。
![](https://image.jiqizhixin.com/uploads/editor/6cee4af7-9745-4aa3-a883-3e7c9d3dcf85/640.png)
![](https://image.jiqizhixin.com/uploads/editor/f8582af3-9966-4311-8d65-f327d479d734/640.png)
![](https://image.jiqizhixin.com/uploads/editor/033ecd88-333b-4dfe-b14e-538eaadf4b8e/640.png)
![](https://image.jiqizhixin.com/uploads/editor/eaca2729-dac7-4ad9-b966-94becb256ff7/640.png)
![](https://image.jiqizhixin.com/uploads/editor/00196138-2576-4d88-908a-a9067b3ebf02/640.png)
最近CMU提出一个方法,基于Part Affinity Fields(PAF)来估计人体姿态和骨架,速度非常快。PAF是一个非参数描述模型,用来将图像像素和人体各肢体相关起来,看它的架构如图,采用的是two branch CNN结构,联合学习各肢体的相关性和位置。
![](https://image.jiqizhixin.com/uploads/editor/bce8d18b-e3ae-4e00-a57d-7e5cb357d2dc/640.png)
![](https://image.jiqizhixin.com/uploads/editor/98c37d0a-02c1-4c11-ba40-7d7e580c4567/640.png)
四大领域应用
最后一下计算机视觉的推动领域。
后来有了SIFT,用了Information Retrieval的概念Bag of Words,加上inverted Indexing,TF-IDF(term frequency–inverse document frequency),hashing之类的技术变得好多了,每年ACM MM会议上一堆的paper。深度学习进来,主要就是扮演特征描述的角色。
![](https://image.jiqizhixin.com/uploads/editor/cd04bdd7-9919-40e0-8934-8282bf2a2ce2/640.png)
![](https://image.jiqizhixin.com/uploads/editor/4ad3b176-e956-4017-9ba8-cd7090df1791/640.png)
AR一开始就不好做,不说VR那部分的问题,主要是实时性要求高,无论识别还是运动/姿态估计,精度都不好。现在计算机硬件发展了,计算速度提高了,加上深度学习让识别变得落地容易了,最近越来越热,无论是姿态估计还是特征匹配(定位),都变得容易些了。希望这次能真正对社会带来冲击,把那些AR的梦想都实现。
![](https://image.jiqizhixin.com/uploads/editor/8068a09f-33f0-4a57-9dc5-fd834a3d76aa/640.png)
![](https://image.jiqizhixin.com/uploads/editor/99b921d1-c5ef-4994-a985-ae67de89fb6b/640.png)
![](https://image.jiqizhixin.com/uploads/editor/659b4aae-e7a2-4faa-a8c4-701b6b76eed0/640.png)
Captioning是计算机视觉和NLP的结合。你可以把它当成一个“检索”任务,也可以说是一个“翻译”工作。深度学习,就是来帮助建立一个语言模型并取样产生描述。
![](https://image.jiqizhixin.com/uploads/editor/65353e98-20b4-454e-9ff2-e2880fa4b6eb/640.png)
![](https://image.jiqizhixin.com/uploads/editor/08d0842b-503f-4a57-966f-f66b95e0589a/640.png)
![](https://image.jiqizhixin.com/uploads/editor/9961e2a4-25cf-41b9-87a7-d481b5a94de4/640.png)
4、内容问答(Q&A)
![](https://image.jiqizhixin.com/uploads/editor/1c462b57-3b13-4361-8386-b30b0fce049f/640.png)
![](https://image.jiqizhixin.com/uploads/editor/3cbc65aa-d3bb-46a8-a88e-cd2d64f83bef/640.png)
![](https://image.jiqizhixin.com/uploads/editor/0c36a515-38aa-4231-8946-bb43ba947094/640.png)
原文链接:
https://zhuanlan.zhihu.com/p/55747295