计算机视觉概述:让机器拥有「眼睛」
当我们走在熙熙攘攘的街头,随处可见人们举起手机拍摄照片或视频,用手指轻轻一划就能解锁手机屏幕,在电商平台上拍照搜索心仪的商品,或者让智能相机自动识别并对焦人脸。这些在今天看来习以为常的操作,实际上代表着一项深刻改变人类生活方式的技术——计算机视觉(Computer Vision)。试想一下,如果没有了这些能力,我们的数字生活将会变得多么不便:社交媒体无法自动标记照片中的朋友,智能汽车无法识别前方的行人和车辆,医生需要花费数小时手动分析一张医学影像。这些场景深刻说明,计算机视觉已经悄然成为现代科技社会的基础设施,如同电力和网络一样不可或缺。
那么,究竟什么是计算机视觉?简单来说,计算机视觉是人工智能的一个重要分支,致力于让计算机能够“看”懂图像和视频,从中提取有用的信息和知识。这听起来似乎不难理解,但要让冰冷的机器真正理解一张图片中发生了什么,却是一个极其复杂的问题。人类用眼睛和大脑完成这个过程只需要零点几秒,但对计算机而言,这涉及光信号到数字信号的转换、特征的提取与理解、语义层面的推理等一系列艰巨的挑战。从这个意义上说,计算机视觉研究的核心目标,就是让机器拥有类似于人类甚至超越人类的视觉感知能力。
计算机视觉的概念最早可以追溯到上世纪50年代,但真正作为一个独立的研究领域确立起来,还要从麻省理工学院的标志性项目说起。1966年,人工智能先驱马文·明斯基(Marvin Minsky)向他的学生布置了一个夏季研究项目:连接一台摄像机到计算机,让计算机能够描述它所看到的东西。这个看似简单的任务后来被证明需要数十年甚至更长的时间才能真正解决,但它开创了计算机视觉作为一个正式研究领域的先河。此后,斯坦福大学的人工智能实验室也开始系统性地研究视觉问题,试图让计算机识别手写文字和常见物体。这一时期的计算机视觉研究大多依赖于简单的图像处理技术,如边缘检测、纹理分析等,研究者们相信只要将图像分解成基本的几何图形,计算机就能理解整个场景。
进入70年代,计算机视觉迎来了一个重要的理论突破。出生于英国的神经科学家戴维·马尔(David Marr)在麻省理工学院工作期间,提出了至今仍被奉为经典的视觉计算理论。马尔的理论框架将视觉感知过程分解为三个层次:首先是早期视觉阶段,计算机从原始像素数据中提取基本特征,如边缘、纹理和深度信息;其次是2.5维 sketch阶段,将这些零散的特征组织成连续的表面和轮廓;最后是3D模型阶段,建立起物体的完整三维表示。他的开创性著作《视觉》(Vision)系统地阐述了这一理论,成为计算机视觉领域的奠基之作。尽管马尔本人因白血病于1980年英年早逝,年仅35岁,但他的理论框架深刻影响了此后几十年的计算机视觉研究,被无数研究者视为理解视觉过程的路线图。
然而,马尔理论在实践中遇到了巨大的困难。最大的挑战在于,从2D图像到3D世界的映射远比他想象的要复杂得多。由于透视投影和光照变化的影响,同一个物体在不同角度、不同环境下可能呈现出完全不同的外观,而不同的物体有时却会产生极其相似的图像特征。这种从低层次特征到高层次语义的“语义鸿沟”,成为困扰计算机视觉研究的核心难题。面对这一困境,70年代末到80年代期间,研究者们开始转向更为务实的方法:基于模型的方法和专家系统。他们试图为每种感兴趣的物体手工构建精确的几何模型,然后用这些模型去匹配图像中的内容。这种方法在受控环境下取得了一定成功,比如工业零件的检测,但面对现实世界千变万化的场景就显得力不从心了。
90年代,随着个人电脑的普及和互联网的兴起,计算机视觉研究迎来了新的机遇。研究者的关注点逐渐从理论建模转向数据驱动的统计学习方法。这一时期的标志性成果包括保罗·维奥拉(Paul Viola)和迈克尔·琼斯(Michael Jones)的人脸检测算法,以及大卫·洛(David Lowe)提出的尺度不变特征变换(SIFT)算法。SIFT算法的提出具有里程碑式的意义,它让计算机能够在图像中检测到具有独特性的关键点,并提取出对这些点周围区域特征的描述,这些描述对图像的缩放和旋转具有不变性。直到今天,SIFT及其衍生算法仍在图像匹配、目标识别和3D重建等领域发挥着重要作用。
与此同时,机器学习技术开始大规模应用于计算机视觉领域。支持向量机(Support Vector Machine)、随机森林(Random Forest)、提升方法(Boosting)等算法相继被引入视觉识别任务。研究者和工程师们投入大量精力去设计能够有效描述图像特征的人工描述子,如方向梯度直方图(HOG)、局部二值模式(LBP)、颜色直方图等。这些手工设计的特征加上机器学习分类器,构成了当时计算机视觉系统的主流范式。2000年代初至2010年代中期,基于这种范式的系统在人脸检测、行人检测、图像分类等任务上取得了显著进展,一些技术开始进入商业应用阶段。
然而,这种特征工程的方法存在固有的局限性:特征的表示能力很大程度上取决于人类专家的设计,而人类的想象力毕竟是有限的。对于复杂的视觉任务,比如准确识别成百上千种不同的物体,现有的特征描述子很快就遇到了瓶颈。研究人员发现,即使他们不断改进特征的设计,在某些任务上的准确率提升却越来越困难,陷入了一种停滞状态。整个领域都在呼唤一种全新的方法,能够让机器自动从数据中学习到有效的特征表示。
2012年,深度学习在计算机视觉领域掀起了一场革命。这一年,多伦多大学的亚历克斯·克里泽夫斯基(Alex Krizhevsky)、伊利亚·苏茨克维(Ilya Sutskever)和杰弗里·辛顿(Geoffrey Hinton)组成的团队,参加了全球最大的图像识别竞赛——ImageNet大规模视觉识别挑战赛(ILSVRC)。他们提出的卷积神经网络模型AlexNet,以悬殊的优势赢得了比赛,将错误率从之前的26%降低到了15%,这是一个惊人的进步。更重要的是,他们证明了利用图形处理器(GPU)进行大规模并行计算,可以有效训练深度神经网络这一原本被认为难以优化的模型。
此后几年,深度学习在计算机视觉领域势如破竹,不断刷新各项任务的纪录。2014年,牛津大学的研究者提出了VGGNet,通过更深的网络结构和更小的卷积核进一步提升了性能。同年,加州大学伯克利分校的罗斯·吉尔斯(Ross Girshick)等人提出了区域卷积神经网络(R-CNN),将深度学习成功应用于目标检测任务。2015年,微软研究院的何恺明等人提出了深度残差网络(ResNet),网络深度达到了惊人的152层,错误率降低到3.6%,首次在图像分类任务上超越了人类的表现。2017年,谷歌的Ashish Vaswani等人提出了Transformer架构,虽然最初用于自然语言处理,但很快就被引入计算机视觉领域,催生了Vision Transformer(ViT)等革命性模型,深刻改变了视觉特征表示的学习方式。
深度学习之所以能够取得如此巨大的成功,核心在于它能够自动从海量数据中学习层次化的特征表示。与传统方法需要人工设计特征不同,深度神经网络通过层层叠加的非线性变换,能够从原始像素中逐步提取出边缘、纹理、部件、物体等越来越抽象的特征。这种端到端的学习方式,避免了人工设计的特征在表达能力和泛化能力上的局限。同时,大规模标注数据集的积累(如ImageNet包含超过1400万张带标注的图像)、GPU等并行计算硬件的进步、以及新的训练技巧的发明,共同推动了深度学习在计算机视觉领域的全面突破。如今,几乎所有的顶级计算机视觉系统都建立在深度学习的基础之上。
了解了计算机视觉的发展历程之后,我们需要进一步认识这个领域所面临的核心挑战。尽管深度学习已经取得了巨大进步,但要让计算机的视觉能力真正接近甚至超越人类,还有很长的路要走。
第一个重大挑战是视角和光照的变化。当我们从不同角度观察同一个物体时,物体在图像中呈现的外观会发生显著变化;从清晨到黄昏、从室内到室外,光照条件的差异更是天壤之别。人类的大脑可以轻松地识别出在不同条件下出现的同一物体,但深度神经网络往往对这些变化非常敏感,可能会产生错误的判断。研究人员正在探索如何增强模型对这些变化的鲁棒性,方法是增强训练数据的多样性,或者设计能够显式建模几何和光照变化的架构。
第二个挑战是尺度变化。现实世界中的物体其大小可能相差数十倍甚至数百倍——从显微镜下才能看到的细胞到天空中飞行的飞机。一张图像中可能同时包含大得占满整个画面的人物和只有几个像素大小的远处行人。如何让检测器能够同时识别各种尺度的物体,至今仍是目标检测领域的一个研究热点。单阶段检测器、多尺度特征融合、金字塔结构等技术的出现,都是为了解决这个问题。
第三个挑战是遮挡问题。在现实场景中,物体之间经常相互遮挡——行人被车辆遮挡,桌上的物品被其他物体挡住部分外观。人类可以凭借对物体整体结构的理解,从不完整的信息中推断出被遮挡的物体是什么,但机器要做到这一点仍然很困难。处理遮挡问题需要模型具备更强的推理能力和对物体结构的深层理解。
第四个挑战是域漂移问题。深度神经网络在训练数据上表现良好,但当测试数据的分布与训练数据不同时,性能往往会大幅下降。这种现象被称为域漂移或协变量偏移。例如,一个在晴朗天气下采集的道路图像上训练的自动驾驶感知系统,在雨天或夜晚可能表现很差。解决这个问题的思路包括领域自适应、迁移学习、数据增强等技术。
第五个挑战是缺乏标注数据和标注成本问题。深度学习模型通常需要大量的标注数据来训练,而高质量的标注需要专业知识和大量人力投入。医学影像标注需要放射科专家,建筑场景标注需要专业人员,这种成本限制了深度学习在某些特定领域的应用。小样本学习、弱监督学习、自监督学习等方法正在试图缓解这一问题。
第六个挑战是可解释性和安全性。深度神经网络常被描述为“黑箱”模型,我们很难理解它为什么会做出某个判断。当系统应用于医疗诊断、自动驾驶等安全攸关的场景时,这种不透明性带来了风险。研究人员正在开发各种可视化工具和解释方法来打开这个黑箱,同时也在探索更加透明和可验证的模型架构。
理解了这些核心挑战后,我们需要系统性地认识现代计算机视觉的主要任务类型。正是这些不同的任务,构成了计算机视觉这座大厦的基石。
图像分类是计算机视觉中最基础也是最经典的任务。给定一张图像,图像分类系统需要判断图像中主要包含哪一类物体或属于哪个预定义的类别。例如,给定一张猫的照片,系统需要输出“猫”这个标签。这个看似简单的任务实际上要求模型理解图像的语义内容,对整幅图像形成一个高层认知。著名的ImageNet图像分类挑战赛就属于这类任务,它要求模型从1000个类别中选出正确的类别。ImageNet竞赛在深度学习革命的进程中扮演了关键角色,其数据集包含超过100万张训练图像和10万张测试图像,成为衡量图像分类模型性能的标准benchmark。
在ImageNet竞赛中取得突破的AlexNet、VGG、ResNet等模型,构成了现代图像分类的基石。以ResNet为例,它引入了残差连接技术,允许信息直接跨层传递,大大缓解了深层网络训练困难的问题。这种创新使得构建超过100层的深度网络成为可能,而更深层次的网络能够学习到更加抽象和语义化的特征表示。从技术角度看,图像分类通常采用卷积神经网络作为骨干网络,通过大量的卷积层、池化层和全连接层对图像进行层层处理,最终通过softmax函数输出各个类别的概率分布。
图像分类在实际应用中有广泛的用途。手机相册的自动分类功能可以按人物、地点、事物等对照片进行整理;电商平台可以用图像分类技术对商品图片进行归类,便于用户搜索和推荐;在医疗领域,图像分类可用于辅助诊断,从X光片、CT扫描中识别是否存在异常。
目标检测是比图像分类更复杂的任务。它不仅要判断图像中有哪些类别的物体,还要精确定位这些物体在图像中的位置,通常用矩形边界框来表示。目标检测面临的核心困难在于需要同时解决“是什么”(分类)和“在哪里”(定位)两个子问题。早期的目标检测方法采用滑动窗口策略,即用不同尺度的窗口在图像上滑动,对每个窗口区域进行分类判断。这种方法计算量巨大,而且效率低下。
2013年,罗斯·吉尔斯等人提出的区域卷积神经网络(R-CNN)开创了目标检测的新时代。R-CNN的创新在于首先使用选择性搜索算法在图像中提取可能包含物体的候选区域,然后对每个候选区域进行卷积神经网络特征提取和分类。这种两阶段的方法大幅提升了检测精度,但速度仍然较慢。此后,R-CNN系列不断进化:Fast R-CNN通过引入ROI池化层实现特征共享,大幅提升了效率;Faster R-CNN进一步引入了区域提议网络(RPN),实现了端到端的训练。
与此同时,另一类单阶段检测器也在快速发展。2015年,Wei Liu等人提出的SSD和Joseph Redmon等人提出的YOLO(You Only Look Once)开创了单阶段检测的新范式。与两阶段方法不同,单阶段检测器直接在特征图上进行密集预测,同时输出类别和位置信息。这种方法牺牲了一些精度,但换取了极高的速度,使得实时目标检测成为可能。YOLO经过多次迭代,演化到YOLOv8等版本,在保持实时性的同时检测精度已经可以与两阶段方法相媲美。
目标检测的应用场景极为丰富。自动驾驶汽车需要实时检测行人、车辆、交通标志和信号灯;视频监控系统需要自动识别异常行为和可疑人员;工业生产线需要检测产品缺陷和异物;农业领域需要识别病虫害和杂草。毫不夸张地说,目标检测是当前计算机视觉技术落地最广泛的任务之一。
语义分割将图像理解推向了像素级别。这个任务要求对图像中的每一个像素进行分类,标注出它属于哪个物体类别或场景类别。例如在一张街景图像中,语义分割会将所有属于“道路”的像素标记为一类,将所有属于“建筑物”的像素标记为另一类,将天空、树木、行人、车辆等各自归类。与目标检测只给出粗糙的矩形框不同,语义分割给出了精确到像素级的图像理解,因此也被称为密集预测。
语义分割技术的发展经历了几个重要阶段。早期的方法主要基于图像块分类,即对每个像素周围的小块进行分类判断,但这种方法计算效率低下且无法充分利用上下文信息。2014年,Jonathan Long等人提出的全卷积网络(FCN)是语义分割领域的里程碑工作。FCN将用于图像分类的卷积神经网络改造成全卷积结构,可以接受任意尺寸的输入图像并输出相应尺寸的分割结果。FCN通过反卷积或上采样操作逐步恢复空间分辨率,实现了从粗糙特征图到密集预测的转换。
此后,针对语义分割的特殊需求,研究者提出了多种改进方案。空洞卷积(Dilated Convolution)通过在卷积核中引入空洞,在不损失分辨率的情况下增大感受野;空洞空间金字塔池化(ASPP)进一步通过多个不同扩张率的空洞卷积并行处理,捕获多尺度上下文信息。解码器网络通过跳跃连接将低层的细节信息与高层的语义信息结合,提升了物体边缘的分割精度。条件随机场(CRF)和马尔可夫随机场(MRF)等后处理技术被用于细化分割边界。
语义分割在自动驾驶和场景理解中发挥着关键作用。高精度地图的生成需要精确划分道路、人行道、车道线等;自动驾驶系统需要理解可行驶区域和障碍物分布;增强现实应用需要知道虚拟物体应该叠加在哪些表面上。遥感图像分析也大量使用语义分割技术进行土地利用分类、冰川监测、森林覆盖变化检测等。
实例分割在语义分割的基础上更进一步,不仅要对每个像素进行分类,还要区分同一类别的不同实例。还是以街景为例,语义分割会将所有行人归为“行人”这一类,但实例分割需要将每一个具体的行人分别标识出来,区分出图像中有多少个行人、每个人各占哪些像素。这个任务结合了目标检测的实例区分能力和语义分割的像素级精度,被认为是计算机视觉中难度最高的基础任务之一。
2017年,Kaiming He等人提出的Mask R-CNN是实例分割领域最具影响力的工作。Mask R-CNN在Faster R-CNN的基础上增加了一个并行的分支用于预测每个实例的分割掩码,同时在检测和分割两个任务上都取得了优异的表现。Mask R-CNN的创新包括:引入RoIAlign替代RoIPooling,避免了量化误差带来的定位精度损失;采用特征金字塔网络(FPN)进行多尺度特征融合;网络结构简洁,易于训练和扩展。基于Mask R-CNN的框架,后续研究者提出了PANet、Hybrid Task Cascade等改进方案,进一步提升了实例分割的性能。
全景分割是近年来提出的新任务,可以看作是语义分割和实例分割的统一。任务要求同时处理两类内容:things(可计数的物体,如人、车、动物)和stuff(无定形的背景区域,如天空、道路、墙面)。things需要区分不同实例,stuff只需要进行语义分类,但两者需要在同一框架下无缝融合。全景分割的提出反映了计算机视觉追求统一化、通用化场景理解的发展趋势。
全景分割的评估指标是全景质量(Panoptic Quality,PQ),它综合考虑了分割的准确性和完整性。阿里·法尔哈迪(Ali Farhadi)团队提出的Panoptic FPN和汉堡大学的团队提出的UPSNet等工作,为这个新兴任务建立了基准方法和评估标准。
这五种核心任务构成了现代计算机视觉的技术框架,它们之间既有递进关系也有相互借鉴。例如,目标检测的技术可以直接扩展为实例分割,语义分割的方法也经常被用于提供上下文信息。在实际应用中,这些任务往往不是孤立使用的,而是根据需求组合或级联使用。
计算机视觉的价值最终要通过实际应用来体现。让我们通过几个典型领域来认识这项技术如何深刻改变着人类的生产和生活。
自动驾驶可能是计算机视觉最具影响力的应用方向之一,也是技术挑战最为严峻的领域之一。自动驾驶汽车需要感知系统具备对周围环境的全面理解能力,这正是计算机视觉的核心价值所在。在自动驾驶的感知模块中,摄像头是最重要的传感器之一,它提供的信息占到整个感知系统输入的相当大比例。
具体来说,自动驾驶系统中的计算机视觉技术包括:目标检测用于识别和追踪行人、车辆、骑行者等道路参与者;车道线检测用于确定车辆的可行驶区域和换道决策;交通标志和信号灯识别用于理解交通规则和信号状态;可行驶区域分割用于区分道路、路边、人行道等不同表面;深度估计用于获取前方障碍物的距离信息;3D目标检测用于在三维空间中定位周围物体。这些任务共同构成了自动驾驶的“眼睛”,为后续的决策规划模块提供关键的输入信息。
近年来,端到端的自动驾驶感知方案也在快速发展。特斯拉在其FSD(Full Self-Driving)系统中采用了基于纯视觉的感知方案,通过多摄像头融合和神经网络处理,实现了不依赖激光雷达的环境感知。2023年,特斯拉进一步展示了其Occupancy Network技术,能够感知周围环境的3D占据情况,对各类障碍物(包括训练集中未见过的新类别)都有良好的检测能力。这一进展标志着纯视觉方案在自动驾驶领域取得了重大突破。
当然,自动驾驶面临的挑战远不止感知。极端天气条件(如暴雨、大雪、浓雾)下的感知可靠性、传感器融合的一致性、长尾场景的处理等问题,仍需要持续的研究和工程努力。但可以确定的是,计算机视觉的持续进步是实现更高级别自动驾驶的关键支撑。
医疗影像是计算机视觉另一个具有巨大社会价值的应用领域。医学影像诊断是一项专业性