查看全课大纲(第 2 / 93 节)
  1. 1.计算机视觉概述
  2. 2.计算机视觉应用场景
  3. 3.困难与挑战
  4. 4.开源库介绍
  5. 5.图像显示与存储
  6. 6.CLAHE
  7. 7.腐蚀膨胀与开闭运算
  8. 8.滤波与边缘填充
  9. 9.各种滤波
  10. 10.图像金字塔
  11. 11.傅里叶变换
  12. 12.短时傅里叶变换与小波变换
  13. 13.颜色特征与颜色直方图
  14. 14.几何特征_边缘
  15. 15.几何特征-角点与斑点
  16. 16.局部特征-SIFT特征描述子
  17. 17.局部特征-SURF特征描述子
  18. 18.局部特征-ORB特征描述子
  19. 19.其他特征描述子
  20. 20.传统图像分割技术
  21. 21.GraphCut
  22. 22.GrabCut
  23. 23.人脸检测的传统方法
  24. 24.行人检测的传统方法HOG+SVM
  25. 25.行人检测DPM
  26. 26.人工神经网络的架构
  27. 27.目标函数与梯度下降
  28. 28.误差反向传播
  29. 29.可手算的神经网络
  30. 30.改进目标函数与克服梯度消散
  31. 31.神经网络之传统神经网络与深度网络的差异
  32. 32.各种梯度下降算法
  33. 33.如何选择合适的梯度下降算法
  34. 34.避免过适应
  35. 35.CNN的架构
  36. 36.CNN的误差反向传播_卷积层
  37. 37.CNN的误差反向传播_池化层
  38. 38.分类所用的数据集
  39. 39.Alexnet详解
  40. 40.VGG详解
  41. 41.GoogLeNet_v1
  42. 42.BatchNormalization
  43. 43.GoogLeNet_v3v4
  44. 44.ResNet
  45. 45.ResNeXt
  46. 46.CNN设计准则
  47. 47.图像检索与推土机距离
  48. 48.基于颜色相似性
  49. 49.基于形状相似性
  50. 50.基于纹理相似性
  51. 51.基于局部特征相似性
  52. 52.DL的二值哈希编码
  53. 53.高维空间中检索KDTree
  54. 54.高维空间中检索LSH
  55. 55.目标识别任务综述
  56. 56.RCNN
  57. 57.SPP-Net
  58. 58.Fast R-CNN
  59. 59.Faster R-CNN
  60. 60.R-CNN系列模型回顾
  61. 61.R-FCN的设计思路
  62. 62.R-FCN的实现
  63. 63.YOLOv1
  64. 64.YOLOv2_9000
  65. 65.YOLOv3
  66. 66.图像分割应用场景与数据集
  67. 67.上采样的实现方式
  68. 68.FCN网络架构的由来
  69. 69.FCN构建细节
  70. 70.DeepLabv1
  71. 71.CRF
  72. 72.DeepLabv2
  73. 73.DeepLabv3
  74. 74.特定的医学影像分割任务
  75. 75.U-Net
  76. 76.3D U-Net
  77. 77.V-Net
  78. 78.DenseNet
  79. 79.病理切片分析任务及数据集
  80. 80.病理切片分析
  81. 81.图说任务及其传统处理方法
  82. 82.深度语言模型与RNN
  83. 83.LSTM及其变种
  84. 84.NIC模型
  85. 85.SAT模型
  86. 86.图说的性能指标
  87. 87.判别模型与生成模型
  88. 88.KL散度与JS散度
  89. 89.VAE
  90. 90.GAN的基本原理
  91. 91.DCGAN与CGAN
  92. 92.Wasserstein GAN
  93. 93.SRGAN

计算机视觉应用场景

计算机视觉的应用场景

小象实战讲义 · 基于深度学习的计算机视觉

在上一节,我们了解到计算机视觉的核心是赋予计算机“看”的能力。那么,计算机“看”了之后要做什么?这就是本节要探讨的问题。我们将系统梳理计算机视觉从简单到复杂的四大核心任务:分类、分类及定位、目标检测与图像分割,并了解它们各自的应用场景,为后续深入学习奠定清晰的知识地图。

