一种轻量级的文身检测方法与流程

专利2022-05-09  102


本发明属于计算机视觉领域。



背景技术:

随着互联网应用的快速发展,越来越多的人会选择在一些互联网应用上传图像或视频,不可避免的会出现违法违规的内容,以往需要雇佣大量的审核员人工仔细地检查这些内容,成本较高且易出错。近年来,随着人工智能技术的飞速发展,使用人工智能辅助工作人员进行互联网内容的审查是发展的必然趋势。图像中的文身在某些应用场景中是违规的,又因文身表观、大小差异极大,因此开发出适合文身图案检测的目标检测技术至关重要。在保证文身检测精度的同时,提升检测的速度,是文身检测技术落地的关键。为此,本发明提出一种轻量级的文身检测方法。

与其他对象物检测相比,文身检测有以下挑战:首先,文身区域尺度变化大,文身既可以占满皮肤,处于整个背部,也可能只文在皮肤的局部区域;其次,文身的数据较少,并且获取困难,现有的数据集有限,在训练检测模型时会产生过拟合,从而导致模型学习效率低、鲁棒性差、泛化不足差等问题。这些问题使得将现有对象物检测方法直接应用在文身检测上难以获得满意的效果。在检测速度方面,现有目标检测框架主要有两个分支:单阶段方法和二阶段方法。单阶段方法直接回归目标类别概率和预测框位置坐标,在检测速度上优势明显;二阶段方法分离了预测框位置坐标回归和目标分类,检测准确度较高。yolov5是最新的单阶段轻量级目标检测网络的代表方法之一,也是当前速度最快的目标检测方法之一,拥有高精度和高灵活度等特点。

本发明首次提出用于文身检测任务的轻量级目标检测框架,利用目前最轻量最快速的目标检测网络yolov5作为主体框架。在构建该网络框架的基础上,根据文身图像的特点,定义了直方图损失。并基于大规模数据上的预训练模型,以及在少量的公开文身数据集及人工标注的互联网文身图片数据上通过迁移学习的策略进行了训练,增强模型的泛化性和鲁棒性。最后,把训练过的最终模型在测试数据上测试,取得了令人满意的性能和速度。



技术实现要素:

本发明为解决上述提到的文身检测任务存在的问题以及现有方法用于检测文身的缺陷,提出一种基于yolov5的轻量级目标检测方法,并根据文身图像特点修改,额外定义直方图损失来约束网络,提升文身检测的性能。本发明在实现快速的模型推理的同时保持了较高的目标检测精度。

如图所示,本发明分为数据准备、yolov5文身检测网络的构建、定义直方图损失和网络训练及测试四个步骤。

步骤1、数据准备阶段。

训练数据包括两部分,一部分来自公开数据集demsi和bivtatt,一部分从互联网上爬虫获取并手工标注包围框。共6000张图片。

步骤2、yolov5文身检测网络的构建。本方法中的网络模型由以下模块构成:

1)主干网络。本发明使用的主干网络为cspdarknet,称作跨阶段局部网络。它是cspnet和darknet的结合,特点是减少计算量并且增强特征的表达能力,增强卷积神经网络的学习能力,从而提升检测准确率。

2)neck。该模块的作用是生成特征金字塔。特征金字塔会增强模型对于不同缩放尺度对象的检测,从而能够识别不同尺度的同一个物体。

3)head。该模块用于最终检测部分,用于对象物的定位和分类。它在特征图上应用锚定框,并生成带有类概率、对象得分和包围框的最终输出向量。

步骤3、定义直方图损失函数。根据文身图案本身的特点,例如皮肤颜色一致、文身图案颜色单调,以及前背景区域的分布比较集中且二者表观差异明显。我们可以通过直方图明显地观察到图像中的此类分布规律。本发明在文身检测任务中引入直方图损失。该损失可显式地计算文身区域的分布情况,用于进一步训练网络,增强文身区域的特征表达。

步骤4、网络模型的训练及测试。包含以下步骤:

步骤4.1模型参数的初始化。本发明使用了在大规模通用目标检测数据集mscoco上预训练的模型。

步骤4.2整体模型训练。本发明利用预训练好的参数和高斯分布函数对网络参数初始化,并在文身检测数据集的训练集上微调网络参数。

步骤4.3模型测试。将训练完成的模型在测试集上测试,得到最终结果。

本发明的优点在于:

本发明提出了基于yolov5的轻量级目标检测框架。本发明的网络模式参数量少,模型小,检测精度较好,推理速度快,灵活性高。在此基础上,本发明考虑到文身图像的特点,定义直方图损失损失函数,增强模型对文身的识别能力,进一步提升检测性能。

