在学会使用简单形状和图案创建基础合成图像后,我们来了解另一种直接的图像数据生成方法:施加噪声和简单变换,通常称之为数据增强。数据增强虽然常用于修改现有真实图像,但相同技术也可应用于我们刚刚提到的基础合成图像,甚至可结合使用,以便为训练机器学习模型准备更多元的数据集。可以将数据增强看作是对图像进行微调,以生成一个新的、但相关联的版本。为什么要这样做?机器学习模型,尤其是在计算机视觉方面,需要查看同一物体或场景的多种变化,才能有效学习并在不同条件下识别它们。如果数据集只包含完美居中、光线充足的图像,那么模型在遇到轻微旋转、放大或有轻微缺陷的图像时,可能表现不佳。数据增强有助于解决这个问题。添加噪声"图像常因相机传感器限制、光照条件差或传输错误而包含噪声。有目的地向合成图像或真实图像中添加噪声,可以使你的模型更能适应这些不完美之处。"常见的噪声类型是高斯噪声,它向每个像素的强度添加从钟形(正态)分布中提取的小随机值。可以想象成在图像上随机添加亮度不同的小斑点。另一种类型是椒盐噪声,它随机地将一些像素替换为纯白(盐)或纯黑(椒)像素。添加噪声模拟了不完美的情况,并帮助模型学习关注重要特征,而不是被轻微的像素差异分散注意力。噪声的数量和类型通常可以调整,让你能模拟不同程度的缺陷。简单几何变换这些涉及改变图像内容的位置、方向或比例。旋转:这涉及将图像绕其中心旋转一个特定角度。例如,将猫的图像旋转5或10度,就会创建一个新的训练样本,猫略微倾斜。这有助于模型识别猫,即使它们在照片中不是完全直立的。缩放(放大/缩小):这改变图像内容的大小,使其看起来更近或更远。你可能会将图像缩小到原始大小的90%或放大到110%。这训练模型识别物体,无论它们在画面中的视大小如何。平移(移动):这涉及水平或垂直移动图像内容。将物体稍微偏离中心,有助于模型了解到物体不一定总是在图像的正中间。翻转:图像可以水平(像照镜子一样)或垂直翻转。水平翻转是一种非常常见的数据增强方式,尤其适用于左右方向不改变物体身份的情况(如汽车或动物)。垂直翻转使用较少,因为物体自然倒置的情况不常见(例如,一辆倒置的汽车通常表示与正向汽车不同的含义)。颜色和亮度调整对亮度、对比度或饱和度的轻微调整也可以模拟不同的光照条件。使图像略微亮一些或暗一些,或增加其对比度,会产生模型在实际情境中可能遇到的各种变体。数据增强作为一种生成技术应用这些变换会创建新数据点。如果你从一个基础合成图像(例如程序生成的正方形)开始,并应用五种不同的数据增强(例如,添加噪声、旋转5度、旋转-5度、缩放1.1倍、水平翻转),你的数据集中现在就有六张图像,而不是一张。这是一种简单而有效的扩展数据集的方式,尤其是在结合生成基础形状或图案时。digraph G { rankdir=LR; node [shape=box, style=filled, fillcolor="#e9ecef", fontname="sans-serif"]; edge [fontname="sans-serif"]; Original [label="原始图像\n(真实或合成)", fillcolor="#a5d8ff"]; Augment [label="施加数据增强", shape=ellipse, fillcolor="#ffec99"]; subgraph cluster_augmentations { label = "数据增强示例"; style=filled; color="#dee2e6"; node [shape=box, style=filled, fillcolor="#ffc9c9"]; Noise [label="添加噪声"]; Rotate [label="旋转"]; Scale [label="缩放"]; Flip [label="翻转"]; } Augmented [label="新的增强图像", shape=box, fillcolor="#b2f2bb"]; Original -> Augment; Augment -> Noise [label="例如"]; Augment -> Rotate [label="例如"]; Augment -> Scale [label="例如"]; Augment -> Flip [label="例如"]; Noise -> Augmented; Rotate -> Augmented; Scale -> Augmented; Flip -> Augmented; }对原始图像施加各种变换,如添加噪声、旋转、缩放或翻转,可以生成多个新的、增强的图像用于训练。数据增强的注意事项尽管数据增强功能强大,但也应谨慎使用:保持真实性:所施加的变换通常应生成在现实中合理存在的图像。例如,将行人检测图像旋转180度可能没有实际作用,除非你确实会遇到倒立的行人。保持标签不变:数据增强不应改变图像中物体最基础的身份或标签。略微旋转的猫仍然是猫。添加过多噪声或过度缩放可能会完全遮蔽物体。任务相关性:最适合的数据增强取决于具体的任务以及真实数据中可能出现的变化类型。软件库(我们将在第6章中涉及)提供了便捷的功能,可轻松应用这些数据增强。通过将简单形状和图案的生成与噪声及基础数据增强结合起来,你就可以开始为计算机视觉项目构建更多样化的数据集,而无需初始拥有大量数据。