第1章 绪论 本章思维导图 作为人类,我们可以轻松感知周围的三维世界。相比之下,不管近年来计算机视觉已经取得多么令人瞩目的成果,要让计算机能像人类那样理解和解释图像,却仍然是一个遥远的梦想。为什么计算机视觉会成为如此富有挑战性的难题?它的发展历史与现状又是怎样的?本章将对计算机视觉的发展简史及应用现状进行介绍。 1.1计算机视觉简史 都说“眼睛是心灵的窗口”,乍一听觉得只是一个很好听的比喻,但仔细想想,视觉对于人类的重要性是不言而喻的。现代的科学研究也表明,人类的学习和认知活动有80%~85%都是通过视觉完成的。也就是说,视觉是人类感受和理解这个世界的*主要的手段。在当前机器学习成为热门学科的背景下,人工智能领域自然也少不了视觉的相关研究,这即是本书将要介绍的计算机视觉。 计算机视觉(Computer Vision)顾名思义是一门“教”会计算机如何去“看”世界的学科。计算机视觉与自然语言处理(Natural Language Process, NLP)及语音识别(Speech Recognition)并列为机器学习方向的三大热点方向。而计算机视觉也由诸如梯度方向直方图(Histogram of Gradient, HOG)以及尺度不变特征变换(ScaleInvariant Feature Transform, SIFT)等传统的手动提取特征(HandCrafted Feature)与浅层模型的组合(如图11所示)逐渐转向了以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习模型。然而计算机视觉正式成为一门学科,则要追溯到1963年美国计算机科学家拉里·罗伯茨在麻省理工大学的博士毕业论文“Machine Perception of ThreeDimensional Solids”[1]。加拿大科学家大卫·休伯尔(David Hubel)和瑞典科学家托斯坦·维厄瑟尔(Torsten Wiesel)从1958年起通过对猫视觉皮层的研究,提出在计算机的模式识别中,和生物的识别类似,边缘是用来描述物体形状的关键信息。拉里在论文中根据上述研究,通过对输入图像进行梯度操作,进一步提取边缘,然后在3D模型中提取出简单形状结构,之后利用这些结构像搭积木一样去描述场景中物体的关系,*后获得从另一角度看图像物体的渲染图。在拉里的论文中,从二维图像恢复图像中物体的三维模型的尝试,正是计算机视觉和传统图像处理学科思想上*大的不同:计算机视觉的目的是让计算机理解图像的内容。所以这算是与计算机视觉相关的*早的研究。 图11传统的手动提取特征与浅层模型的组合 20世纪70年代:从有了计算机视觉的相关研究开始,一直到20世纪70年代,人们关心的热点都偏向图像内容的建模,如三维建模、立体视觉等。比较有代表性的弹簧模型[2](Pictorial Structure, 如图12所示)和广义圆柱体模型(Generalized Cylinder,如图12所示)就是在这个时期被提出来的。那个时期将视觉信息处理分为三个层次:计算理论、表达和算法、硬件实现。在如今看来,或许有些不合理,但是却将计算机视觉作为了一门正式学科的研究。而且其方法论到今天仍然是表达和解决问题的好向导。 图12弹簧模型与广义圆柱 20世纪80年代:在视觉计算理论提出后,计算机视觉在20世纪80年代进入了*蓬勃发展的一个时期。主动视觉理论和定性视觉理论等都在这个时期被提出,这些理论认为人类的视觉重建过程并不是马尔理论中那样直接,而是主动的、有目的性和选择性的。同时从20世纪80年代起,这个学科开始慢慢脱胎于神经科学,更多偏重计算和数学的方法开始发展起来,相关的应用也变得更加丰富。**的图像金字塔和Canny边缘检测算法在这个时期被提出,图像分割和立体视觉的研究在这个时期也蓬勃发展,当然还有和本书更紧密的基于人工神经网络的计算机视觉研究,尤其是模式识别的研究也伴随着人工神经网络的**次复兴变得红火起来。 20世纪90年代:进入20世纪90年代,伴随着各种机器学习算法的全面开花,机器学习开始成为计算机视觉,尤其是识别、检测和分类等应用中一个不可分割的重要工具。各种识别和检测算法迎来了大发展。尤其是人脸识别在这个时期迎来了一个研究的小高潮。各种用来描述图像特征的算子也不停地被发明出来,如耳熟能详的SIFT[3]算法就是在20世纪90年代末被提出的。另外伴随着计算机视觉在交通和**等工业领域的应用越来越多,其他一些的基础视觉研究方向,如跟踪算法、图像分割等,在这个时期也有了一定的发展。 21世纪:进入21世纪之后,计算机视觉已经俨然成为计算机领域的一个大学科。国际计算机视觉与模式识别会议(IEEE Conference on Computer Vision and Pattern Recognition, CVPR) 和ICCV等会议已经是人工智能领域,甚至是整个计算机领域内的大型盛会,甚至出现了一些新的子方向,如计算摄影学(Computational Photography)等。在传统的方向上基于特征的图像识别成了一个大热门,斯坦福大学的李飞飞教授牵头创立了一个非常庞大的图像数据库ImageNet。ImageNet里包含1400万张图像,超过20000个类别。基于这个数据库,自2010年开始,每年举办一次的大规模视觉识别挑战比赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC),采用了ImageNet里1000个子类目的超过120万张图片作为数据,参赛者来自世界各国的大学、研究机构和公司,成为了计算机视觉领域*受关注的事件之一。图13为计算机视觉领域*活跃的主题时间轴。 图13计算机视觉领域*活跃的主题时间轴 论文“Machine Perception of ThreeDimensional Solids” 若想详细了解论文“Machine Perception of ThreeDimensional Solids”,请扫描书右侧的二维码。 1.22012年——计算机视觉发展的新起点 ILSVRC举办的前两年,各种“手工设计特征 编码 SVM”框架下的算法一直是该项比赛的前几名。ILSVRC的分类错误率的标准是让算法选出*有可能的S个预测,如果有一个是正确的,则算通过,如果都没有预测对,则算错误。2010年ILSVRC的**是NEC的余凯带领的研究组,错误率达到了28%。2011年施乐欧洲研究**的小组将这个成绩提高到了25.7%。 2012年,Hinton的小组也参加了竞赛,主力选手是Hinton的一名研究生Alex Krizhevsky。在这一年的竞赛上,Alex提出了一个5卷积层 2全连接层的卷积神经网络AlexNet[4],并利用CUDA给出了实现,这个算法将前5类错误率从25.7%降到了15.3%。在之前的ImageNet竞赛中,哪怕只有一个百分点的提升都是很不错的成绩,而深度学习**次正式应用在图像分类竞赛就取得了10个百分点的改进,并且完胜第二名(26.2%)。这在当时对传统计算机视觉分类算法的冲击是不言而喻的。现在概括起来,当时的改进主要有以下3点:更深的网络结构、校正线性单元(Rectified Linear Unit, ReLU)、Dropout等方法的应用、GPU训练网络。 尽管在当年许多传统计算机视觉的学者仍然对AlexNet抱有种种质疑,如算法难以解释、参数过多(实际上比许多基于SVM的办法参数少)等,但自从2012年后,ImageNet的参赛者几乎全体转向了基于卷积神经网络的深度学习算法,或者可以说计算机视觉领域全体转向了深度学习。基于深 ImageNet竞赛 及数据集相关信息度学习的检测和识别、基于深度学习的图像分割、基于深度学习的立体视觉等如雨后春笋般发展起来。深度学习,尤其是卷积神经网络,就像一把**的大杀器,在计算机视觉的各个领域开始发挥作用。 若想详细了解ImageNet竞赛及数据集相关信息,请扫描书右侧的二维码。 1.3计算机视觉应用 前面已经提到过深度学习在图像分类中的亮眼表现与应用潜力,那么当今计算机视觉在人类世界中又有哪些应用的空间与可能呢?本节将举几类例子来看看现实生活中都有哪些地方用到了计算机视觉。 (1) 安防 安防是*早应用计算机视觉的领域之一。人脸识别和指纹识别在许多**的公共**系统里都有应用,因为公共**部门拥有真正意义上*大的人脸库和指纹库。常见的应用有利用人脸库和公共摄像头对犯罪嫌疑人进行识别和布控。例如,利用公共摄像头捕捉到的画面,在其中查找可能出现的犯罪嫌疑人,用超分辨率技术对图像进行修复,并自动或辅助人工进行识别以追踪犯罪嫌疑人的踪迹;将犯罪嫌疑人照片在身份库中进行检索以确定犯罪嫌疑人身份也是常见的应用之一;移动检测也是计算机视觉在安防中的重要应用,利用摄像头监控画面移动用于防盗或者劳教和监狱的监控。 (2) 交通 提到交通方面的应用,一些开车的朋友们一定立刻就想到了违章拍照,利用计算机视觉技术对违章车辆的照片进行分析提取车牌号码并记录在案,这是大家都熟知的一项应用。此外很多停车场和收费站也用到车牌识别。除车牌识别外,还有利用摄像头分析交通拥堵状况或进行隧道桥梁监控等技术,但应用并没有那么广泛。前面说的是道路应用,针对汽车和驾驶的计算机视觉技术也有很多,如行人识别、路牌识别、车辆识别、车距识别,还有更进一步的也即是近两年突然火起来的无人驾驶等。计算机视觉技术在交通领域虽然有很多研究,但因为算法性能或实施成本等因素,目前真正能在实际应用中发挥作用的仍然不多,交通领域仍是一个有着巨大空间的领域。 (3) 工业生产 工业领域也是*早应用计算机视觉技术的领域之一。例如,利用摄像头拍摄的图片对部件长度进行非精密测量;利用识别技术识别工业部件上的缺陷和划痕等;对生产线上的产品进行自动识别和分类用来筛选不合格产品;通过不同角度的照片重建零部件三维模型。 (4) 在线购物 例如,淘宝和京东的拍照购物功能。事实上计算机视觉在电商领域的应用还有更多。图片信息在电商商品列表中扮演着信息传播*重要的角色,尤其是在手机上。当我们打开购物App时,*先*快看到的信息一定是图片。而为了让每一位用户都能看到*干净、有效、赏心悦目的图片,电商背后的计算机视觉就成了非常重要的技术。几乎所有的电商都有违规图片检测的算法,用于检测一些带有违规信息的图片。在移动网络主导的时代,一个手机App的一个页面能展示图片数量非常有限,如果搜索一个商品返回的结果里有重复图片出现,则是对展示画面的巨大浪费,于是重复图片检测算法发挥了重要的作用。对于第三方商家,一些商家在商品页面发布违规或是虚假宣传的文字很容易被检测,这个时候文字识别(Optical Character Recognition, OCR)就成了保护消费者利益的防火墙。除保护消费者利益外,计算机视觉技术也在电商领域里保护着一些名人的利益,一些精通 Photoshop的商家常常把明星的脸放到自己的商品广告中,人脸识别便成了打击这些行为的一把利剑。 (5) 信息检索 搜索引擎可以利用文字描述返回用户想要的信息,图片也可以作为输入来进行信息的检索。*早做图片搜索的是一家老牌网站 Tineye,上传图片就能返回相同或相似的结果。后来随着深度学习在计算机视觉领域的崛起,Google和百度等公司也推出了自己的图片搜索引擎,只要上传自己拍摄的照片,就能从返回的结果中找到相关的信息。 (6) 游戏娱乐 在游戏娱乐领域,计算机视觉的主要应用是在体感游戏,如Kinect、 Wii 和PS4等。在这些游戏设备上会用到一种特殊的深度摄像头,用于返回场景到摄像头距离的信息,从而用于三维重建或辅助识别,这种办法比常见的双目视觉技术更加可靠实用。此外就是手势识别、人脸识别、人体姿态识别等技术,用来接收玩家指令或和玩家互动。 (7) 摄影摄像 数码相机诞生后,计算机视觉技术就开始应用于消费电子领域的照相机和摄像机上。*常见的就是人脸,尤其是笑脸识别,不需要再喊“茄子”,只要露出微笑就会捕捉下美好的瞬间。新手照相也不用担心对焦不准,相机会自动识别出人脸并对焦。手抖的问题也在机械技术和视觉技术结合的手段下,得到了一定程度上的控制。近些年一个新的计算机视觉子学科——计算摄影学的崛起,也给消费电子领域带来了新玩意——“光场相机”。有了光场相机甚至不需要对焦,拍完之后回家慢慢选对焦点,聚焦到任何一个距离上的画面都能一次捕捉到。除图像获取外,图像后期处理也有很多计算机视觉技术的应用,如Photoshop中的图像分割技术和抠图技术,高动态范围(High Dynamic Range, HDR)技术用于美化照片,利用图像拼接算法创建全景照片等。 (8) 机器人/无人机 机器人和无人机中主要利用计算机视觉和环境发生互动,如教育或玩具机器人利用人脸识别和物体识别对用户和场景做出相应的反应。无人机也是近年来火热的一个领域。用于测量勘探的无人机可以在很低成本下采集海量的图片用于三维地形重建;用于自动物流的无人机利用计算机视觉识别降落地点,或者辅助进行路线规划;用于拍摄的无人机,目标追踪技术和距离判断等可以辅助飞行控制系统做出**的动作,用于跟踪拍摄或自拍等。 (9) 体育 高速摄像系统已经普遍用于竞技体育中。球类运动中结合时间数据和计算机视觉的进球判断、落点判断、出界判断等。基于视觉技术对人体动作进行捕捉和分析也是一个活跃的研究方向。 (10) ** 医学影像是**领域中一个非常活跃的研究方向,各种影像和视觉技术在这个领域中至关重要。计算断层成像(Computed Tomography, CT)和磁共振成像(Magnetic Resoiiance Imaging, MRI)中重建三维图像,并进行一些三维表面渲染都有涉及一些计算机视觉的基础手段。细胞识别和**识别用于辅助诊断,一些细胞或者体液中小型颗粒物的识别,还可以用来量化分析血液或其他体液中的指标。在**影像领域有一个国际医学影像计算与计算机辅助介入会议(International Conference on Medical Image Computing and Computer Assisted Intervention, MICCAI),每年会议上都会有许多计算机视觉在**领域的创新,它是一个非常有影响力的会议。 1.4GPU与并行技术——深度学习和计算机视觉发展的加速器 深度学习的概念其实很早便有了,但早期方方面面的因素制约了其发展,其中一个很重要的方面就是计算能力的限制。相对其他许多传统的机器学习方法,深度神经网络本身就是一个消耗计算量的大户。由于多层神经网络本身极强的表达能力,对数据量也提出了很高的要求。如图14所示,一个普遍被接受的观点是,深度学习在数据量较少时,和传统算法差别不大,甚至有时候传统算法更胜一筹。而在数据量持续增加的情况下,传统的算法往往会出现性能上的“饱和”,而深度学习则会随着数据的增加持续提高性能。所以大数据和深度神经网络的碰撞才擦出了今天深度学习的火花,而大数据更加大了对计算能力的需求。在GPU被广泛应用到深度学习训练之前,计算能力的低下限制了对算法的探索和实验,以及在海量数据上进行训练的可行性。 图14深度学习和传统机器学习算法对数据的依赖关系 从20世纪80年代开始人们就开始使用专门的运算单元负责对三维模型形成的图像进行渲染。不过直到1999年NVIDTA发布GeForce 256时,才正式提出了GPU的概念。在早期的GPU中,显卡的作用主要是渲染,但因为很强的并行处理能力和少逻辑重计算的属性,从2000年开始就有不少科研人员开始尝**GPU来加速通用高密度、大吞吐量的计算任务。2001年,通用图形处理器(GeneralPurpose computing on CPU, GPGPU)的概念被正式提出。2002年,多伦多大学的James Fung发布了Open VIDIA,利用GPU实现了一些计算机视觉库的加速,这是**次正式将GPU用到了渲染以外的用途上。到了2006年,NVIDIA推出了利用GPU进行通用计算的平台CUDA,让***不用再和着色器/OpenGL打交道,而更专注于计算逻辑的实现。这时,GPU无论是在带宽还是浮点运算能力都已经接近同时期CPU能力的10倍,而CUDA的推出一下降低了GPU编程的门槛,于是CUDA很快就流行开并成为GPU通用计算的主流框架。后来深度学习诞生了,鉴于科研界对GPU计算的一贯偏爱,自然开始有人利用GPU进行深度网络的训练。之后的事情前面也讲到了,GPU助Alex一战成名,同时也成为训练深度神经网络的标配。 除NVIDIA外, ATI(后被AMD收购)也是GPU大厂商。事实上ATI在GPU通用计算领域的探索比NVIDIA还早,但也许是因为投入程度不够(或其他原因),被NVIDIA 占尽先机,尤其是后来在深度学习领域。 了解GPU领域的风云变幻后,接下来看一些实际的问题:如何选购一块做深度学习的 GPU?一提到用于深度学习的GPU,很多人立刻会想到NVIDIA的Tesla系列。实际上根据使用场景和预算的不同,选择是可以很多样化的。NVTDIA主要有3个系列的显卡、GeForce、Quadro和Tesla。GeForce面向游戏,Quadro面向3D设计、专业图像和CAD等,而Tesla则是面向科学计算。 Tesla从诞生之初就瞄准高��度科学运算。所以Tesla严格意义上来说不是块显卡,而是计算加速卡。由于Tesla开始面向的主要是高性能计算,尤其是科学计算,在许多科学计算领域(如大气等物理过程的模拟中)对精度的要求非常高,所以Tesla设计的双精度浮点数的能力比GeForce系列强很多。例如,GTX Titan和K40两块卡,GTX Titan的单精度浮点数运算能力是K40的1.5倍,但是双精度浮点数运算能力却只有K40的不到15%。不过从深度学习的角度来看,双精度显得不是那么必要,如经典的AlexNet就是两块GTX 580训练出来的。所以,2016年开始,NVIDIA也在Tesla系列里推出了M系列加速卡,专门针对深度学习进行了优化,并且牺牲双精度运算能力而大幅提升了单精度运算的性能。前面也提到了,除精度外,Tesla主要面向工作站和服务器,所以稳定性特别好,同时也会有很多针对服务器的优化,如高端的Tesla卡上的GPU Direct技术可以支持远程直接内存访问(Remote Direct Memory Access, RDMA)用来提升节点间数据交互的效率。当然,Tesla系列价格也更加昂贵。 综上所述,如果在大规模集群上进行深度学习研发和部署,Tesla系列是**,尤其是M和P子系列是不二之选。 NVIDIA GPU 详细种类信息 如果在单机上开发,追求稳定性高的人就选择Tesla。而*有性价比且能兼顾日常使用的选择则是GeForce。 若要了解更多NVIDIA GPU详细种类信息,请扫描书右侧的二维码。 1.5基于卷积神经网络的计算机视觉应用 和计算机关联*紧密的深度学习技术是卷积神经网络。本节列举一些卷积神经网络发挥重要作用的计算机视觉的方向。 (1) 图像分类 图像分类,顾名思义,是一个输入图像,输出对该图像内容分类的描述的问题。它是计算机视觉的核心,实际应用广泛。如图15所示,在图中一个图像分类模型给出将一个图片分配给4个类别(cat,dog,hat,mug)标签的概率。如图15所示,图片被表示成一个大的三维数字矩阵。在下面的例子中,图像分类的*终目标是转换这个数字矩阵到一个单独的标签,如“Cat”。图片分类的任务是对于一个给定的图片,预测其类别标签。 图15图像分类示例 图像分类的传统方法是特征描述及检测,这类传统方法可能对于一些简单的图像分类是有效的,但由于实际情况非常复杂,传统的分类方法不堪重负。现在,我们不再试图用代码来描述每一个图像类别,转而使用机器学习的方法处理图像分类问题。处理图像分类的主要任务是给定一个输入图片,将其指派到一个已知的混合类别中的某一个标签。当前不管是*开始的MNIST数字手写体识别,还是后来的 ImageNet数据集,基于深度学习的图像分类在特定任务上早就超过了人的平均水平。本书第5章对图像分类任务的主流方法作了详细介绍。 (2) 物体检测 物体检测和图像分类差不多,也是计算机视觉里*基础的两个方向。它和图像分类的侧**不同,物体检测要稍微复杂一些,关心的是什么东西出现在了什么地方及其相关属性,是一种更强的信息。如图16所示,经过物体检测,我们得到的信息不仅是照片中包含车辆和人等,还得到了每一样检测到的类别的多种信息,以方框的形式展现出来。 图16物体检测示例 和图像分类相比,物体检测传达信息的能力更强。例如,要分类猫和狗的图片,如果图像中既有猫又有狗该怎么分类呢?这时候如果用分类,则是一个多标签分类问题;如果用物体检测,则物体检测会进一步告诉我们猫在哪,狗在哪。在物体检测领域以基于Region Proposal的RCNN及后续的衍生算法,以及基于直接回归的YOLO/SSD一系的算法为代表。这两类算法都是基于卷积神经网络,借助的不仅仅是深度网络强大的图像特征提取和分类能力,也会用到神经网络的回归能力。本书第6章对物体检测任务的主流方法作了详细介绍。 (3) 人脸识别 在计算机视觉里人脸识别的研究历史悠久。与我们的生活*相关的应用有两个方面:**个是检测图像中是否存在人脸,这个应用和物体检测很像,主要应用有数码相机中对人脸的检测,网络或手机相册中对人脸的提取等;第二个是人脸匹配,有了**个方面或是其他手段把人脸部分找到后,人脸的匹配才是一个更主流的应用。主要的思想是把要比对的两个人脸之间的相似度计算出来。传统的计算相似度的方法称为度量学习(metric learning)。其基本思想是,通过变换,让变换后的空间中定义为相似的样本距离更近,不相似的样本距离更远。基于深度学习也有相应的方法,比较有代表性的是Siamese网络和Triplet网络,当然广义上来说都可以算是度量学习。有了这种度量,可以进一步判断是否是一个人。这就是身份辨识,广泛用于罪犯身份确认、银行卡开卡等场景。 人脸领域*流行的测试基准数据是LFW (Labeled Faces in the Wild),顾名思义就是从实拍照片中标注的人脸。该图片库由美国麻省理工学院开发,约13000多张图片,其中有1680人的脸出现了两次或两次以上。在这个数据上,人类判断两张脸是否是同一人能达到的准确率为99.2%。而在深度学习大行其道之后,自2014年起这个记录已经被各种基于深度学习的方法打破。虽然这未必真的代表深度学习胜过了人类,但基于深度学习的人脸算法让相关应用的可用性大大提高。如今人脸识别相关的商业应用已经遍地开花。 图17LFW数据库图片示例 (4) 图像搜索 狭义来说,图像搜索还有个比较学术的名字是“基于内容的图片检索”(Content Based Image Retrieval, CBIR)。图像搜索是个比较复杂的领域,除单纯的图像算法外,还带有搜索和海量数据处理的属性。其中图像部分背后的重要思想之一和人脸识别中提到的度量学习很像,也是要找到和被搜图像的某种度量*近的图片。*常见的应用有Google 的Reverse Image Search和百度的识图功能、京东和淘宝的拍照购物及相似款**等。深度学习在其中的作用主要是把图像转换为一种更适合搜索的表达,并且考虑到图像搜索应用场景和海量数据,这个表达常常会哈希/二值化处理,以达到更高的检索/排序效率。 (5) 图像分割 图像分割是个比较传统的视觉应用,指的是以像素为单位将图像划分为不同部分,这些部分代表着不同的兴趣区域。如图18所示的例子,经过图像分割后,各个物体在画面中所占的像素被标了出来,和背景有了区分。 图18图像分割示例 传统的图像分割算法五花八门,如基于梯度和动态规划路径的Intelligent Scissors (Photoshop中的磁力套索);利用高一维空间的超曲面解决当前空间轮廓的水平集(Level Set)方法;直接聚类的Kmeans;后期很流行的基于能量*小化的GraphCut/GrabCut和随机场的CRF (Conditional Random Field)等。 后来深度学习出现了,和传统方法相比,深度学习未必能做到很精细的像素级分割。但是因为深度学习具有能学到大量样本中的图像语义信息的天然优势,这更贴近于人对图像的理解,所以分割的结果可用性通常也更好一些。常见的基于深度学习的图像分割手段是全卷积神经网络(Fully Convolutional Networks, FCN)。Facebook的人工智能实验室 (Facebook Artificial Intelligence Research,FAIR)于2016年发布了一套用于分割 物体检测的框架。其构成是一个大体分割出物体区域的网络DeepMask,加上利用浅层图像信息精细图像分割的SharpMask,*后是一个MultiPathNet模块进行物体检测。其实在这背后也体现出学界和业界开始慢慢流行起的另一个很底层的思想:就是图像分割和物体检测背后其实是一回事,不应该分开来研究。对照物体检测和图像分类的关系,图像分割传达的是比物体检测更进一步的信息。本书第6章对图像分割任务的主流方法作了详细介绍。 (6) 视频分析 因为和图像的紧密联系,视频当然少不了深度学习的方法。深度学习在图像分类任务上大行其道之后,视频分析的研究立刻就跟进了上来,比较有代表性的工作从2014年起相继出现。2014年的CVPR上,斯坦福大学的李飞飞组发表了一篇视频识别的论文。其基本思路是用视频中的多帧作为输入,再通过不同的顺序和方式将多帧信息进行融合。其方法并没什么特别出彩的地方,但随着论文发布了Sport1M数据集,包含了Youtube上487类共计113万个体育视频,是目前*大的视频分类数据集。 在2014年的NIPS上,牛津大学传统视觉强组VGG (Visual Geometry Group)发表了一篇更经典的视频分析的文章,将图像的空间信息,也就是画面信息,用一个称为Spatial Stream ConvNet的网络处理,而视频中帧之间的时序信息用另一个称为Temporal Stream ConvNet的网络处理,*后融合称为Two Streams,直译就是二流法。这个方法后来被改来改去,发展出了更深网络的双流法,以及更炫融合方式的双流法,甚至是除双流外还加入音频流的三流法。不过影响*大的改进还是马里兰大学和Google的一篇论文,其对时序信息进行了处理和改进,加入了LSTM以及改进版二流合并的方法,成为了主流框架之一。 因为视频有时间维度,所以还有一个很自然的想法是用三维卷积去处理视频帧,这样自然能将时序信息包括进来,这也是一个流行的思路。 (7) 生成对抗网络 深度学习包括监督学习、非监督学习和半监督学习。生成对抗网络GANs已经成为非监督学习中重要的方法之一,其相对于自动编码器和自回归模型等非监督学习方法具有能充分拟合数据、速度较快、生成样本更锐利等优点。GANs模型的理论研究进展很迅速,原始GANs模型通过MinMax*优化进行模型训练;条件生成对抗网络CGAN为了防止训练崩塌将前置条件加入输入数据;深层卷积生成对抗网络DCGAN提出了能稳定训练的网络结构,更易于工程实现;InfoGAN通过隐变量控制语义变化;EBGAN从能量模型角度给出了解释;Improved GAN提出了使模型训练稳定的五条经验;WGAN定义了明确的损失函数,对G&D的距离给出了数学定义,较好地解决了训练坍塌问题。GANs模型在图片生成、图像修补、图片去噪、图片超分辨、草稿图复原、图片上色、视频预测、文字生成图片、自然语言处理和水下图像实时色彩校正等方面获得了广泛的应用。本书第8章对生成对抗模型及其应用作了详细介绍。 (8) 图像描述 图像描述(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字。这项任务要求模型可以识别图片中的物体、理解物体间的关系,并用一句自然语言表达出来。应用场景为比如用户在拍了一张照片后,利用图像描述技术可以为其匹配合适的文字,方便以后检索或省去用户手动配字;此外它还可以帮助视觉障碍者去理解图像内容。类似的任务还有视频描述,输入是一段视频,输出是对视频的描述。本书第7章对图像描述任务的主流方法作了详细介绍。 其他应用:除上面提到的这些应用外,传统图像和视觉领域里很多方向现在都有了基于深度学习的解决方案,包括视觉问答、图像深度(立体)信息提取等,在此就不详述了。 1.6全书章节简介 本书作为计算机视觉领域普及类教材,从基本的视觉色彩原理到神经网络模型,再到之后的卷积模型与具体应用,对计算机视觉领域的知识进行了较为系统的介绍,对计算机视觉领域的入门具有较大的帮助与指引作用。全书共分为8个章节,第1、2章介绍了基础的图像色彩表示及传统特征提取方法;第4章介绍了当前计算机视觉领域主要依托的深度学习神经网络方法及卷积、循环神经网络;第5~8章由浅入深地介绍了当前计算机视觉领域涉及的图像分类、目标检测与分割、图片描述与关系识别及生成对抗网络等主要任务及算法。 本章思考题 (1) 图中为四种不同类型的机器学习/神经网络方法,请问该图的横坐标与纵坐标分别表示什么含义? (2) 深度学习**繁荣,请问主要原因有哪些? (3) 判断题:图像属于结构化数据,因为在计算机中它可以使用数组进行结构化的表示()。 (4) 下列说法正确的有()。 A. 减小训练集的规模通常不会影响算法的性能,并且能够对其提供有效的帮助 B. 减小神经网络的规模通常不会影响算法的性能,并且能够对其提供有效的帮助 C. 增加训练集的规模通常不会影响算法的性能,并且能够对其提供有效的帮助 D. 增加神经网络的规模通常不会影响算法的性能,并且能够对其提供有效的帮助 本章参考文献 [1]ROLXTS L G. Machine Perception of Three—Dimension Solids[J]. Tippctt J T. in O, 1. [2]FELZENSZWALB P F, HUTTENLOCHER D P. Pictorial structures for object recognition[J]. International journal of computer vision, 2005, 61(1): 5579. [3]LOWE D G. Distinctive image features from scaleinvariant keypoints[J]. International journal of computer vision, 2004, 60(2): 91110. [4]KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C]. Advances in neural information processing systems. 2012: 10971105. 第2章 图像的表示 本章思维导图 本章主要介绍了色彩和图像的基础知识,这些内容与计算机视觉有紧密的关系,是后续章节的基础。首先介绍了与图像有关的色彩学基础,包括电磁波谱、三基色原理和彩色模型;接着介绍了图像数字化的表示方法和有关概念,包括采样、量化和图像的性质;*后介绍了图像的预处理方法,包括灰度化、几何变换和图像增强。 章节目录: 第1章绪论1 本章思维导图1 1.1计算机视觉简史2 1.22012年——计算机视觉发展的新起点4 1.3计算机视觉应用5 1.4GPU与并行技术——深度学习和计算机视觉发展的加速器7 1.5基于卷积神经网络的计算机视觉应用8 1.6全书章节简介13 本章思考题13 本章参考文献14 第2章图像的表示15 本章思维导图15 2.1色彩学基础16 2.1.1三基色原理16 2.1.2彩色模型16 2.1.3小结17 2.2图像的数字化18 2.2.1采样18 2.2.2量化19 2.2.3图像的性质19 2.2.4像素间的关系19 2.2.5对比度21 2.2.6敏锐度21 2.2.7图像中的噪声22 2.2.8小结22 2.3图像预处理22 2.3.1灰度化23 2.3.2几何变换23 2.3.3图像增强25 2.3.4小结29 2.4本章总结29 本章思考题29 本章参考文献29 第3章特征提取31 本章思维导图31 3.1局部特征点检测概述32 3.2角点检测32 3.2.1角点介绍32 3.2.2Harris角点34 3.2.3Fast角点35 3.2.4FASTER角点检测子36 3.2.5小结37 3.3斑点检测37 3.3.1斑点介绍37 3.3.2LOG斑点检测37 3.3.3DOG斑点检测39 3.3.4DOH斑点检测39 3.3.5SIFT斑点检测40 3.3.6SURF斑点检测40 3.3.7小结41 3.4特征描述子41 3.4.1特征描述子介绍41 3.4.2BRIEF描述子41 3.4.3ORB特征提取算法42 3.4.4BRISK特征提取算法42 3.4.5FREAK特征提取算法43 3.4.6小结43 3.5边缘检测43 3.5.1边缘介绍43 3.5.2边缘检测介绍44 3.5.3边缘检测的基本方法44 3.5.4边缘检测算子的概念45 3.5.5常见的边缘检测算子45 3.5.6梯度算子介绍46 3.5.7梯度的衡量方法46 3.5.8如何用梯度算子实现边缘检测47 3.5.9小结47 3.6一阶微分边缘算子48 3.6.1一阶微分边缘算子的基本思想48 3.6.2Roberts算子48 3.6.3Prewitt算子49 3.6.4Sobel算子50 3.6.5Kirsch算子51 3.6.6小结51 3.7二阶微分边缘算子51 3.7.1二阶微分边缘算子的基本思想51 3.7.2Laplace算子52 3.7.3LOG算子53 3.7.4Canny算子53 3.7.5小结54 3.8基于窗口模板的检测方法54 3.8.1SUSAN检测方法介绍54 3.8.2小结56 3.9新兴的边缘检测算法56 3.9.1小波分析56 3.9.2模糊算法56 3.9.3人工神经网络56 3.9.4小结57 3.10本章总结57 本章思考题58 本章参考文献58 第4章神经网络60 本章思维导图60 4.1感知器61 4.1.1基本概念61 4.1.2激活函数61 4.2神经网络基础63 4.3前向传播与反向传播算法64 4.3.1前向传播算法64 4.3.2反向传播算法原理65 4.3.3反向传播计算过程推导67 4.4卷积神经网络概述70 4.5卷积神经网络结构71 4.6卷积神经网络的组成72 4.6.1局部感知72 4.6.2空间排列74 4.6.3参数共享75 4.6.4卷积75 4.6.5池化层76 4.6.6全连接层76 4.6.7卷积神经网络架构77 4.7卷积神经网络的应用77 4.8循环神经网络概述77 4.9循环神经网络与语言模型78 4.10循环神经网络结构79 4.11循环神经网络的扩展与改进80 4.11.1SimpleRNN80 4.11.2双向循环神经网络81 4.11.3深度循环神经网络81 4.11.4长短期记忆网络与门控循环单元网络82 4.12本章总结83 本章思考题84 本章参考文献84 第5章物体分类与识别86 本章思维导图86 5.1从AlexNet到GoogLeNet87 5.1.1AlexNet87 5.1.2VGGNet90 5.1.3GoogLeNet95 5.1.4小结102 5.2深度残差网络ResNet102 5.2.1平原网络的深度限制103 5.2.2ResNet的提出104 5.2.3残差学习突破深度限制105 5.2.4小结108 5.3迁移学习图像分类108 5.3.1迁移学习简介108 5.3.2迁移学习图像分类策略109 5.3.3小结111 5.4本章总结111 本章思考题111 本章参考文献112 第6章目标检测与语义分割113 本章思维导图113 6.1从RCNN到Faster RCNN114 6.1.1RCNN网络结构114 6.1.2交并比115 6.1.3边框回归算法115 6.1.4非极大值**116 6.1.5SPPNet网络结构117 6.1.6Fast RCNN网络结构118 6.1.7Faster RCNN网络结构120 6.1.8小结123 6.2端到端方法:YOLO、SSD123 6.2.1One Stage和Two Stage方法比较123 6.2.2YOLO网络结构123 6.2.3SSD网络结构125 6.2.4小结127 6.3从FCN到Mask RCNN127 6.3.1FCN网络结构128 6.3.2DeepLab网络结构130 6.3.3Mask RCNN网络结构131 6.3.4小结132 6.4本章总结133 本章思考题133 本章参考文献133 第7章图片描述与关系识别135 本章思维导图135 7.1单词、句子在深度学习模型中的表示136 7.1.1OneHot表示136 7.1.2词嵌入表示136 7.1.3小结139 7.2EncoderDecoder模型139 7.2.1EncoderDecoder基本结构139 7.2.2Attention机制140 7.2.3小结145 7.3基于EncoderDecoder的图片描述与关系识别模型145 7.3.1NIC网络模型146 7.3.2基于Attention的图片描述146 7.3.3小结148 7.4本章总结148 本章思考题148 本章参考文献149 第8章生成对抗网络150 本章思维导图150 8.1GANs模型介绍151 8.1.1生成模型与判别模型151 8.1.2对抗网络思想151 8.1.3详细实现过程151 8.1.4小结153 8.2GANs的简单理论介绍154 8.2.1GANs的理论灵感154 8.2.2GANs的理论证明155 8.2.3小结157 8.3GANs的应用157 8.3.1文本转图像——CGAN157 8.3.2照片风格转化——CycleGAN160 8.3.3局部变脸术——StarGAN163 8.3.4定制图片生成——InfoGAN165 8.3.5小结168 8.4本章总结169 本章思考题169 本章参考文献170