附图说明

图1是基于yolov5的轻量级文身目标检测方法的总体步骤图。

具体实施方式

根据上述描述,以下是一个具体的实施流程,但本专利所保护的范围并不限于该实施流程。

本发明的实施过程具体包括以下步骤:

步骤1、数据准备阶段。

训练数据包括两部分,一部分来自公开数据集demsi和bivtatt,另一部分从互联网上爬取并进行手工标注包围框。其中bivtatt数据集包括了210张原始图像,这些图像通过20种不同的变换生成4200张图像并提供了包围框标注。而demsi包含了提供mask标注的1452张文身图像,在此我们把mask转换为包围框标注。本发明在数据增强上使用了随机旋转、翻转,色彩空间调整和马赛克增强。马赛克增强采用了4张图片,通过随机缩放、随机裁剪、随机排布的方式进行拼接,能够增强模型检测图像中小物体的能力。此外,我们使用了自适应图片缩放,因为使用的数据集图片尺度多为480,所以在训练时将所有图片分辨率调整为480×480,由于训练图片长宽比不尽相同,该技术对原始图像尽可能添加少的黑边,达到减少信息冗余,提高推理速度的目的。我们使用了自适应锚定框技术。该技术基于数据自动学习出适合的锚定框,能够进一步提升定位的准确度。

步骤2、轻量级文身检测网络构建阶段。

yolov5网络构建阶段,包括主干网络设计,neck设计、head设计。

(1)主干网络:本发明使用的主干网络为cspdarknet,称作跨阶段局部网络。主干网络使用的模块主要有:focus、cbl、csp。

focus:网络的输入为三通道的rgb图像,大小为480×480×3。该模块把原始输入图像进行切片,得到240×240×12的特征图,然后使用卷积操作得到240×240×32的特征图,目的是可以最大程度的减少信息损失而进行下采样操作。

cbl:yolov5的基本模块,功能是让特征图尺度减半,通道数加倍。其结构为步长为2的3×3卷积、批归一化(batchnormalization,bn),激活函数(hardswish)。hardswish的公式为:

csp:该模块输入分为两个分支,第一支包括一个cbl模块,多个残差单元和一个3×3卷积。其中残差模块在多个卷积层之间加入捷径,使得深层的梯度更容易地经过反向传播传递到前一层,解决了加深网络深度所带来的参数量大和梯度爆炸造成的训练困难问题。第二支只有一个3×3卷积。

利用主干网络进行特征提取的具体流程为:

1.尺度为480×480输入图像经过focus模块,得到240×240×32的特征图。

2.经过3组cbl csp组合,将特征图的尺度由240×240依次降低为120×120、60×60、30×30。

3.最后经过一个cbl模块,得到尺度为15×15的特征图,作为spp的输入。

(2)neck:该模块的功能是构建特征金字塔,获得多尺度的信息。它使用了spp、fpn pan的结构。其中spp把特征图从不同尺寸进行池化操作,再进行聚合,能够进一步提升算法的鲁棒性和精度;fpn pan两个网络分别是自顶向下和自底向上的金字塔结构,fpn的每个尺度的特征图将会融合到相同尺度的pan特征图中。具体流程为:

1.spp的输出的尺度为15×15特征的作为特征金字塔的顶层,然后将其上采样,与主干网络提取的30×30的特征图做堆叠融合,作为金字塔中层,然后中层特征分别再经过上采样与主干网络提取的60×60的特征图做堆叠融合,作为金字塔的底层,完成fpn的构建。

2.将fpn底层特征作为pan的底层,再使用cbl将其依次下采样到30×30、15×15,分别于同尺度的fpn特征进行堆叠融合,从而得到pan的中层上顶层,完成pan的构建。

(3)head:因为yolov5是多尺度的单阶段的目标检测方法,我们使用head层从pan特征图中选择三个尺度大小为15×15,30×30,60×60的特征图。首先对这三个特征图分别通过3×3卷积,将通道数统一,用于消除自顶向下部分上采样后的特征图与自底向上部分的同尺寸特征图融合后出现的特征不连续现象,之后分别输入1×1的卷积层做出预测。最终预测的向量分为两类:一是文身图案的包围框中心点坐标和它的长宽,以及置信度;二是该物体的类别,在本发明中,只有一种类别,即文身。

