[0033] 下面结合附图对本发明进行进一步说明。
[0034] 如图1‑4和表1‑8所示,展示一个基于多阶段注意力机制的设计流程,本发明方法的具体步骤为:
[0035] 步骤1.基于两大开源数据集,建立用于训练和测试四分类低俗图像数据集,同时对数据集中各个类别的样本进行计算。
[0036] 所述的两大开源数据集为NSFW数据集和NPDI数据集。
[0037] 步骤2.进行数据预处理:数据归一化以及数据增广。
[0038] 步骤3.构建多阶段注意力机制的神经网络架构,包括对基础的注意力机制单元和深度神经网络的拓扑结构的设计。
[0039] 步骤4.基于自建的四分类低俗图像数据集,对多阶段注意力机制的神经网络架构进行训练,获得注意力机制模型。
[0040] 步骤5.将训练过后的注意力机制模型用数据的测试集进行测试,以验证模型的准确率等指标。
[0041] 步骤6.将最优的注意力机制模型用于数据的可视化,以热力图的形式展现出图像的高权重重点区域。
[0042] 进一步,步骤1所述的基于两大开源数据集——NSFW数据集和 NPDI数据集,建立用于训练和测试四分类低俗图像数据集,同时对数据集中各个类别的样本进行分析计算。如表3所示,四分类低俗图像数据集共包含四个类别:正常(训练集26782张,测试集4118张)、轻微敏感(训练集1301张,测试集199张)、高度敏感(训练集13368 张,测试集1799张)、色情(训练集29480张,测试集3213张),每个类别中对性别、种族、身型、外貌特征都较为均匀地分布。
[0043] 步骤2.进行数据预处理:数据归一化以及数据增广。
[0044] 步骤3.构建多阶段注意力机制的网络架构,该网络架构包括多个注意力阶段;每个注意力阶段包含基础的注意力机制单元和深度神经网络的拓扑结构,其中每个注意力阶段的拓扑结构包含两个部分:通道域和空间域。
[0045] 注意力阶段中通道域与空间域的具体组成部分详情见表1,为了更好地说明注意力阶段的结构特点。在通道域中,输入图像经过连续的两个基础的注意力机制单元处理后得到特征图F(x)。在空间域中,输入图像先通过多个池化层进行下采样,再通过上采样将图像恢复原来的尺寸,从而在采样后的图像中提取出关键信息得到特征图M(x),此处通过Sigmoid函数正则化。在发明中,为了防止出现梯度消失问题在通道域和空间域中增加了一条捷径,最终在注意力阶段输出的特征图为:
[0046] F(x)+F(x)×M(x) (1)
[0047] 进一步的,每个注意力阶段输出的特征图作为下一个注意力阶段的输入图像。如图2所示,注意力阶段1输出的特征图作为下一个注意力阶段2的输入图像。
[0048] 所述的表1是对注意力阶段进行分析,对每个注意力阶段划分为两个部分:通道域和空间域。表1的文字表示为注意力阶段中通道域和空间域的具体组成部分。
[0049] 如图4和表2所示,图4展示的是注意力模块的结构,注意力模块通过最大池化层与平均池化层,来实现特征提取和通道选择的功能。表2展示的是注意力模块中的详细参数,通过注意力模块能够有效地加强模型对于筛选最具分辨性特征的能力。
[0050] 基础的注意力机制单元具体结构和实现如下:
[0051] 池化层是卷积神经网络架构中常用的基础构成模块,从本质上来说就是通过某种策略对图像特征图进行下采样的操作,其在减小参数规模,控制过拟合问题的发生,提高模型的运算性能以及减小运算开销等方面都有巨大贡献。最大池化是在其运算范围内取出最具有判别度的特征值,这种策略能够为分类决策过程提供一种非线性的操作,从而在下采样的过程中过滤掉更多的背景信息,保留关键的特征;而平均池化更倾向于保留相对完整的全局信息,能够在下采样的过程中传递更多的信息,能在全局范围内达到正则化的效果以避免过拟合的出现。
[0052] 通过对比最大池化和平均池化后选择了平均池化,池化层用于缓解卷积层对于位置的过度敏感,池化层与卷积层一样,对于输入有一个固定的窗口,计算窗口内的最大值或者平均值,这就是最大池化层和平均池化层。倾向于保留相对完整的全局信息,能够在下采样的过程中传递更多的信息,能在全局范围内达到正则化的效果以避免过拟合的出现。
[0053]
[0054] PoolingAvg=maxi,j(Xi,j)
[0055] 根据深度神经网络的理论知识了解到提取中会出现偏差的两大原因是相邻区域大小的局限性导致的估计值方差偏大和卷积层参数存在误差而从导致估计平均值出现偏差。对于第一种原因导致的误差,我们可以通过平均池化来改善。平均池化通过在运算过程中保留更多的特征信息使得估计值的方差更加稳定;对于第二种原因导致的误差,最大池化能够有效地避免这种偏移量,从而保留更多的高维特征。
[0056] 步骤4.基于自建的四分类低俗图像数据集,对多阶段注意力机制的神经网络架构进行训练。为了将不同网络层中的特征图利用不同的注意力机制来处理,多阶段注意力机制显然在性能上更占优势。使用多个注意力阶段能很好地解决甚至避免只能加权出低纬度、非重点的特征区域的问题,通过注意力阶段的增加,加权的特征逐渐细化,向高维度特征发展。
[0057] 如图3所示,随着注意力阶段数量的增增加,模型倾向于对注意力的选择更加细化,从开始的边缘整体信息,逐渐细化到最关键的器官上。然而值得注意的是,随着注意力阶段数量的增加,所需要的运算力也会逐渐增加,最终考虑到目前拥有的运算力和模型的最终准确率的情况,本文选择使用三个注意力阶段来构建模型。
[0058] 如图4和表2所示,在本发明中,我们提出注意力机制单元作为模型的基本单元来处理特征图中区域的关联信息。注意力机制单元通过最大池化层与平均池化层实现特征提取和通道选择的功能。对于一个尺寸为H×W×C的特征图χ,先将特征图同时进行平均池化1×1×C 1×1×C
和最大池化以缩小特征图尺寸,分别得到特征图ZAvg∈R 与ZMax∈ R 。同时为了加强局部特征与全局特征的联系,本发明提出了一种连接性模式。首先直接将特征图ZAvg与ZMax直接叠加,从而将对同一张特征图的两种类型的特征进行叠加。随后再通过一个卷积层(卷积核尺寸为2)使得叠加后的特征图以速率r缩小其通道数量至C/r。为了再次将通道数量扩展至C,此处再次运用一个卷积层来实现通道数量的增加。最后通过Sigmoid函数来作为入门机制函数。整个过程可以通过如下函数表示:
[0059]
[0060] 其中,σ表示Sigmoid函数,代表ReLu函数,W1与W2代表卷积层的权重。
[0061] 在注意力机制单元最后,通过点乘来重新缩放特征图,从而得到最终特征图:
[0062]
[0063] 其中 表示点乘运算规则。最终解决了先前未能考虑到通道信息的问题后,通过注意力模块能够有效地加强模型对于筛选最具分辨性特征的能力。
[0064] 在发明中设计了三种模式的注意力机制单元:仅由平均池化构成的模块、仅由最大池化构成的模块、结合了两种池化的模块。三种类型的模块都采用相同的衰减参数r,采用ResNet‑101作为模型的基础。不同模式的注意力模块的实验结果如表以及表4所示。从实验结果可以观察到最大池化方法与平均池化的性能达到了同一水平,结合了两种池化的注意力模块在三种策略中最终达到了最优的性能表现。从原理层面分析,平均池化方法倾向于计算特征图中的全局信息,而最大池化方法通常编码出最突出的部分,结合试验结果表明结合这两种池化策略能够充分联系特征图各个区域的信息,从而最大地提升模型性能。
[0065] 简而言之,注意力机制单元可以在不增加额外计算量的情况下,结合了两种池化策略的优点,从而以一个合适的方式去计算特征图中各个区域的信息。
[0066] 为了在空间和通道维度上充分利用本文的模型,实验过程中首先通过ImageNet预训练模型,然后保留特征提取部分的参数并微调模型,其中N代表训练数据总数,C代表数据集的类别总数。当属于第n个的数据的预测属于其正确类别i时 等于1,否则等于0;表示模型预测第n个数据属于其正确类别i的概率,这是通过Softmax函数来激活的。
[0067] 为了在空间和通道维度上充分利用本文的模型,实验过程中首先通过ImageNet预训练模型,然后保留特征提取部分的参数并微调模型,最初使用的损失函数如下所示:
[0068]
[0069] 为了更好地优化决策过程,应当避免模型对于自身预测结果过于自信的情况,因此我们增加了一个惩罚项来降低模型对自身预测结果的自信度。改进的损失函数如下所示:
[0070]
[0071] 其中α>0是一个用于降低模型自信程度的超参数。然而,当模型认为数据大概率属于某个特定类别时,预测结果之间的交叉墒会相对增大,这会导致Loss的值的增加。最终,我们将损失函数改进为如下所示:
[0072]
[0073] 其中β代表L2惩罚参数,Θ代表模型的权重。
[0074] 本发明设计了三种模式的注意力阶段:仅含通道域的注意力阶段、仅含空间域的注意力阶段、结合通道域与空间域的注意力阶段。表5 总结了对于通道域和空间域的消融实验结果。由结果表明,注意力阶段结合了通道域与空间域时能达到更好的准确率。从原理层面分析,主要是因为对于空间域生成的多个特征图,通道域可以平衡特征图上各个区域的权重,从而更好地联系特征图中各个区域的信息关联性,结合二者的模型综合了两种策略的优势所在,最终能有效地提升模型的性能。
[0075] 在发明中,模型会在大型数据集(如ImageNet)中进行预训练,随后再次在低俗图像数据集上进行更为任务导向的细化训练。在预训练过程中(120epochs),本文的模型已经达到了78.84%的top‑1准确率。随后我们微调模型,设置初始学习率为0.1,同样采用余弦衰退策略,衰退率为0.001。
[0076] 为了对比损失函数对于模型性能的影响,我们将相同的模型分别配备三种不同的损失函数进行对比实验。实际上,在许多计算机视觉任务中,公式的思想已经能够有效地大幅度降低损失函数的抖动以及训练的过拟合问题。实验结果如表6所示,表明合适的损失函数进一步地提升了模型的性能。
[0077] 步骤5.将训练过后的网络架构运用于数据的测试集中进行测试,以验证模型的准确率指标。
[0078] 在深度学习架构中,反向传播策略是模型更新参数的重要法则,其通过梯度下降来更新权重参数,为了能够更好地控制反向传播过程中梯度下降的速度,引入了重要参数——学习率。选择合适的学习率调整策略对模型的训练过程十分重要。在模型训练过程中,当学习率衰退至足够小的值时,模型会出现收敛进度停滞不前的情况,准确率也无法再得到提升。为了使模型在训练过程中以一个相对适合的学习率逼近收敛,余弦学习率衰退策能够使得学习率以一个不断缩小的速率而减少,从而使得最终的学习率不会衰退至一个过于小的值。在本部分发明中,初始的学习率设定为0.1,并在训练过程使用余弦学习率衰退策略:
[0079]
[0080] 其中EpochStep代表遍历一遍训练数据集所需要的步数, "GlovalStep"为当前步数。本部分始终保持初始学习率为0.01,与此同时每10epoch进行一次余弦学习率衰退。这样随着epoch数量的增加,也能保证学习率的下降速率逐渐降低,并以此最终提高模型的性能表现。
[0081] Dropout是深度学习领域中一种经典的正则化策略,能够在模型训练的过程中通过解除相关神经元的关联,以此减少模型的过拟合问题。在本发明中,我们将Dropout的值设置为0.5。Dropout之所以能够有效地避免过拟合问题,是因为其在训练过程中能够阻止部分被选中的神经元与其余神经元交换信息,所以导致了相关神经元丢失了与其关联的隐藏节点,最终导致了他们无法相互作用与模型的运算过程。 Dropout策略过程中的每次更新都能被看作是对训练集不同子集上不同模型的迭代,它能够减少众多神经元之间的复杂的相互反应,从而有效地较少过拟合问题的发生。
[0082] 我们通过对比实验来验证模型核心模块对整体的效率提升的效果。考虑ResNet‑101的参数规模大小与本文模型更为匹配,将其作为发明基线。所有的模型都训练于同一低俗图像数据集上,所有模型都通过 85个epochs的训练,并采取余弦学习率衰退策略与Dropout策略。
[0083] 步骤6.将测试得到的最优的注意力机制模型用于数据的可视化,以热力图的形式展现出图像的重点区域。
[0084] 热力图的可视化设计原型是红外线成像。在红外线成像生成的图像中,温度相对较高的区域会呈现倾向于红色,而温度相对较低的区域会倾向于蓝色。热力图的可视化设计逻辑也是这样,通过颜色的差异可以体现出特征图中各个区域权重的高低——特征的权重相对较高时呈现红色,反之为蓝色。于是本发明通过热力图的形式来凸显出特征图中最具辨识度的特征。Grad‑CAM利用卷积神经网络架构在分类任务中的特点,其最后一层往往利用Softmax函数来计算出各种类别的概率,并将概率最大的类别作为预测的物体类别。于是Grad‑CAM 基于概率最大值所属的类别开始进行反向传播,并求出网络最后一层卷积层的梯度值,随后求出每一份特征图的平均值。基于这个特征图的平均值,结合最优的注意力机制模型最后一层卷积层的输出结果,将二者的乘积叠加在原本的特征图上就得到最终的热力图可视化结果。
[0085] 本发明对三个注意力阶段输出的特征图进行了热力图形式的可视化。通过对三个注意力阶段的对比,我们观察到每个注意力阶段的关注倾向都有所不同。在第一个注意力阶段的热力图中,我们可以观察到模型在此阶段主要将权重集中在人体的整体轮廓上,即低维度特征,在全局上过滤了大部分无关的背景信息;到了第二个注意力阶段时,会对关注的关键特征区域进行进一步的细分,将权重集中在1‑2个关键敏感特征点上。在最后一个注意力阶段,模型能够过滤掉大部分无关的背景信息,将权重全部集中在图像的敏感区域上。
[0086] 步骤7.实验检测结果和性能测试。
[0087] 本发明实验环境同样基于PyTorch框架,运行于Ubuntu16.02,使用两张Nvidia GeForce 1080Ti图形驱动显卡进行并行加速计算。训练完成后,我们对其测试结果进行了可视化展示,同时对敏感区域进行了马赛克处理。从视觉特征的角度分析,女性的胸部与臀部在低纬度特征方面(形状、轮廓等)具有很高的相似度。但实验测试可视化结果表明模型能够有效地区分这两个类别的区域,说明模型能够在基于低维度特征的基础上,考虑到更高维度的特征(纹理、边缘、质感等)。与此同时,胸部与乳沟两大类别通常会存在一部分重叠的区域,如果模型在运算过程中对于这部分重叠区域添加了较多的权重的话也会影响最终的检测性能表现。
[0088] 最终通过对于敏感区域检测的可视化实现,能够配合注意力机制网络架构对于低俗图像进行分析。在实际场景中,我们可以先通过注意力机制网络架构对低俗图像进行四分类,得到一个相对准确的初步结果。随后针对存在争议或定界模糊的数据进行敏感区域检测得到一个解释性更好的细分结果。与此同时,鉴于模型的准确率往往在实际情况下难以达到100%的水平,这意味在模型测试过程中会出现部分错误的数据预测结果。为了更好地分析模型的优势以及不足之处,实验额外地分析了本文模型在测试过程中出现的错误样本,并从通过模型对其每个类别的评分情况来对其进行具体分析。
[0089] 基于自构建的四分类低俗图像数据集,本发明通过与现行前沿方法的对比实验来验证模型的性能与可行性。我们以四个具有代表性的卷积神经网络架构,包括VGGNet、ResNet、GoogleNet和DenseNet 来作为实验基线。所有的网络架构都不经过预训练,初始的学习率为 0.1并采用余弦衰退策略来调整训练过程中的学习率。
[0090] 在相同低俗图像数据集上的实验结果如表7所示。考虑到模型都是从零开始在相同的数据集下进行训练,故实验结果能比较客观地验证本文模型的性能与可行性。本发明相对于四个寄出网络且其独特之处在于能够以热力图的形式可视化网络中的特征图,这样能更好地解释本文的模型为何在分类任务中能得到更好的性能,更详细的分析请见部分。
[0091] 同时除了经典的卷积神经网络架构以外,本文还复现了一些图像识别领域前沿的方法来进行对比实验,包括DCNN、Two‑Stage CNN、 AutoCNN。对比实验结果如表8所示。通过与业内前沿的方法进行对比,更加客观地验证了本文模型的性能优越性。
[0092] 表1
[0093]
[0094] 表2
[0095]
[0096] 表3
[0097]
[0098] 表4
[0099]
[0100] 表5
[0101]
[0102]
[0103] 表6
[0104] 模型的损失函数组成 Top1准确率(%)公式(6) 91.87
公式(7) 92.24
公式(8) 92.94
[0105] 表7
[0106] 模型的损失函数组成 Top1准确率(%)VGGNet 91.31
ResNet‑101 91.25
GoogLeNet 90.89
DenseNet‑121 91.34
本文方法 92.94
[0107] 表8
[0108]模型的损失函数组成 Top1准确率(%)
DCNN 90.74
AutoCNN 91.83
Two‑Stage CNN 91.90
本文方法 92.94