💡 核心导读

  • 四大核心任务:理解图像分类、分类及定位、目标检测、图像分割的定义与区别。
  • 从“是什么”到“在哪里”:掌握任务从识别单一物体类别,到定位其位置,再到处理多物体、精细轮廓的演进逻辑。
  • 应用场景概览:初步了解这些任务在识别、检测、医疗影像等领域的应用,建立技术与需求的联系。

计算机视觉的四大核心任务

计算机视觉的任务并非单一,而是根据我们想让计算机“看”到什么、理解到什么程度,划分为不同层次。这些任务由简到繁,构成了一个清晰的技术栈。

图像分类:识别“是什么”

图像分类是计算机视觉中最基础的任务。它的目标是回答一个简单的问题:图片里有什么?或者说,图片中的主要物体是什么类别?

就像我们在视频中看到的例子,给计算机一张蝴蝶的图片,我们希望它能输出“蝴蝶”这个类别。在实际应用中,例如 ImageNet 竞赛,模型通常会输出一个概率列表,给出图片属于各个类别的可能性。对于一张清晰的蝴蝶图片,模型可能会给出类似以下的输出(概率值仅为示意):

  • 蝴蝶 (Butterfly): 0.95
  • 鳞翅目昆虫 (Lepidoptera): 0.04
  • 昆虫 (Insect): 0.01
  • … (其他类别概率极低)

这里的关键在于,分类任务通常假设图片中主要包含一个我们关心的物体,或者图片的整体场景属于某个类别(如“海滩”、“森林”)。背景信息被视为次要或干扰因素。分类是后续所有更复杂任务的基础,因为只有先知道“是什么”,才谈得上找“在哪里”。

分类及定位:不仅知道,还要找到

当图片中的目标物体不一定占据图片中心或主要区域时,我们不仅需要知道它是什么,还需要知道它具体在图片的哪个位置。这就是分类及定位任务。

例如,一张图片中,一只猫可能蜷缩在角落,并不占据图片的最大区域。分类及定位模型需要完成两件事:

  1. 分类:正确识别出该物体是“猫”。
  2. 定位:用一个矩形框(通常称为边界框,Bounding Box)标出猫在图片中的精确位置。

这个任务比单纯分类进了一步,开始涉及物体的空间信息。

目标检测:处理复杂场景中的多个物体

现实世界的图片往往包含多个物体。目标检测任务要求计算机在图片中找出所有感兴趣的物体,并分别用矩形框标出它们的位置和类别。

例如,一张图片里同时有猫、狗和鸭子。目标检测模型需要输出类似这样的结果:

  • 位置 (x1, y1, x2, y2), 类别: 猫
  • 位置 (x1, y1, x2, y2), 类别: 狗
  • 位置 (x1, y1, x2, y2), 类别: 鸭子

这里需要特别记住一个术语:最小外接矩形(检测框),指的是边与图像边缘平行(轴对齐)、能把目标物体完整框在内部的最小矩形;它与可以旋转的“最小面积外接矩形”(OpenCV 的 minAreaRect)不是一回事。也就是说,目标检测不但要回答“猫在哪、狗在哪”,还要保证框里框着的确实是猫、狗或鸭子,即定位与分类同时正确。

这比分类及定位要复杂得多,因为模型需要处理数量不定、类别不同、尺寸各异且可能相互遮挡的多个目标。目标检测是许多实际应用的核心,如自动驾驶中的行人车辆检测、安防监控中的异常行为检测等。

图像分割:像素级的极致理解

图像分割是上述任务中最为精细和困难的一种。它要求模型不仅要找到物体,还要在像素级别上判断每一个像素属于哪个物体或类别。

它分为几个子方向:

  • 语义分割:为每个像素分配一个类别标签(如“猫”、“狗”、“背景”),但不区分同一类别的不同个体(即图片中所有的猫都被标为同一个颜色)。
  • 实例分割:在语义分割的基础上,区分同一类别的不同个体(即第一只猫、第二只猫被标为不同颜色)。
  • 全景分割:语义分割与实例分割的结合,旨在统一分割所有可数物体(thing,如人、车)与不可数背景(stuff,如天空、草地)。

图像分割在医疗影像分析(如从CT片中分割出肿瘤组织)、自动驾驶(精确识别可行驶区域与障碍物轮廓)等领域有至关重要的应用。

主要应用场景延伸

