查看全课大纲(第 81 / 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

图说任务及其传统处理方法

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

本节我们将开启一个令人兴奋的跨模态任务——图像描述,俗称“图说”。想象一下,计算机不仅能“看懂”图片里有什么,还能用一句通顺的话把它“说”出来。这正是图像描述(Image Captioning)的核心目标。本节我们将明确图说任务的定义与挑战,剖析在深度学习兴起之前研究者们如何用“分段处理”的传统策略应对这一难题,并与新型的端到端策略作对比。

💡 核心导读

  • 任务定义:图像描述(图说)是一个输入为图像,输出为描述性句子的视觉-语言多模态任务,可视为一种从“视觉域”到“语言域”的特殊“翻译”。
  • 核心挑战:任务难点在于需要同时理解视觉信息(物体、场景)和语言信息(语法、语义),并进行跨模态的复合推理,将低级的像素信息抽象为高级的语言描述。
  • 传统策略:在深度学习普及前,主流方法是“分段处理”:先利用计算机视觉技术检测图像中的物体并打上标签,再基于常识规则或模板,将这些标签组合成完整的句子。
  • 策略对比:传统方法模块清晰,可利用已有成果,但误差会沿单向流程传递,且缺乏真正的语义理解;新型的端到端方法则把视觉与语言放进同一语义空间联合训练,具体模型将在后续几节展开。

什么是图像描述(图说)?

图像描述(Image Captioning),在中文语境中常被称为“图说”,其目标非常直观:为一张输入图片生成一段客观、准确的文字描述。

输入: [一张图片]
输出: “一只棕色的猫正坐在窗台上。”

这个过程就像我们小时候的“看图说话”练习。机器需要观察图片,理解其中的主要内容(主体、动作、场景、关系等),然后用符合语法和习惯的自然语言将其表达出来。

课件给出的示例也印证了这种表达习惯:多数描述都遵循“关键名词 + 动作 + 修饰词”的结构——先说图里是什么(人、某种爬行动物),再说它在做什么(拿着),最后补一个限定(在手上)。也有个别句子读起来别扭,很可能是机器生成的——这说明图说在“看懂”之外,还要把语言这一侧说稳。

长期以来,大规模图像描述数据集与评测基准都以英文为主,例如微软的 MSCOCO 数据集就为每张图片提供了 5 句人工标注的描述;中文领域的公开数据集规模与成熟应用相对少得多,这也是一个有待发展的方向。

为何图说是一个艰巨的挑战?

图说任务之所以困难,是因为它本质上是一个 “视觉-语言”多模态理解与生成问题。我们可以将其类比为一种特殊的机器翻译:但不是从一种语言翻译到另一种语言,而是将“视觉语言”(像素、特征)翻译成“自然语言”(文字、句子)。

要完成这种翻译,模型需要具备三种核心能力:

  1. 图片理解能力:识别图片中的物体、场景、属性、动作等。这依赖于我们课程核心的计算机视觉技术。
  2. 语言理解与生成能力:掌握语言的语法、句法,并能组织流畅的句子。这属于自然语言处理(NLP)的范畴。
  3. 多模态复合推理能力:将视觉信息与语言信息对齐、融合,并基于理解进行推理。例如,看到“人”、“狗”、“绳子”和“动作”,需要推理出“人在遛狗”这一事件。

这里的“多模态”沿用的是更早的“多媒体(Multi-Media)”说法:图像、声音、触觉等不同形态的信息同时在描述同一件事。放到图说里,就是图片在“表示”这幅画面,句子在“描述”这幅画面,两者必须彼此对应。

具体来说,挑战体现在两个层面:

1. 多模态理解与推理的鸿沟 图片是对真实世界相对客观、原始的刻画。而自然语言描述则是一种更高级的抽象,它包含了描述者的主观选择和重点强调。例如,面对一张飞艇的图片,描述可以是“一个巨大的飞艇在天空中”,也可以是“一个黑色的飞艇掠过蓝天”。选择哪个特征(大小、颜色)进行描述,本身就体现了抽象和选择的过程。

2. 复合理解与推理的复杂性 即使利用先进的目标检测模型识别出图片中的所有物体,这仅仅是第一步。模型还需要理解物体之间的关系(空间关系、主谓关系)、判断场景、推断正在发生的事件。这是一个多步骤、迭代的推理过程,远比简单地罗列物体标签要复杂得多。

因此,构建图说模型的整体思路可以概括为:完整理解图片内容 -> 进行复合推理 -> 生成语言描述。

传统的分段处理策略

在深度学习一统江湖之前,研究者们如何解决图说问题呢?他们采用的是一种直观的 “分段处理”(Pipeline)策略。这种策略将复杂的任务分解为几个相对独立的子模块,串联起来工作。

传统图说系统流程示意图
[输入图片]
      |
      v
[视觉内容识别模块]
(例如:目标检测、场景分类)
      |
      v
[文本标签集合]
(例如:{“猫”, “窗台”, “坐”})
      |
      v
[语言生成模块]
(基于规则或模板的句子构造)
      |
      v
[输出描述句子]
(例如:“一只猫坐在窗台上。”)

流程详解:

  1. 图片内容 -> 文本标签:首先,利用传统的计算机视觉方法(如目标检测、属性识别、场景分类模型)对图片进行分析,提取出关键的视觉概念,并为它们打上文本标签。例如,检测到“猫”、“窗台”,并判断出动作是“坐”。
  2. 文本标签 -> 描述语句:然后,将这些标签输入到一个语言生成模块。这个模块可能基于预定义的语法模板(如“一个[物体1]正在[地点]上[动作]”),或者利用简单的语言模型和常识知识库,来将这些标签组合成一个语法通顺的句子。标签之间的关系(如谁对谁做了什么)很大程度上依赖于常识推理。例如,系统“知道”猫通常坐在某物上,而不是窗台坐在猫上。

传统策略的优势:

  • 滤除干扰信息:在第一步识别时,就可以忽略掉与主要场景无关的背景或物体。
  • 模块化结构:系统由多个独立模块组成,结构清晰,便于调试和优化。
  • 直接利用现有成果:可以分别利用当时最先进的计算机视觉模型和自然语言处理模型,无需从头开始设计端到端系统。

传统策略的不足:

  • 误差单向传播:视觉识别模块产生的错误(如误检、漏检、标签错误)会直接、单向地传递给语言生成模块,导致最终句子错误,且无法在整体流程中被纠正。
  • 依赖硬编码规则与常识:句子生成严重依赖于预设的模板或规则,以及外部的常识知识库。系统缺乏真正的“语义理解”能力。
  • 灵活性差:难以生成多样、生动、贴合复杂场景的描述。例如,对于动画片中“猫和老鼠和平共处”的反常识场景,系统很可能依旧根据常识生成“猫在捉老鼠”的错误描述。

新型的端到端学习策略

与传统方法截然不同,基于深度学习的新型策略采用 “端到端”(End-to-End) 的学习方式。其核心思想是:将图片和文本映射到同一个共享的语义空间中。

在这个共享空间中,一张图片的特征向量和描述它的句子的特征向量应该非常接近。模型的目标就是学习这个从图像特征空间到语言特征空间的“翻译”函数。

新型端到端图说模型概念图
[图片] --(CNN编码器)--> [图片特征向量] --(RNN解码器逐词生成)--> [描述句子]
                              |
                              | 训练后:二者在共享语义空间中彼此接近
                              v
                        [真实句子的特征]

流程详解:

  1. 映射到共享空间:使用一个卷积神经网络(CNN,如VGG、ResNet)作为编码器(Encoder),把输入图片编码成一个固定维度的特征向量;语言一侧用循环神经网络(RNN,如LSTM)建模。训练之后,图片特征与描述它的句子被拉进同一个语义空间,彼此接近。
  2. 特征翻译与句子生成:以图片特征向量作为起点,由RNN解码器(Decoder)逐步生成描述单词,每一步都依赖已生成的单词与编码后的图片信息。整个模型(CNN+RNN)的参数通过最大化生成描述的正确概率联合训练。

新型策略的优势:

  • 联合优化,端到端训练:视觉和语言模块同时训练,相互协作,共同优化最终描述生成的目标,避免了分段流程中误差的单向传递。
  • 强大的表示能力:深度学习模型能够自动学习从像素到语义的复杂映射,以及语言的生成模式,无需手工设计特征和规则。
  • 模块化但统一:虽然结构上仍是编码器-解码器模块,但它们是作为一个整体被训练的。

新型策略的不足:

  • 可解释性差(黑箱问题):模型学习到的“共享语义空间”是一个高维向量空间,人类难以直观理解其具体含义,决策过程不透明。
  • 数据依赖性强:需要大量高质量的图片-描述配对数据才能训练出好的模型。

📝 动手练一练

  1. 概念辨析:假设一个传统的图说系统第一步视觉识别将图片中的“键盘”误识别为“书本”。请推理这对最终生成的描述句子可能造成怎样的影响?这与新型端到端模型可能出现的错误有何潜在区别?
  2. 策略思考:考虑一个简单场景:一张图片里有一个“杯子”放在“桌子”上。请分别设计一个基于模板的传统方法可能使用的句子模板,并说明如果采用端到端深度学习模型,需要什么样的数据来学习这种关系?
👉 点击查看参考答案
  1. 影响分析:

    • 传统方法:错误会直接传播。语言生成模块接收到错误的标签集合 {“书本”, “桌子”},基于模板(如“一个[物体1]在[物体2]上”)会生成“一本书在桌子上。”这是一个完全错误的描述,且错误根源清晰(第一步识别错误)。
    • 新型端到端模型:错误可能更隐蔽。模型可能生成一个语法通顺但内容错误的句子,如“桌子上有一本打开的书。”也可能因为上下文矛盾生成不合逻辑的句子。错误的根源是模型整体映射关系学习有偏差,难以定位是视觉理解部分还是语言生成部分出了问题。
  2. 策略设计:

    • 传统模板:可以设计如“一个[物体A]在[物体B]上。”的模板。系统需要识别出“杯子”和“桌子”,并判断空间关系为“在…上”,然后将标签填入模板。
    • 深度学习数据需求:端到端模型不需要显式模板。它需要大量类似“一个杯子在桌子上”、“桌面上放着一个咖啡杯”、“桌子上有个杯子”等配对数据。模型从这些数据中自动学习“杯子”、“桌子”的视觉特征,以及“在…上”这种关系的语言表达模式。

本章小结

本节我们正式引入了计算机视觉与自然语言处理交叉的经典任务——图像描述(图说)。我们明确了其目标是让机器“看图说话”,并深刻认识到其核心挑战在于跨越视觉与语言模态的语义鸿沟,进行复合理解与推理。

我们重点剖析了在深度学习成为主流之前,研究者们采用的传统分段处理策略。该方法将任务分解为视觉识别和语言生成两个独立阶段,虽然模块清晰、可利用已有技术,但其固有的误差单向传递、依赖硬编码规则和缺乏深层语义理解等缺陷,限制了其性能上限。

与之相对,新型的端到端策略把图片和文本映射到同一个语义共享空间,用 CNN 编码图像、RNN 解码生成句子并联合训练,避免了分段流程中误差的单向传递,代价则是黑箱和数据依赖。后续几节会把这条思路落到 NIC、SAT 等具体模型上。

需要说明的是,本节所说的“新型”端到端方案,是 2015 年前后以 CNN 编码、RNN 解码为代表的一代做法;2019 年前后起,Transformer 编码器—解码器与大规模图文预训练(如 CLIP、BLIP 系列)逐步成为主流,如今图说更多由多模态大模型直接完成。因此本节的重点是建立“视觉—语言”任务的建模范式,而不是追逐最新的模型结构。

📋 行动清单

  • 复述图像描述(图说)任务的定义、输入与输出。
  • 阐述图说任务为何被视为一种特殊的“机器翻译”,并说明其面临的三大核心能力挑战。
  • 对比说明传统分段处理策略与新型端到端策略的核心流程、优势与不足。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第13章《图像描述(图说)技术》配套课件(PDF)
    PDF · 2.1MB · 原课教辅
    下载
  • 第13章《图像描述(图说)技术》配套代码包
    ZIP · 134.0MB · 原课教辅
    下载