步骤3、定义直方图损失函数。不同于常规度量学习中损失函数的做法,在减小正样本对的特征特征空间之间的距离同时增大负样本对之间的距离。直方图损失基于估计出的正样本对和负样本对的距离分布,用于计算正样本对之间的相似度比负样本对之间的相似度更小的概率。例如,对于两个样本xi,xj,相似性概率用sij=<xi,xj>表示,经过l2正则化后的范围为[-1,1]。直方图损失首先使用直方图h将相似的特征点对和不相似的特征点对进行排列组成概率分布,然后对相似特征点对的概率分布做累计密度分布,将相似特征点对的累计密度分布和不相似的特征点对的分布进行相乘,之后再进行积分运算,得到我们需要的直方图损失。最后,使用正样本对和负样本对的概率分布估计一个随机负样本对的相似性大于一个随机正样本对的相似性的概率:

其中,p 和p-分别表示正样本对和负样本对的概率分布,φ (x)是p (x)的累积密度函数,该公式估计了一个随机负样本对的相似性大于一个随机正样本对的相似性的概率,可近似计算为以下离散的形式:

其中,lh就是我们使用的直方图损失,对于r维的直方图h-和h 表示直方图h-上每个元素的值,表示直方图h 上所有元素的累加和。

含有文身图像的背景区域颜色单调,文身图案也往往类似,反映在直方图上,就是绝大多数像素集中在几个较窄的范围内。对于基于深度学习的文身检测来说,使用直方图损失,在没有增加额外的参数的前提下,使在训练中的神经网络权重使数据高维特征分布更加“规整”,使网络更易收敛,提高检测精度。

步骤4、网络训练与测试。

步骤4.1、模型参数初始化。由于文身检测的数据量较小且缺乏多样化的场景,容易出现过拟合和鲁棒性低等问题,因此在一个大规模的数据集预训练是必要的。这一过程主要目的是为本方法模型中的多层次特征学习模块提供一个较好的参数初始值。在深度卷积神经网络中,参数优化过程基于反向传播算法(bp)算法,而bp算法的本质是随机梯度下降,参数初始值的不同将会导致网络收敛到不同位置。因此,好的参数初始值可以避免让网络陷入到局部最优解,同时可以加速网络模型的收敛过程。在深度卷积神经网络模型中,不同任务所需要的低层次特征较为类似,大多是一些基于亮度、颜色、纹理的边、角之类信息,在高层语义特征中会进一步抽象为各自任务所需要的特征,不同任务下学习的底层次特征具有通用性,可以把在大规模数据集中学习到的参数直接迁移到目标数据集上,只需要在目标训练集上对网络模型的参数微调即可。在本发明使用目标检测数据集mscoco上预训练好的参数。该数据集拥有超过30万张不同场景下的图片,包含80个分类,目标尺度范围广,有利于加强网络的特征学习能力。得到在mscoco上预训练好的源模型后,在文身检测数据集上训练本发明的模型,输出层需要从头训练,而其余层的参数都是基于源模型的参数微调得到的。

步骤4.2、整体模型训练。在步骤4.1中,我们使用在mscoco上的预训练模型进行了参数初始化,并基于pytorch深度学习框架在文身数据集上进行端到端训练。训练过程中的优化器为adam,学习率为0.001,批大小为32,共迭代训练300轮以上。

考虑到文身的特点,本发明文身检测的损失函数除了分类损失和包围框回归损失外,我们额外引入了直方图损失,最终的损失函数如公式(4)所示:

l=λboxlbox λobjlobj λclslcls λhlh(4)

其中,lbox是包围框的回归损失,使用giouloss实现。lcls分类损失和lobj置信度损失都使用二分类交叉熵计算。最后的lh是直方图损失。λbox、λobj、λcls、λh是调整各个权重平衡的超参数。其中前三项与原始yolov5相同,分别取0.05、1.0和0.5,而经过多次训练和调参,λh取0.5,使得最终结果达到了令人满意的程度。

步骤4.3、模型测试。

本发明最终文身检测网络模型源于最后一轮训练过程中验证集上损失较小的参数。我们使用最终的文身模式在测试集上进行量化评估,模型将对每幅输入图像输出预测框的坐标、目标分数、类别分数,定位出文身目标。


技术特征:

1.一种轻量级的文身检测方法,其特征在于,包括以下步骤:

步骤1、数据准备阶段;

训练数据包括两部分,一部分来自公开数据集,另一部分从互联网上爬取并进行手工标注包围框;

步骤2、轻量级文身检测网络构建阶段;

yolov5网络构建阶段,包括主干网络设计,neck设计、head设计;

(1)主干网络:使用的主干网络为cspdarknet,称作跨阶段局部网络;主干网络使用的模块有:focus、cbl、csp;

focus:网络的输入为三通道的rgb图像,大小为480×480×3;该模块把原始输入图像进行切片,得到240×240×12的特征图,然后使用卷积操作得到240×240×32的特征图;