基于上述核心任务,计算机视觉衍生出丰富多样的应用场景。课件中为我们梳理了几个主要方向:

  1. 识别:这是一种特定领域的分类任务,其识别结果具有具体的现实含义。

    • 人脸识别:判断图像或视频中的人脸属于哪个特定个体。
    • 字符识别:将图片中的印刷或手写文字转换为机器编码的文本。
    • 车牌识别:从车辆图像中自动提取车牌号码。
    • 行为识别:分析视频序列中人物的动作(如走路、跑步、挥手)。
    • 步态识别:通过人走路的姿态进行身份识别。
  2. 检测:专注于“目标在哪里”的问题,是目标检测任务的具体应用。

    • 物体检测:通用物体的检测。
    • 人脸检测:在图片中定位所有人脸的位置,是人脸识别的第一步。
    • 行人检测:在复杂场景(如街道监控)中定位行人的位置。

    课件还给出了这两个方向上的经典传统方案:人脸检测用 Haar-like 特征 + 级联分类器,行人检测用 HOG + SVM 或 DPM。这些方法早于深度学习,属于本课程第 4 章「未有深度学习之前」的内容,今天已多被深度模型取代,但理解它们有助于看清技术演进。

  3. 图像分割与拼接:

    • 图像拼接:将多张有重叠区域的图片合成为一张宽视角的高分辨率图片。
    • 图像分割:如前所述,在医疗影像分析中,对器官、组织或细胞进行像素级分割是疾病诊断的关键步骤。
  4. 其他特定应用:

    • 人体姿态识别:定位人体关键点(如关节),判断人体当前的姿态或动作。
    • 风格迁移:将一幅图片的艺术风格应用到另一幅图片的内容上。
    • 图像生成:让计算机自动生成逼真的图片,例如通过生成对抗网络。

📝 动手练一练

  1. 概念辨析:请简述图像分类、目标检测和语义分割这三个任务的核心区别,并各举一个现实生活中的应用例子。
👉 点击查看参考答案
  • 图像分类:核心是判断整张图片的类别或其中主要物体的类别。输出:一个或多个类别标签及置信度。例子:相册自动按“人物”、“风景”、“宠物”分类。
  • 目标检测:核心是找出图片中所有特定物体的位置和类别。输出:一系列边界框及每个框对应的类别标签。例子:自动驾驶系统实时检测道路上的车辆、行人、交通标志。
  • 语义分割:核心是为图片中的每一个像素分配一个类别标签。输出:一张与输入图片同尺寸的彩色掩码图,不同颜色代表不同类别。例子:医疗影像分析中,将CT扫描图像中的每一个像素标记为“骨骼”、“软组织”、“肿瘤”或“背景”。
  1. 任务演进思考:假设我们要开发一个“智能厨房监控系统”,用于识别厨房中的物品和状态。随着需求从“识别有什么电器”到“判断燃气灶上是否有锅且锅是否干烧”,系统所需的核心计算机视觉任务将如何演进?
👉 点击查看参考答案

需求演进对应的任务演进如下:

  1. 识别有什么电器:这属于图像分类任务。系统只需判断图片场景是“空厨房”、“有冰箱的厨房”或“有微波炉的厨房”即可。
  2. 判断燃气灶上是否有锅:这需要目标检测任务。系统必须在厨房场景中定位到燃气灶,并进一步在燃气灶区域检测是否存在“锅”这个物体。
  3. 判断锅是否处于干烧状态:这可能涉及更复杂的任务。一种方法是图像分类,将锅的区域裁剪出来,分类为“正常烹饪”或“干烧”。更精细的方法可能需要图像分割,分析锅体区域的像素颜色、纹理变化(如是否发红)来综合判断。这体现了任务从简单分类到精细理解的演进。

本章小结

本节我们系统学习了计算机视觉的四大核心任务:图像分类回答“是什么”,分类及定位在此基础上回答“在哪里”,目标检测处理多物体的定位与识别,而图像分割则达到了像素级的极致理解。这些任务由简到繁,构成了计算机视觉技术体系的骨架,并支撑着从人脸识别、自动驾驶到医疗影像分析等众多激动人心的应用。

📋 行动清单

  • 尝试用自己的话向朋友解释图像分类、目标检测和图像分割的区别。
  • 观察生活中的一个场景(如街道、办公室),思考其中哪些环节可以应用本节学到的计算机视觉任务。
  • 预习下一节,了解计算机视觉发展面临的主要挑战,思考为什么我们需要深度学习来解决这些问题。

—— 小象教研组