序言
- 在科技的浩瀚星空中,深度学习犹如一颗璀璨的明星,正引领着人工智能领域的革新与发展。其中,计算机视觉作为深度学习应用的璀璨篇章,正以前所未有的速度改变着我们的世界。
- 计算机视觉,简而言之,是让机器像人类一样“看”懂世界的技术,它赋予计算机解读图像和视频内容的能力,从简单的物体识别到复杂的场景理解,无所不包。
- 随着深度学习算法的日益成熟与大数据的蓬勃兴起,计算机视觉技术正逐步突破传统方法的局限,开启了一个智能感知与理解的新纪元。
计算机视觉
- 一直以来计算机视觉就是深度学习应用中几个最活跃的研究方向之一。
- 因为视觉是一个对人类以及许多动物毫不费力,但对计算机却充满挑战的任务 ( Ballard et al., 1983 \text{Ballard et al., 1983} Ballard et al., 1983)。
- 深度学习中许多流行的标准基准任务包含了对象识别以及光学字符识别。
- 计算机视觉是一个广阔的发展领域,其中包含了多种多样的处理图片的方式以及应用方向。
- 计算机视觉的应用既包含复现人类视觉能力,比如识别人脸,也囊括了可视化一个新类别物体这样的任务。
- 举个后者的例子,近期一个新的计算机视觉应用是从视频中可视物体振动中识别相应的声波 ( Davis et al., 2014 \text{Davis et al., 2014} Davis et al., 2014)。
- 大多数计算机视觉领域的深度学习研究未曾关注过这样一个奇异的应用,它扩展了图像的范围,而不是仅仅关注于人工智能中较小的核心目标,即复制人类的能力。
- 无论是报告图像中存在哪个物体,还是给图像中每个对象周围添加注释性的边框,从图像中转录符号序列,或给图像中的每个像素标记它所属对象的标识,大多数计算机视觉中的深度学习往往用于对象识别或者某种形式的检测。
- 因为生成模型已经是深度学习研究的指导原则,还有大量使用深度模型的图像合成工作。
- 尽管图像合成通常不包括在计算机视觉内,但是能够进行图像合成的模型通常用于图像恢复,修复图像中的缺陷或从图像中移除对象这样的计算机视觉任务。
预处理
- 许多应用领域需要复杂精细的预处理,因为原始输入以许多深度学习架构难以表示的形式出现。
- 计算机视觉通常只需要相对少的这种预处理。
- 图像应该被标准化,从而使得它们的像素都在相同并且合理的范围内,比如 [ 0 , 1 ] [0,1] [0,1] 或者 [ − 1 , 1 ] [−1,1] [−1,1]。
- 将 [ 0 , 1 ] [0,1] [0,1]中的图像与 [ 0 , 255 ] [0,255] [0,255] 中的图像混合通常会导致失败。
- 将图像格式化为具有相同的比例严格上说是唯一一种必要的预处理。
- 许多计算机视觉架构需要标准尺寸的图像,因此必须裁剪或缩放图像以适应该尺寸。
- 然而,严格地说即使是这种重新调整比例的操作并不总是必要的。
- 一些卷积模型接受可变大小的输入并动态地调整它们的池区域大小以保持输出大小恒定 ( Waibel et al., 1989 \text{Waibel et al., 1989} Waibel et al., 1989)。
- 其他卷积模型具有可变大小的输出,其尺寸随输入自动缩放,例如对图像中的每个像素进行去噪或标注的模型 ( Hadsell et al., 2007 \text{Hadsell et al., 2007} Hadsell et al., 2007)。
- 数据集增强可以被看作是预处理训练集的方式。
- 数据集增强是减少大多数计算机视觉模型泛化误差的一种极好方法。
- 在测试时间可用的一个相关想法是生成模型相同输入的许多不同版本(例如,在稍微不同的位置处裁剪的相同图像),并且在模型的不同实例上决定模型的输出。
- 后一个想法可以被理解为集成方法,并且有助于减少泛化误差。
- 其他种类的预处理被应用于训练集和测试集,目的是将每个样本置于更规范的形式,以便减少模型需要考虑的变化量。
- 减少数据中的变化量可以减少泛化误差并减小拟合训练集所需模型的大小。
- 更简单的任务可以通过更小的模型来解决,而更简单的解决方案泛化能力一般更好。
- 这种类型的预处理通常被设计为去除输入数据中的某种可变性,这对于人工设计者来说是容易描述的,并且人工设计者能够保证不受到任务影响。
- 当使用大型数据集和大型模型训练时,这种预处理通常是不必要的,并且最好只是让模型学习哪些变异性应该保留。
- 例如,用于分类 ImageNet \text{ImageNet} ImageNet 的 AlexNet \text{AlexNet} AlexNet系统仅具有一个预处理步骤:对每个像素减去训练样本的平均值 ( Krizhevsky et al., 2012b \text{Krizhevsky et al., 2012b} Krizhevsky et al., 2012b)。
对比度归一化
- 可以为许多任务安全移除的最明显的变化源之一是图像中的对比度量。
- 对比度仅指图像中亮像素和暗像素之间差异的大小。
- 量化图像对比度有许多方式。在深度学习中,对比度通常指的是图像或图像区域中像素的标准差。
- 假设我们有一个张量表示的图像
X
∈
R
r
×
c
×
3
\textsf{X}\in\mathbb{R}^{r\times c\times 3}
X∈Rr×c×3,其中
X
i
,
j
,
1
\textit{X}_{i,j,1}
Xi,j,1 表示第
i
i
i 行第
j
j
j 列红色的强度,
X
i
,
j
,
2
X_{i,j,2}
Xi,j,2对应的是绿色的强度,
X
i
,
j
,
3
X_{i,j,3}
Xi,j,3 对应的是蓝色的强度。然后整个图像的对比度可以表示如下:
1 3 r c ∑ i = 1 r ∑ j = 1 c ∑ k = 1 3 ( X i , j , k − X ˉ ) 2 \sqrt{\displaystyle\frac{1}{3rc}\sum\limits_{i=1}^r\sum\limits_{j=1}^c\sum\limits_{k=1}^3(X_{i,j,k}-\bar{\textsf{X}})^2} 3rc1i=1∑rj=1∑ck=1∑3(Xi,j,k−Xˉ)2 — 公式1 \quad\textbf{---\footnotesize{公式1}} —公式1
其中 X ˉ \bar{\textsf{X}} Xˉ是图片的平均强度,满足:
X ˉ = 1 3 r c ∑ i = 1 r ∑ j = 1 c ∑ k = 1 3 X i , j , k \bar{\textsf{X}}=\displaystyle\frac{1}{3rc}\sum\limits_{i=1}^r\sum\limits_{j=1}^c\sum\limits_{k=1}^3 X_{i,j,k} Xˉ=3rc1i=1∑rj=1∑ck=1∑3Xi,j,k — 公式2 \quad\textbf{---\footnotesize{公式2}} —公式2
- 全局对比度归一化 (
Global contrast normalization, GCN
\text{Global contrast normalization, GCN}
Global contrast normalization, GCN) 旨在通过从每个图像中减去其平均值,然后重新缩放其使得其像素上的标准差等于某个常数
s
s
s 来防止图像具有变化的对比度。
- 这种方法非常复杂,没有缩放因子可以改变零对比度图像(所有像素都具有相等强度的图像)的对比度。
- 具有非常低但非零对比度的图像通常几乎没有信息内容。
- 在这种情况下除以真实标准差通常仅能放大传感器噪声或压缩伪像。
- 这种现象启发我们引入小的正的正则化参数 λ \lambda λ 来平衡估计的标准差。
- 或者,我们至少可以约束分母使其大于等于 ϵ \epsilon ϵ。
- 给定一个输入图像
X
\textsf{X}
X, 全局对比度归一化产生输出图像
X
′
\textsf{X}^\prime
X′,定义为:
X i , j , k ′ = s X i , j , k − X ˉ max { ϵ , 1 3 r c ∑ i = 1 r ∑ j = 1 c ∑ k = 1 3 ( X i , j , k − X ˉ ) 2 } \textsf{X}_{i,j,k}^\prime=s\displaystyle\frac{X_{i,j,k}-\bar{\textsf{X}}}{\max \{\epsilon ,\sqrt{\displaystyle\frac{1}{3rc}\sum\limits_{i=1}^r\sum\limits_{j=1}^c\sum\limits_{k=1}^3(X_{i,j,k}-\bar{\textsf{X}})^2} \} } Xi,j,k′=smax{ϵ,3rc1i=1∑rj=1∑ck=1∑3(Xi,j,k−Xˉ)2}Xi,j,k−Xˉ — 公式3 \quad\textbf{---\footnotesize{公式3}} —公式3 - 从大图像中剪切有趣对象所组成的数据集不可能包含任何具有几乎恒定强度的图像。
- 在这些情况下,通过设置 λ = 0 \lambda=0 λ=0 来忽略小分母问题是安全的,并且在非常罕见的情况下为了避免除以 0 0 0,通过将 ϵ \epsilon ϵ 设置为一个非常小的值比如说 1 0 − 8 10^{-8} 10−8。
- 这也是 Goodfellow et al. (2013c) \text{Goodfellow et al. (2013c)} Goodfellow et al. (2013c) 在 CIFAR-10 \text{CIFAR-10} CIFAR-10 数据集上所使用的方法。
- 随机剪裁的小图像更可能具有几乎恒定的强度,使得激进的正则化更有用。
- 在处理从 CIFAR-10 \text{CIFAR-10} CIFAR-10 数据中随机选择的补丁时, Coates et al. (2011) \text{Coates et al. (2011)} Coates et al. (2011) 使用 ϵ = 0 , λ = 10 \epsilon=0,\lambda=10 ϵ=0,λ=10。
- 尺度参数 s s s 通常可以设置为 1 1 1,如 Coates et al. (2011) \text{Coates et al. (2011)} Coates et al. (2011),或选择使所有样本上每个像素的标准差接近 1 1 1,如 Goodfellow et al. (2013c) \text{Goodfellow et al. (2013c)} Goodfellow et al. (2013c)。
公式3
中的标准差仅仅是对图片 L 2 L^2 L2 范数的重新缩放(假设图像的平均值已经被移除)。- 我们更偏向于根据标准差而不是 L 2 L^2 L2 范数来定义 GCN \text{GCN} GCN,因为标准差包括除以像素数量,因此基于标准差的 GCN \text{GCN} GCN允许使用与图像大小无关的固定的 s s s。
- 然而,观察到 L 2 L^2 L2 范数与标准差成比例,这符合我们的直觉。
- 我们可以把 GCN \text{GCN} GCN理解成到球壳的一种映射。
图例1
给了一个说明。- 这可能是一个有用的属性,因为神经网络往往更好地响应空间方向,而不是精确的位置。
- 响应相同方向上的多个距离需要具有共线权重向量但具有不同偏置的隐藏单元。
- 这样的情况对于学习算法来说可能是困难的。
- 此外,许多浅层的图模型往往会把多个分离的峰值表示在一条线上。
- GCN \text{GCN} GCN采用一个样本一个方向1而不是不同的方向和距离来避免这些问题。
- 与直觉相反的是,存在被称为sphering (
sphering
\text{sphering}
sphering) 的预处理操作,并且它不同
于 GCN \text{GCN} GCN。- sphering \text{sphering} sphering并不会使数据位于球形壳上,而是将主要分量重新缩放以具有相等方差,使得 PCA \text{PCA} PCA使用的多变量正态分布具有球形等高线。
- sphering \text{sphering} sphering通常被称为白化 ( whitening \text{whitening} whitening)。
- 全局对比度归一化常常不能突出我们想要突出的图像特征,例如边缘和角。
- 如果我们有一个场景,包含了一个大的黑暗区域和一个大的明亮的区域(例如一个城市广场有一半的区域处于建筑物的阴影之中),则全局对比度归一化将确保暗区域的亮度与亮区域的亮度之间存在大的差异。
- 然而,它不能确保暗区内的边缘突出。
- 这催生了局部对比度归一化 (
local contrast normalization, LCN
\text{local contrast normalization, LCN}
local contrast normalization, LCN) 。
- 局部对比度归一化确保对比度在每个小窗口上被归一化,而不是作为整体在图像上被归一化。
- 关于局部对比度归一化和全局对比度归一化的比较可以参考
图例2
。
- 与全局对比度归一化一样,我们通常需要正则化局部对比度归一化来避免出现除以零的情况。
- 事实上,因为局部对比度归一化通常作用于较小的窗口,所以正则化更加重要。
- 较小的窗口更可能包含彼此几乎相同的值,因此更可能具有零标准差。
数据集增强
- 如
深度学习中的正则化技术 - 数据集增强篇
中讲到的一样,很容易通过增加训练集的额外副本来增加训练集的大小来改进分类器的泛化能力,其中通过一些变化来修改从而生成训练集的额外副本,但是并不改变其类别。 - 对象识别是特别适合于这种形式的数据集增强的分类任务,因为对于许多变换类别信息是不变的,可以简单地对输入使用许多几何变换。如前所述,分类器可以受益于随机转换或者旋转,某些情况下输入的翻转可以增强数据集。
- 在专门的计算机视觉应用中,更高级的用以数据集增强的变换也是常见的。这些方案包括图像中颜色的随机扰动 ( Krizhevsky et al., 2012b \text{Krizhevsky et al., 2012b} Krizhevsky et al., 2012b),以及对输入的非线性几何变形 ( LeCun et al., 2001 \text{LeCun et al., 2001} LeCun et al., 2001)。
-
图例1: GCN \text{GCN} GCN将样本投影到一个球上。
-
GCN \text{GCN} GCN将样本投影到一个球上。
-
说明:
- 左图:原始的输入数据可能拥有任意的范数。
- 中图:
- λ = 0 \lambda=0 λ=0时候的 GCN \text{GCN} GCN可以完美地将所有的非零样本投影到球上。
- 这里我们令 s = 1 s = 1 s=1, ϵ = 1 0 − 8 \epsilon=10^{-8} ϵ=10−8。
- 由于我们使用的 GCN \text{GCN} GCN是基于归一化标准差而不是 L 2 L^2 L2 范数,所得到的球并不是单位球。
- 右图:
- λ > 0 \lambda>0 λ>0 的正则化 GCN \text{GCN} GCN将样本投影到球上,但是并没有完全地丢弃其范数中变化。
- s s s 和 ϵ \epsilon ϵ 的取值和之前一样。
-
-
-
全局对比度归一化和局部对比度归一化的比较。
-
说明:
- 直观上说,全局对比度归一化的效果很巧妙。
- 它使得所有的图片的尺度都差不多,这减轻了学习算法处理多个尺度的负担。
- 局部对比度归一化更多地改变了图像,丢弃了所有相同强度的区域。
- 这使得模型能够只关注于边缘。
- 较好的纹理区域,如第二行的屋子,可能会由于归一化核的过高带宽而丢失一些细节。
-
总结
- 回顾深度学习在计算机视觉领域的广泛应用,我们见证了无数令人惊叹的突破。
- 从自动驾驶中的障碍物检测与路径规划,到医疗影像分析中的疾病诊断;从安防监控中的异常行为识别,到零售行业的智能货架管理;乃至艺术创作中的风格迁移与自动绘图,计算机视觉技术以其独特的魅力,渗透到了社会生活的方方面面。它不仅极大地提高了工作效率,降低了人力成本,更在探索未知、保障安全、提升生活质量等方面展现出了巨大潜力。
- 展望未来,随着技术的不断进步与融合,计算机视觉必将开启更加广阔的应用前景,为人类社会的智能化转型贡献更多力量。