cbl:yolov5的基本模块,其结构为步长为2的3×3卷积、批归一化bn,激活函数hardswish;hardswish的公式为:

csp:该模块输入分为两个分支,第一支包括一个cbl模块,多个残差单元和一个3×3卷积;第二支只有一个3×3卷积;

利用主干网络进行特征提取的具体流程为:

(一)尺度为480×480输入图像经过focus模块,得到240×240×32的特征图;

(二)经过3组cbl csp组合,将特征图的尺度由240×240依次降低为120×120、60×60、30×30;

(三)最后经过一个cbl模块,得到尺度为15×15的特征图,作为spp的输入;

(2)neck:该模块的功能是构建特征金字塔,获得多尺度的信息;使用了spp、fpn pan的结构;具体流程为:

a.spp的输出的尺度为15×15特征的作为特征金字塔的顶层,然后将其上采样,与主干网络提取的30×30的特征图做堆叠融合,作为金字塔中层,然后中层特征分别再经过上采样与主干网络提取的60×60的特征图做堆叠融合,作为金字塔的底层,完成fpn的构建;

b.将fpn底层特征作为pan的底层,再使用cbl将其依次下采样到30×30、15×15,分别于同尺度的fpn特征进行堆叠融合,从而得到pan的中层上顶层,完成pan的构建;

(3)head:因为yolov5是多尺度的单阶段的目标检测方法,使用head层从pan特征图中选择三个尺度大小为15×15,30×30,60×60的特征图;首先对这三个特征图分别通过3×3卷积,将通道数统一,用于消除自顶向下部分上采样后的特征图与自底向上部分的同尺寸特征图融合后出现的特征不连续现象,之后分别输入1×1的卷积层做出预测;最终预测的向量分为两类:一是文身图案的包围框中心点坐标和它的长宽,以及置信度;二是该物体的类别,只有一种类别,即文身;

步骤3、定义直方图损失函数;

直方图损失首先使用直方图h将相似的特征点对和不相似的特征点对进行排列组成概率分布,然后对相似特征点对的概率分布做累计密度分布,将相似特征点对的累计密度分布和不相似的特征点对的分布进行相乘,之后再进行积分运算,得到直方图损失;使用正样本对和负样本对的概率分布估计一个随机负样本对的相似性大于一个随机正样本对的相似性的概率:

其中,p 和p-分别表示正样本对和负样本对的概率分布,φ (x)是p (x)的累积密度函数,该公式估计了一个随机负样本对的相似性大于一个随机正样本对的相似性的概率,近似计算为以下离散的形式:

其中,lh就是使用的直方图损失,对于r维的直方图h-和h 表示直方图h-上每个元素的值,表示直方图h 上所有元素的累加和;

步骤4、网络训练与测试;

步骤4.1、模型参数初始化;

步骤4.2、整体模型训练;

基于pytorch深度学习框架在文身数据集上进行端到端训练;训练过程中的优化器为adam,学习率为0.001,批大小为32,共迭代训练300轮以上;

文身检测的损失函数除了分类损失和包围框回归损失外,额外引入了直方图损失,最终的损失函数如公式(4)所示:

l=λboxlbox λobjlobj λclslcls λhlh(4)

其中,lbox是包围框的回归损失,使用giouloss实现;lcls分类损失和lobj置信度损失都使用二分类交叉熵计算;最后的lh是直方图损失;λbox、λobj、λcls、λh是调整各个权重平衡的超参数;其中前三项与原始yolov5相同,分别取0.05、1.0和0.5,λh取0.5;

步骤4.3、模型测试;

使用最终的文身模式在测试集上进行量化评估,模型将对每幅输入图像输出预测框的坐标、目标分数、类别分数,定位出文身目标。

技术总结
一种轻量级的文身检测方法属于计算机视觉领域。本发明首先进行文身数据的准备,然后构建基于YOLOv5的单阶段轻量级目标检测框架:把主干网络的提取的深度卷积特征构建特征金字塔,再提取金字塔上三个不同尺度的特征图送入Head层得到最终的结果。针对文身图像的特点,本发明额外引入了直方图损失,目的是使网络更加关注文身图案区域,提升文身检测的性能。本发明在维持文身检测的精度的同时显著降低了参数量和计算量,为实用化提供了技术积累。

技术研发人员:卢闰霆;褚真;马文广;马伟;李冰;赵金
受保护的技术使用者:金科智融科技(珠海)有限公司;北京工业大学
技术研发日:2021.04.19
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-7338.html

最新回复(0)