查看全课大纲(第 2 / 93 节)
- 1.计算机视觉概述
- 2.计算机视觉应用场景
- 3.困难与挑战
- 4.开源库介绍
- 5.图像显示与存储
- 6.CLAHE
- 7.腐蚀膨胀与开闭运算
- 8.滤波与边缘填充
- 9.各种滤波
- 10.图像金字塔
- 11.傅里叶变换
- 12.短时傅里叶变换与小波变换
- 13.颜色特征与颜色直方图
- 14.几何特征_边缘
- 15.几何特征-角点与斑点
- 16.局部特征-SIFT特征描述子
- 17.局部特征-SURF特征描述子
- 18.局部特征-ORB特征描述子
- 19.其他特征描述子
- 20.传统图像分割技术
- 21.GraphCut
- 22.GrabCut
- 23.人脸检测的传统方法
- 24.行人检测的传统方法HOG+SVM
- 25.行人检测DPM
- 26.人工神经网络的架构
- 27.目标函数与梯度下降
- 28.误差反向传播
- 29.可手算的神经网络
- 30.改进目标函数与克服梯度消散
- 31.神经网络之传统神经网络与深度网络的差异
- 32.各种梯度下降算法
- 33.如何选择合适的梯度下降算法
- 34.避免过适应
- 35.CNN的架构
- 36.CNN的误差反向传播_卷积层
- 37.CNN的误差反向传播_池化层
- 38.分类所用的数据集
- 39.Alexnet详解
- 40.VGG详解
- 41.GoogLeNet_v1
- 42.BatchNormalization
- 43.GoogLeNet_v3v4
- 44.ResNet
- 45.ResNeXt
- 46.CNN设计准则
- 47.图像检索与推土机距离
- 48.基于颜色相似性
- 49.基于形状相似性
- 50.基于纹理相似性
- 51.基于局部特征相似性
- 52.DL的二值哈希编码
- 53.高维空间中检索KDTree
- 54.高维空间中检索LSH
- 55.目标识别任务综述
- 56.RCNN
- 57.SPP-Net
- 58.Fast R-CNN
- 59.Faster R-CNN
- 60.R-CNN系列模型回顾
- 61.R-FCN的设计思路
- 62.R-FCN的实现
- 63.YOLOv1
- 64.YOLOv2_9000
- 65.YOLOv3
- 66.图像分割应用场景与数据集
- 67.上采样的实现方式
- 68.FCN网络架构的由来
- 69.FCN构建细节
- 70.DeepLabv1
- 71.CRF
- 72.DeepLabv2
- 73.DeepLabv3
- 74.特定的医学影像分割任务
- 75.U-Net
- 76.3D U-Net
- 77.V-Net
- 78.DenseNet
- 79.病理切片分析任务及数据集
- 80.病理切片分析
- 81.图说任务及其传统处理方法
- 82.深度语言模型与RNN
- 83.LSTM及其变种
- 84.NIC模型
- 85.SAT模型
- 86.图说的性能指标
- 87.判别模型与生成模型
- 88.KL散度与JS散度
- 89.VAE
- 90.GAN的基本原理
- 91.DCGAN与CGAN
- 92.Wasserstein GAN
- 93.SRGAN
计算机视觉应用场景
计算机视觉的应用场景
小象实战讲义 · 基于深度学习的计算机视觉
在上一节,我们了解到计算机视觉的核心是赋予计算机“看”的能力。那么,计算机“看”了之后要做什么?这就是本节要探讨的问题。我们将系统梳理计算机视觉从简单到复杂的四大核心任务:分类、分类及定位、目标检测与图像分割,并了解它们各自的应用场景,为后续深入学习奠定清晰的知识地图。
💡 核心导读
- 四大核心任务:理解图像分类、分类及定位、目标检测、图像分割的定义与区别。
- 从“是什么”到“在哪里”:掌握任务从识别单一物体类别,到定位其位置,再到处理多物体、精细轮廓的演进逻辑。
- 应用场景概览:初步了解这些任务在识别、检测、医疗影像等领域的应用,建立技术与需求的联系。
计算机视觉的四大核心任务
计算机视觉的任务并非单一,而是根据我们想让计算机“看”到什么、理解到什么程度,划分为不同层次。这些任务由简到繁,构成了一个清晰的技术栈。
图像分类:识别“是什么”
图像分类是计算机视觉中最基础的任务。它的目标是回答一个简单的问题:图片里有什么?或者说,图片中的主要物体是什么类别?
就像我们在视频中看到的例子,给计算机一张蝴蝶的图片,我们希望它能输出“蝴蝶”这个类别。在实际应用中,例如 ImageNet 竞赛,模型通常会输出一个概率列表,给出图片属于各个类别的可能性。对于一张清晰的蝴蝶图片,模型可能会给出类似以下的输出(概率值仅为示意):
- 蝴蝶 (Butterfly): 0.95
- 鳞翅目昆虫 (Lepidoptera): 0.04
- 昆虫 (Insect): 0.01
- … (其他类别概率极低)
这里的关键在于,分类任务通常假设图片中主要包含一个我们关心的物体,或者图片的整体场景属于某个类别(如“海滩”、“森林”)。背景信息被视为次要或干扰因素。分类是后续所有更复杂任务的基础,因为只有先知道“是什么”,才谈得上找“在哪里”。
分类及定位:不仅知道,还要找到
当图片中的目标物体不一定占据图片中心或主要区域时,我们不仅需要知道它是什么,还需要知道它具体在图片的哪个位置。这就是分类及定位任务。
例如,一张图片中,一只猫可能蜷缩在角落,并不占据图片的最大区域。分类及定位模型需要完成两件事:
- 分类:正确识别出该物体是“猫”。
- 定位:用一个矩形框(通常称为边界框,Bounding Box)标出猫在图片中的精确位置。
这个任务比单纯分类进了一步,开始涉及物体的空间信息。
目标检测:处理复杂场景中的多个物体
现实世界的图片往往包含多个物体。目标检测任务要求计算机在图片中找出所有感兴趣的物体,并分别用矩形框标出它们的位置和类别。
例如,一张图片里同时有猫、狗和鸭子。目标检测模型需要输出类似这样的结果:
- 位置 (x1, y1, x2, y2), 类别: 猫
- 位置 (x1, y1, x2, y2), 类别: 狗
- 位置 (x1, y1, x2, y2), 类别: 鸭子
这里需要特别记住一个术语:最小外接矩形(检测框),指的是边与图像边缘平行(轴对齐)、能把目标物体完整框在内部的最小矩形;它与可以旋转的“最小面积外接矩形”(OpenCV 的 minAreaRect)不是一回事。也就是说,目标检测不但要回答“猫在哪、狗在哪”,还要保证框里框着的确实是猫、狗或鸭子,即定位与分类同时正确。
这比分类及定位要复杂得多,因为模型需要处理数量不定、类别不同、尺寸各异且可能相互遮挡的多个目标。目标检测是许多实际应用的核心,如自动驾驶中的行人车辆检测、安防监控中的异常行为检测等。
图像分割:像素级的极致理解
图像分割是上述任务中最为精细和困难的一种。它要求模型不仅要找到物体,还要在像素级别上判断每一个像素属于哪个物体或类别。
它分为几个子方向:
- 语义分割:为每个像素分配一个类别标签(如“猫”、“狗”、“背景”),但不区分同一类别的不同个体(即图片中所有的猫都被标为同一个颜色)。
- 实例分割:在语义分割的基础上,区分同一类别的不同个体(即第一只猫、第二只猫被标为不同颜色)。
- 全景分割:语义分割与实例分割的结合,旨在统一分割所有可数物体(thing,如人、车)与不可数背景(stuff,如天空、草地)。
图像分割在医疗影像分析(如从CT片中分割出肿瘤组织)、自动驾驶(精确识别可行驶区域与障碍物轮廓)等领域有至关重要的应用。
主要应用场景延伸
基于上述核心任务,计算机视觉衍生出丰富多样的应用场景。课件中为我们梳理了几个主要方向:
识别:这是一种特定领域的分类任务,其识别结果具有具体的现实含义。
- 人脸识别:判断图像或视频中的人脸属于哪个特定个体。
- 字符识别:将图片中的印刷或手写文字转换为机器编码的文本。
- 车牌识别:从车辆图像中自动提取车牌号码。
- 行为识别:分析视频序列中人物的动作(如走路、跑步、挥手)。
- 步态识别:通过人走路的姿态进行身份识别。
检测:专注于“目标在哪里”的问题,是目标检测任务的具体应用。
- 物体检测:通用物体的检测。
- 人脸检测:在图片中定位所有人脸的位置,是人脸识别的第一步。
- 行人检测:在复杂场景(如街道监控)中定位行人的位置。
课件还给出了这两个方向上的经典传统方案:人脸检测用 Haar-like 特征 + 级联分类器,行人检测用 HOG + SVM 或 DPM。这些方法早于深度学习,属于本课程第 4 章「未有深度学习之前」的内容,今天已多被深度模型取代,但理解它们有助于看清技术演进。
图像分割与拼接:
- 图像拼接:将多张有重叠区域的图片合成为一张宽视角的高分辨率图片。
- 图像分割:如前所述,在医疗影像分析中,对器官、组织或细胞进行像素级分割是疾病诊断的关键步骤。
其他特定应用:
- 人体姿态识别:定位人体关键点(如关节),判断人体当前的姿态或动作。
- 风格迁移:将一幅图片的艺术风格应用到另一幅图片的内容上。
- 图像生成:让计算机自动生成逼真的图片,例如通过生成对抗网络。
📝 动手练一练
- 概念辨析:请简述图像分类、目标检测和语义分割这三个任务的核心区别,并各举一个现实生活中的应用例子。
👉 点击查看参考答案
- 图像分类:核心是判断整张图片的类别或其中主要物体的类别。输出:一个或多个类别标签及置信度。例子:相册自动按“人物”、“风景”、“宠物”分类。
- 目标检测:核心是找出图片中所有特定物体的位置和类别。输出:一系列边界框及每个框对应的类别标签。例子:自动驾驶系统实时检测道路上的车辆、行人、交通标志。
- 语义分割:核心是为图片中的每一个像素分配一个类别标签。输出:一张与输入图片同尺寸的彩色掩码图,不同颜色代表不同类别。例子:医疗影像分析中,将CT扫描图像中的每一个像素标记为“骨骼”、“软组织”、“肿瘤”或“背景”。
- 任务演进思考:假设我们要开发一个“智能厨房监控系统”,用于识别厨房中的物品和状态。随着需求从“识别有什么电器”到“判断燃气灶上是否有锅且锅是否干烧”,系统所需的核心计算机视觉任务将如何演进?
👉 点击查看参考答案
需求演进对应的任务演进如下:
- 识别有什么电器:这属于图像分类任务。系统只需判断图片场景是“空厨房”、“有冰箱的厨房”或“有微波炉的厨房”即可。
- 判断燃气灶上是否有锅:这需要目标检测任务。系统必须在厨房场景中定位到燃气灶,并进一步在燃气灶区域检测是否存在“锅”这个物体。
- 判断锅是否处于干烧状态:这可能涉及更复杂的任务。一种方法是图像分类,将锅的区域裁剪出来,分类为“正常烹饪”或“干烧”。更精细的方法可能需要图像分割,分析锅体区域的像素颜色、纹理变化(如是否发红)来综合判断。这体现了任务从简单分类到精细理解的演进。
本章小结
本节我们系统学习了计算机视觉的四大核心任务:图像分类回答“是什么”,分类及定位在此基础上回答“在哪里”,目标检测处理多物体的定位与识别,而图像分割则达到了像素级的极致理解。这些任务由简到繁,构成了计算机视觉技术体系的骨架,并支撑着从人脸识别、自动驾驶到医疗影像分析等众多激动人心的应用。
📋 行动清单
- 尝试用自己的话向朋友解释图像分类、目标检测和图像分割的区别。
- 观察生活中的一个场景(如街道、办公室),思考其中哪些环节可以应用本节学到的计算机视觉任务。
- 预习下一节,了解计算机视觉发展面临的主要挑战,思考为什么我们需要深度学习来解决这些问题。
—— 小象教研组