恶劣环境下图像算法数据增强方法
2021-09-16刘洪宇
刘洪宇,杨 林,姜 蕾
(中国航天科工集团第二研究院 七〇六所,北京 100854)
0 引 言
在计算机视觉领域,随着优化方法[1,2]的进步和公开数据规模的提升,基于深度学习的目标识别[3,4]、目标检测[5,6]、人脸识别[7,8]等算法效果已取得较大提升。这些算法受潮湿、震动、电磁干扰等外部恶劣环境的影响较小,只要保证输入图像质量,算法即可稳定运行。但风沙、大雾等环境会为捕捉到的图像带来较大噪声,本文实验结果表明,若不进行处理,这些恶劣环境引入的噪声将对模型效果产生较大影响。
传统数据增强方法可解决大部分恶劣环境下出现概率较高的图像问题,例如通过对亮度、对比度和饱和度的调整,模拟逆光、过度曝光、低亮度等情况;通过图像掩码模拟物体遮挡情况等,但传统方法无法模拟大雾、风沙等恶劣环境,为解决这一问题,提出了一种基于图像风格迁移的数据增强方法,主要工作有以下几点:
(1)将图像风格迁移技术用于数据增强,对训练集中的图片进行大雾、风沙环境下的数据增强,增加恶劣环境下的样本数量。
(2)使用PeleeNet[9]作为分类网络骨架,对激活函数、损失函数以及网络训练方法进行优化调整,并使用改进后的网络进行图像分类任务,验证提出的数据增强方对恶劣环境下图像分类模型鲁棒性的提升。
(3)建立了包含22 500图片的数据集,包括完整的图片爬取、图片去重以及人工标注流程处理,用于模型的训练和测试。
1 基于风格迁移的数据增强
由于恶劣环境下数据采集难度大、数据标注成本高等原因,数据集规模较小是一个较为严重的问题。这将导致模型拟合的数据分布严重偏离真实分布,影响模型的泛化能力。为解决这一问题,在进行模型训练时,可用数据增强技术对已有数据进行扩充,在增加训练样本量的同时,模拟模型需要处理的各种场景,提升模型在这些场景下的鲁棒性。传统数据增强技术常采取如下几种方法:像素级别的数据增强、像素块级别的数据增强、多张图片叠加进行数据增强。
像素级别的数据增强技术通过修改原始图像中的某些像素值来增加样本多样性。如对图像亮度、对比度、色调、饱和度的调整,在原始图像上叠加随机噪声,或对图像进行随机缩放、裁剪、翻转、旋转等操作。像素块级别的数据增强技术通过对原始图像中某些区域的像素信息进行修改来达到样本扩充的目的。如Zhun Zhong等[10]提出使用随机擦除方法进行数据增强,该方法从原始图像中随机选取一块矩形区域,对该区域使用随机值或零进行填充,模拟物体被遮挡的场景。网格掩码[11]方法则从原始图像中随机选取多个像素块,将所有选取的像素块进行零填充。此外,一些研究人员通过一次使用多张图片叠加的方式进行数据增强。例如MixUp[12]方法中,将两个随机采样的样本进行叠加来构造新样本。图1中展示了传统数据增强方法的效果,其中图1(a)为原始图片,其余为应用不同数据增强方法得到的图片。
图1 传统数据增强方法效果
为缓解传统方法无法模拟的大雾、风沙等恶劣环境对图像算法产生的影响,可利用图像风格迁移技术进行数据增强。图像风格迁移分为真实图像风格迁移[13]和艺术图像风格迁移[14]两类,真实图像风格迁移算法根据参照图片的风格来改变目标图片风格,同时保证输出图片的真实性。这类算法可用于不同季节的图像风格转换、白天向夜间图像转换等。而艺术图像风格迁移则主要用于将真实图像转换成绘画风格的图像。图2展示了这两类风格迁移算法的效果,通过图2中上下两行图片转换效果的对比可以看出,这两类算法虽然都能起到风格转换的作用,但转换后图像的真实性存在较大差异。
本文中使用真实图像风格迁移算法为训练样本添加恶劣环境下图像的风格,来增加恶劣环境下样本数量。算法分为两个步骤:风格转换和图像平滑,风格转换将目标图片向风格图片进行变换,针对变换后的图像语义相同的部分风格不连贯的问题,使用图像平滑方法消除这种影响,使变换后的图像风格更加接近真实图像。
图2中,图2(a)列为风格图片,图2(b)列为目标图片,图2(c)列为风格迁移后的图片。第一行为真实图像风格迁移效果,第二行为艺术图像风格迁移效果。
图2 图像风格迁移算法效果
1.1 风格转换
本文中图像的风格转换借助卷积神经网络来完成,在进行转换之前,首先训练出一个用于图像重建的自编码器。自编码器中,使用VGG-19[15]作为编码器ε,固定其参数,并训练与之结构对称的解码器D进行输入图像重建。VGG-19 中使用最大池化进行下采样,在解码器中,为了保留特征图的空间信息,利用编码器中的池化掩码进行反池化操作,达到上采样的目的。自编码器结构如图3所示。
图3 自编码器结构
转换过程可以分为3个步骤:
(1)使用编码器对风格图片IS和内容图片IC进行特征提取,得到两张图片对应的特征向量HS=ε(IS)、HC=ε(IC)。
(2)使用如下公式对HC进行转换,得到转换后的特征向量HCS
HCS=PSPCHC
(1)
(3)使用解码器对转换后的特征向量HCS进行解码,得到风格转换后的图片Y=D(HCS)。
1.2 图像平滑
解码器输出的图像存在过于风格化且风格不连贯的问题,需要使用图像平滑方法消除这种影响,使其更加接近真实图像。图像平滑的优化目的有两点:①使图像中相邻区域内容相似的像素具有相似的风格;②使平滑处理前后图像差异较小,保留风格变换后图像的整体风格。
对于输出图像Y,像素之间的相似矩阵可表示为W={wij}∈RN×N,其中N为图像Y中的像素数量。根据上述优化方向,将目标函数定义为
(2)
2 恶劣环境下的图像分类模型
本文通过图像分类任务来验证风格迁移方法对恶劣环境下模型效果的提升。由于恶劣环境下工作的模型通常部署在嵌入式设备中,因此本文选用PeleeNet这一轻量级网络作为基本骨架,并根据近年来网络训练及加速方面的研究成果对其进行相应改进。
2.1 激活函数
Relu激活函数由于形式简单、不易产生梯度消失与梯度爆炸的问题,在神经网络中被普遍使用,原始的PeleeNet网络结构也将其作为网络的激活函数。
神经网络训练时,出于速度和精度上的综合考量,Pytorch、Tensorflow等深度学习框架默认使用单精度浮点运算在GPU上进行模型训练。模型训练结束后,为了获得更快的推理速度、更小的模型尺寸,通常会使用更低的精度将其部署到移动端设备上,如8 bit或16 bit。对于Relu激活函数来说,没有对网络激活值进行限制,激活值的输出范围是[0,+∞),这将导致模型以低精度方式运行时,较大的激活值可能产生精度损失。因此,本文中将激活函数替换成Relu6[16],降低量化过程带来的模型精度损失,Relu6激活函数的数学定义如下
y=min(max(0,x),6)
(3)
式中:x和y分别为激活函数的输入、输出值。
2.2 改进的分类损失
原始PeleeNet中,在进行网络训练时,使用交叉熵作为网络的损失函数
(4)
式中:p为one-hot编码的样本真实标签,q为Softmax输出的类别置信度。Softmax公式如下
(5)
式中:C为类别数,f=[f1,f2,…,fC]为神经网络输出的特征向量。
本文中,对分类损失函数进行了改进,保留交叉熵损失函数,同时在损失函数中对所有BatchNorm[17]层的缩放参数进行了L1正则化。L1正则化会使得缩放参数在训练过程中呈现稀疏化的趋势,这一技术由Zhuang Liu等[18]提出,并被应用于卷积神经网络通道剪枝中。在进行剪枝通道选取时,对缩放参数进行全局排序,将排序后的缩放参数作为通道保留的概率,文中将这一技术称为“稀疏性训练”。在实验中发现,这一技术不仅能起到剪枝通道选取的作用,其作为一种正则化手段,同样能提高网络性能,因此,本文中将其作为损失函数的一部分。加入上述正则化技术后,损失函数计算公式如下
(6)
式中:Lce为交叉熵损失,Γ为网络中所有BatchNorm层缩放参数γ组成的集合,为了平衡两项损失的权重,在L1正则化损失前加入平衡因子λ,λ取值通常为1e-4或1e-5。
2.3 标签平滑
另一方面,设y为图像的真实标签,则使用独热编码后的标签可表示为
(7)
当使用交叉熵定义分类损失并对其进行优化时,最优解会出现在fy趋于无穷大而其它值尽可能小的情况下,这一优化方向容易导致模型过拟合。为解决这一问题,本文中使用标签平滑技术对模型训练时使用的独热编码进行处理。标签平滑的思想在Inception-v2[19]训练时被提出,此后研究人员对这一技术从理论[20]和实践[21]层面进行了详尽分析,目前大量实验表明使用标签平滑可以提升模型性能。标签平滑技术对样本的真实标签进行如下编码
(8)
式中:ε是一个较小的常量,通常取0.1。
3 实验分析
3.1 实验数据集
本文所用数据集为包含22 500张图片的自然图像数据集,共9个类别,每个类别2500张图片。数据集中小部分样本来源于ImageNet图像分类数据集,ImageNet数据集中每个类别包含1000张图片,图片已完成标注,本文从中选出所需的9个类别,并对数据进行人工筛选。另一部分图片使用类别关键字在搜索引擎中检索,并爬取检索结果。为了保证图像质量,每次只爬取检索到的前500张图片,此外,使用多种语言的关键词在搜索引擎中检索。
从搜索引擎爬取的图片存在部分重复,本文借助卷积神经网络对所有爬取到的图片进行去重。具体分为两个步骤:①使用在ImageNet上预训练的MobileNet模型对数据集中的每张图片进行特征提取;②对提取到的特征采用1:N的方式逐一比较,删除相似度较高的图片。
在对图片进行人工标注时,由于在数据爬取时图片按照关键词进行检索,因此标注时只需要按照类别进行“是”或“不是”的判断任务即可。
3.2 图像风格迁移实验
图像风格迁移实验使用FastPhotoStyle算法的开源实现进行,软件环境为:Ubuntu 16.04、CUDA 9.1、Anaconda3、PyTorch0.4.0。硬件环境使用NVIDIA RTX 2080Ti GPU进行推理加速。
在PyTorch深度学习框架中,对神经网络训练数据进行数据增强时,由于数据变换速度较快,只需预定义好数据增强策略,对数据进行变换在加载数据时与网络训练同时进行即可。但图像风格迁移耗时较多,无法做到实时处理,因此本文采用离线数据增强的方式对数据集中样本进行处理。实验中使用了沙尘、大雾、雨天、雪天4种风格的图片对数据集中样本进行风格迁移。
内容图片在向沙尘、大雾风格进行迁移时可以输出较好的结果,而向雨、雪风格迁移后的图片质量较差。由于在向沙尘、大雾风格进行迁移时,内容图像主要进行了色调上的修改,而向雨、雪风格进行迁移不仅需要色调变换,还需要向内容图片中添加雨、雪元素,导致图像过于风格化。
3.3 图像分类网络改进实验
3.3.1 实验配置
本文在进行网络训练时,使用的硬件环境为:NVIDIA RTX 2080Ti GPU,Intel®CoreTMi7-8700 CPU@3.20 GHz,RAM 32.0 GB。所有算法都是在Windows 10操作系统下编程实现,代码使用PyTorch1.4深度学习框架进行编写,并使用CUDA 10.1进行加速。本文中所有实验均是在单卡上运行。
模型训练时,批大小设置为128。实验中使用Adam[22]优化方法进行模型参数更新,学习率初始值设置为3e-3。每次实验设置的迭代次数均为160轮次(epoch),实验中采用学习率按步长衰减的策略,每40轮迭代,将学习率调整为原来的1/10。
此外,由于数据量的限制,本文并未从头开始训练随机初始化的模型,而是根据已发布的ImageNet预训练模型进行微调训练。模型微调训练流程如图4所示。
在图4中,模型由特征提取器F和分类器CLS两部分组成。模型微调训练分为3个阶段:模型初始化阶段、第一微调阶段、第二微调阶段。在模型初始化阶段,除网络最后的全连接层外,其余层参数均使用预训练模型参数进行初始化,全连接层使用Kaiming_normal[23]方法进行初始化。在模型初始化的同时,从预训练模型中加载的参数被冻结,不参与第一阶段的微调训练。在第一微调阶段,对全连接层的参数进行更新,当训练结束后,将网络中所有参数设置为可更新状态。最后,在第二微调阶段对模型所有参数进行更新,得到收敛后的模型。
图4 微调训练流程
3.3.2 消融实验
本节实验中研究了多种不同特征对分类网络性能的影响,具体包括:Relu6激活函数,加入正则化项的损失函数,标签平滑。实验中所用数据集为包含22 500张图片的数据集,其中每个类别2500张图片,共9个类别,每个类别中150张图片被划分到测试集,剩余图片用于网络训练。实验结果见表1,实验中基线模型使用Relu作为激活函数,使用交叉熵损失函数进行训练,未使用标签平滑技术。引入这3种特征后,可以得到分类效果最好的模型。
表1 不同特征对分类网络准确率的影响
3.4 风格迁移用于图像分类任务
风格迁移作为一种数据增强方法,为了验证其在恶劣环境下对图像算法鲁棒性的影响,本节使用风格迁移后的图像扩充训练集,并重新进行网络训练。实验中从每个类别随机选取500张图片进行风格迁移,对转换后的图片进行一轮人工筛选,共保留350张与自然图像较为接近的样本。
3.3.2节中实验使用的测试集test1每个类别包含150张图片,共1350张,其中只包含少量恶劣环境样本。除此测试集外,本节实验单独准备了只包含恶劣环境样本的测试集test2,这些样本均为恶劣环境下采集的自然图像,未经过任何处理。由于恶劣环境下的样本采集难度较大,test2中只包含49张测试图片。
表2中展示了使用风格迁移进行数据增强前后模型的分类效果。未使用风格迁移的训练集样本量为21 150张图片,使用了风格迁移后,在训练集中增加了数据增强样本350张。在test1数据集上,数据增强前后模型的准确率相同,但是在test2数据集上,数据增强技术使得模型分类准确率提升了8.2%,说明风格迁移作为一种数据增强技术,可以显著提升图像算法在恶劣环境下的鲁棒性。
表2 风格迁移对模型鲁棒性的影响
上述实验结果中,虽然风格迁移使模型在恶劣环境数据下的表现有了较大提升,但是与正常环境下的分类效果相比,准确率仍存在较大差距。为避免生成样本对模型识别正常图像的效果产生影响,本实验中对于风格迁移算法生成的图像,只将人工挑选出的与自然图像差异较小的样本用于训练,相比于训练集中所有样本的数据规模,生成样本的占比较小。增加恶劣环境的样本数量后,模型在恶劣环境下的效果仍有较大提升空间。
4 结束语
本文使用图像风格迁移进行数据增强,增加了难以采集的大雾、风沙条件下的样本量,提升了模型在恶劣环境下的表现。在进行分类任务时,使用PeleeNet作为网络骨架,并对网络中用到的激活函数和损失函数进行了调整,采用了标签平滑的训练策略,提升了模型的分类效果。但是本文所用方法仍然存在风格迁移成功率较低、图像分类模型受恶劣环境影响较大等问题,这些问题有待于在未来的研究中进一步解决。