查看全课大纲(第 81 / 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
图说任务及其传统处理方法
小象实战讲义 · 基于深度学习的计算机视觉
本节我们将开启一个令人兴奋的跨模态任务——图像描述,俗称“图说”。想象一下,计算机不仅能“看懂”图片里有什么,还能用一句通顺的话把它“说”出来。这正是图像描述(Image Captioning)的核心目标。本节我们将明确图说任务的定义与挑战,剖析在深度学习兴起之前研究者们如何用“分段处理”的传统策略应对这一难题,并与新型的端到端策略作对比。
💡 核心导读
- 任务定义:图像描述(图说)是一个输入为图像,输出为描述性句子的视觉-语言多模态任务,可视为一种从“视觉域”到“语言域”的特殊“翻译”。
- 核心挑战:任务难点在于需要同时理解视觉信息(物体、场景)和语言信息(语法、语义),并进行跨模态的复合推理,将低级的像素信息抽象为高级的语言描述。
- 传统策略:在深度学习普及前,主流方法是“分段处理”:先利用计算机视觉技术检测图像中的物体并打上标签,再基于常识规则或模板,将这些标签组合成完整的句子。
- 策略对比:传统方法模块清晰,可利用已有成果,但误差会沿单向流程传递,且缺乏真正的语义理解;新型的端到端方法则把视觉与语言放进同一语义空间联合训练,具体模型将在后续几节展开。
什么是图像描述(图说)?
图像描述(Image Captioning),在中文语境中常被称为“图说”,其目标非常直观:为一张输入图片生成一段客观、准确的文字描述。
输入: [一张图片]
输出: “一只棕色的猫正坐在窗台上。”这个过程就像我们小时候的“看图说话”练习。机器需要观察图片,理解其中的主要内容(主体、动作、场景、关系等),然后用符合语法和习惯的自然语言将其表达出来。
课件给出的示例也印证了这种表达习惯:多数描述都遵循“关键名词 + 动作 + 修饰词”的结构——先说图里是什么(人、某种爬行动物),再说它在做什么(拿着),最后补一个限定(在手上)。也有个别句子读起来别扭,很可能是机器生成的——这说明图说在“看懂”之外,还要把语言这一侧说稳。
长期以来,大规模图像描述数据集与评测基准都以英文为主,例如微软的 MSCOCO 数据集就为每张图片提供了 5 句人工标注的描述;中文领域的公开数据集规模与成熟应用相对少得多,这也是一个有待发展的方向。
为何图说是一个艰巨的挑战?
图说任务之所以困难,是因为它本质上是一个 “视觉-语言”多模态理解与生成问题。我们可以将其类比为一种特殊的机器翻译:但不是从一种语言翻译到另一种语言,而是将“视觉语言”(像素、特征)翻译成“自然语言”(文字、句子)。
要完成这种翻译,模型需要具备三种核心能力:
- 图片理解能力:识别图片中的物体、场景、属性、动作等。这依赖于我们课程核心的计算机视觉技术。
- 语言理解与生成能力:掌握语言的语法、句法,并能组织流畅的句子。这属于自然语言处理(NLP)的范畴。
- 多模态复合推理能力:将视觉信息与语言信息对齐、融合,并基于理解进行推理。例如,看到“人”、“狗”、“绳子”和“动作”,需要推理出“人在遛狗”这一事件。
这里的“多模态”沿用的是更早的“多媒体(Multi-Media)”说法:图像、声音、触觉等不同形态的信息同时在描述同一件事。放到图说里,就是图片在“表示”这幅画面,句子在“描述”这幅画面,两者必须彼此对应。
具体来说,挑战体现在两个层面:
1. 多模态理解与推理的鸿沟 图片是对真实世界相对客观、原始的刻画。而自然语言描述则是一种更高级的抽象,它包含了描述者的主观选择和重点强调。例如,面对一张飞艇的图片,描述可以是“一个巨大的飞艇在天空中”,也可以是“一个黑色的飞艇掠过蓝天”。选择哪个特征(大小、颜色)进行描述,本身就体现了抽象和选择的过程。
2. 复合理解与推理的复杂性 即使利用先进的目标检测模型识别出图片中的所有物体,这仅仅是第一步。模型还需要理解物体之间的关系(空间关系、主谓关系)、判断场景、推断正在发生的事件。这是一个多步骤、迭代的推理过程,远比简单地罗列物体标签要复杂得多。
因此,构建图说模型的整体思路可以概括为:完整理解图片内容 -> 进行复合推理 -> 生成语言描述。
传统的分段处理策略
在深度学习一统江湖之前,研究者们如何解决图说问题呢?他们采用的是一种直观的 “分段处理”(Pipeline)策略。这种策略将复杂的任务分解为几个相对独立的子模块,串联起来工作。
传统图说系统流程示意图
[输入图片]
|
v
[视觉内容识别模块]
(例如:目标检测、场景分类)
|
v
[文本标签集合]
(例如:{“猫”, “窗台”, “坐”})
|
v
[语言生成模块]
(基于规则或模板的句子构造)
|
v
[输出描述句子]
(例如:“一只猫坐在窗台上。”)流程详解:
- 图片内容 -> 文本标签:首先,利用传统的计算机视觉方法(如目标检测、属性识别、场景分类模型)对图片进行分析,提取出关键的视觉概念,并为它们打上文本标签。例如,检测到“猫”、“窗台”,并判断出动作是“坐”。
- 文本标签 -> 描述语句:然后,将这些标签输入到一个语言生成模块。这个模块可能基于预定义的语法模板(如“一个[物体1]正在[地点]上[动作]”),或者利用简单的语言模型和常识知识库,来将这些标签组合成一个语法通顺的句子。标签之间的关系(如谁对谁做了什么)很大程度上依赖于常识推理。例如,系统“知道”猫通常坐在某物上,而不是窗台坐在猫上。
传统策略的优势:
- 滤除干扰信息:在第一步识别时,就可以忽略掉与主要场景无关的背景或物体。
- 模块化结构:系统由多个独立模块组成,结构清晰,便于调试和优化。
- 直接利用现有成果:可以分别利用当时最先进的计算机视觉模型和自然语言处理模型,无需从头开始设计端到端系统。
传统策略的不足:
- 误差单向传播:视觉识别模块产生的错误(如误检、漏检、标签错误)会直接、单向地传递给语言生成模块,导致最终句子错误,且无法在整体流程中被纠正。
- 依赖硬编码规则与常识:句子生成严重依赖于预设的模板或规则,以及外部的常识知识库。系统缺乏真正的“语义理解”能力。
- 灵活性差:难以生成多样、生动、贴合复杂场景的描述。例如,对于动画片中“猫和老鼠和平共处”的反常识场景,系统很可能依旧根据常识生成“猫在捉老鼠”的错误描述。
新型的端到端学习策略
与传统方法截然不同,基于深度学习的新型策略采用 “端到端”(End-to-End) 的学习方式。其核心思想是:将图片和文本映射到同一个共享的语义空间中。
在这个共享空间中,一张图片的特征向量和描述它的句子的特征向量应该非常接近。模型的目标就是学习这个从图像特征空间到语言特征空间的“翻译”函数。
新型端到端图说模型概念图
[图片] --(CNN编码器)--> [图片特征向量] --(RNN解码器逐词生成)--> [描述句子]
|
| 训练后:二者在共享语义空间中彼此接近
v
[真实句子的特征]流程详解:
- 映射到共享空间:使用一个卷积神经网络(CNN,如VGG、ResNet)作为编码器(Encoder),把输入图片编码成一个固定维度的特征向量;语言一侧用循环神经网络(RNN,如LSTM)建模。训练之后,图片特征与描述它的句子被拉进同一个语义空间,彼此接近。
- 特征翻译与句子生成:以图片特征向量作为起点,由RNN解码器(Decoder)逐步生成描述单词,每一步都依赖已生成的单词与编码后的图片信息。整个模型(CNN+RNN)的参数通过最大化生成描述的正确概率联合训练。
新型策略的优势:
- 联合优化,端到端训练:视觉和语言模块同时训练,相互协作,共同优化最终描述生成的目标,避免了分段流程中误差的单向传递。
- 强大的表示能力:深度学习模型能够自动学习从像素到语义的复杂映射,以及语言的生成模式,无需手工设计特征和规则。
- 模块化但统一:虽然结构上仍是编码器-解码器模块,但它们是作为一个整体被训练的。
新型策略的不足:
- 可解释性差(黑箱问题):模型学习到的“共享语义空间”是一个高维向量空间,人类难以直观理解其具体含义,决策过程不透明。
- 数据依赖性强:需要大量高质量的图片-描述配对数据才能训练出好的模型。
📝 动手练一练
- 概念辨析:假设一个传统的图说系统第一步视觉识别将图片中的“键盘”误识别为“书本”。请推理这对最终生成的描述句子可能造成怎样的影响?这与新型端到端模型可能出现的错误有何潜在区别?
- 策略思考:考虑一个简单场景:一张图片里有一个“杯子”放在“桌子”上。请分别设计一个基于模板的传统方法可能使用的句子模板,并说明如果采用端到端深度学习模型,需要什么样的数据来学习这种关系?
👉 点击查看参考答案
影响分析:
- 传统方法:错误会直接传播。语言生成模块接收到错误的标签集合
{“书本”, “桌子”},基于模板(如“一个[物体1]在[物体2]上”)会生成“一本书在桌子上。”这是一个完全错误的描述,且错误根源清晰(第一步识别错误)。 - 新型端到端模型:错误可能更隐蔽。模型可能生成一个语法通顺但内容错误的句子,如“桌子上有一本打开的书。”也可能因为上下文矛盾生成不合逻辑的句子。错误的根源是模型整体映射关系学习有偏差,难以定位是视觉理解部分还是语言生成部分出了问题。
- 传统方法:错误会直接传播。语言生成模块接收到错误的标签集合
策略设计:
- 传统模板:可以设计如“一个[物体A]在[物体B]上。”的模板。系统需要识别出“杯子”和“桌子”,并判断空间关系为“在…上”,然后将标签填入模板。
- 深度学习数据需求:端到端模型不需要显式模板。它需要大量类似“一个杯子在桌子上”、“桌面上放着一个咖啡杯”、“桌子上有个杯子”等配对数据。模型从这些数据中自动学习“杯子”、“桌子”的视觉特征,以及“在…上”这种关系的语言表达模式。
本章小结
本节我们正式引入了计算机视觉与自然语言处理交叉的经典任务——图像描述(图说)。我们明确了其目标是让机器“看图说话”,并深刻认识到其核心挑战在于跨越视觉与语言模态的语义鸿沟,进行复合理解与推理。
我们重点剖析了在深度学习成为主流之前,研究者们采用的传统分段处理策略。该方法将任务分解为视觉识别和语言生成两个独立阶段,虽然模块清晰、可利用已有技术,但其固有的误差单向传递、依赖硬编码规则和缺乏深层语义理解等缺陷,限制了其性能上限。
与之相对,新型的端到端策略把图片和文本映射到同一个语义共享空间,用 CNN 编码图像、RNN 解码生成句子并联合训练,避免了分段流程中误差的单向传递,代价则是黑箱和数据依赖。后续几节会把这条思路落到 NIC、SAT 等具体模型上。
需要说明的是,本节所说的“新型”端到端方案,是 2015 年前后以 CNN 编码、RNN 解码为代表的一代做法;2019 年前后起,Transformer 编码器—解码器与大规模图文预训练(如 CLIP、BLIP 系列)逐步成为主流,如今图说更多由多模态大模型直接完成。因此本节的重点是建立“视觉—语言”任务的建模范式,而不是追逐最新的模型结构。
📋 行动清单
- 复述图像描述(图说)任务的定义、输入与输出。
- 阐述图说任务为何被视为一种特殊的“机器翻译”,并说明其面临的三大核心能力挑战。
- 对比说明传统分段处理策略与新型端到端策略的核心流程、优势与不足。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。