APP下载

基于目标检测算法的FashionAI服装属性识别①

2019-08-22陈亚亚孟朝晖

计算机系统应用 2019年8期
关键词:服装分类特征

陈亚亚, 孟朝晖

(河海大学 计算机与信息学院,南京 211100)

近年来,随着网购的发展,越来越多的服装图片出现在购物网站上,对于这些服装进行分类和属性识别变的越来越困难,以前对于服装属性识别大部分是基于关键字的,但是这种检索的方法就需要提前给数据库里面的服装打标签,手工打标签耗时耗力,并且这种标签都是基于语义特征的,忽略了图像中的很多细节特征和一些难以描述的特征,准确率不是很高. 随着图像处理技术和卷积神经网络逐渐发展,网络直接学习图像的特征,获取到特征表示之后再度量特征[1]之间的距离和相似度来分类,可以很好的提高分类的速度和精度.

Pan RR[2]等人采用了FCM算法从针织物中提取纹理特征和结构特征送入到BP网络进行花纹识别.Salem YB[3]对于服装在纹理分析的基础上进行属性识别,使用SVM分类器进行分类. Liu S[4]等人提出了一种新的colorfashion数据集,结合了人体姿态估计模块,颜色和类别推断模块和超像素类别分类器学习模块使用多个分类器,直接解析分类服装图像的多个类别.Bourdev L[5]等人使用了基于poselet的方法,将多个属性分解,然后训练每个属性的分类器,将这些分类器组合在一个判别模型中. Hu ZL[6]等人采用了CDT的服装分割算法,对于前景和背景分别建模,可以从背景和光照条件不同的静态图像中提取到不同的服装特征.这些方法是基于人工设计的特征,包括sift特征,hog特征,即使采用特征融合也很难达到一定的准确率. 近年来,卷积神经网络[7-9]得到了快速的发展,利用卷积网路提取图像的特征已经成为研究的热点,因为卷积可以通过学习和训练提取到图像的特征,并且卷积神经网络快速地被利用到服装属性识别和分类中,Liu ZW[10]等人引入了deepfashion数据集提出了基于关键点的服装属性识别,取得了很好的效果. 在2018年阿里举办了FashionAI比赛,分为服装关键点定位和属性标签识别两个任务. 总之,深度学习[11]促进了服装属性识别技术发展,提高了服装属性识别的准确率. 然而在基于深度学习的服装属性识别中,由于服装的细节信息比较丰富,属性之间的相似度比较高,加上一些例如光照的外界干扰因素严重影响识别和分类的精度和准确度. 首先需要一个种类丰富的数据集,另外网络框架的一些细节的设计直接影响到了服装属性识别和分类的效果. 本文研究分析现有的服装属性识别框架,并做了对比实验,在已有网络的基础上改进损失函数,采取更有效的区域选择方法.

1 基于局部关键点检测的卷积神经网络

将原来的网路分为单个网络分支,全局网络,局部网络,和关键点检测网络. 加入了一个新的层,这个层叫做landmark. 首先得到一个局部特征,然后将这些局部特征按通道进行组合在一起,使用全连接层进行编码输出,得到固定维数的局部特征. landmark代表的是一种局部的细粒度的特征,将这些特征和全局特征进行组合能较好的对图像特征进行表征,基于这一点设计了一种关键点回归网络,基本部分与主网络共享权值. 输出的关键点信息作为输入被网络2吸收. 当有足够多的有标注的数据时,深度学习可以同时学习图像特征和度量函数,其背后的思想就是通过给定的度量函数,学习特征在该度量空间下具有很好的判别性,端到端的特征学习重要研究方向就是如何构建更好的特征表示形式和损失函数,网络结构如图1所示.

图1 fashionnet网络结构

2 目标检测与R-CNN系列

2.1 目标检测

目标检测算法就是给定一张图片,对于图形中的物体进行分类和定位,传统的目标检测采用的是基于滑动窗口的,并且图像的特征是人工设计的特征,不仅计算复杂度高,而且检测精度比较低. 随着深度学习的发展,基于深度学习目标检测算法已经逐渐取代了传统的目标检测算法,RCNN[12]系列的目标检测算法是Two-Stage[13]的检测算法,首先在图片上选出Proposals Region,然后在建议区域上进行特征提取,随后在最后面加上分类头和回归头进行分类和定位. 随着检测算法的发展,SPP-Net[14]的提出解决了全连接层必须输入固定尺度大小的特征图导致的原始图像经过wrap和crop带来的拉伸变形问题,它在最后一个卷积层上加入了金字塔池化层,使得全连接层的输入固定. 这样输入图像就可以是任意尺寸的,输出还是一个固定维数的特征向量然后送到全连接层. 这种结构随后被加入到RCNN中,Fast R-CNN就是对于整张图片进行特征提取,然后找到每个Proposals Region在特征图上的映射patch,将patch作为每个Proposals Region的卷积特征输入到SPP层和后面的层,Faster R-CNN[15]提出了新的RPN结构,已经成为目标检测的主流框架,被很多检测网络使用.

2.2 Faster R-CNN与Mask R-CNN

Faster R-CNN是Girshick RB在他设计的RCNN和Fast R-CNN基础上改进出来的. Faster RCNN无论在速度还是精度上都都比之前的框架有明显的提升,它是一种基于双阶段的检测算法,之前的Fast R-CNN首先使用selective search选出2000个Proposals Region,然而速度的运算瓶颈在于候选区域的生成时间. 候选区域的生成时间严重制约了目标检测的时间,并且候选区域的好坏直接影响了后续目标检测任务的结果. 设计一种含有少量的候选区域而且质量很高的结构进行候选区域提取就显得很重要.Faster R-CNN就设计了RPN结构,RPN直接利用了CNN产生候选区域,不再使用selective search,而是使用卷积网络在整张图上进行特征提取,并在卷积层的最后一层利用RPN网络滑动,利用网络的边框回归机制和Anchor机制来得到多个面积不一,多个不同的长宽比的候选区域. Faster R-CNN真正意义上实现了端到端的网络训练,将目标候选框的查找和目标的分类两个步骤结合起来,在速度和精度上都有不错的提高.Cascade R-CNN[16]在此网络的基础上在后面的检测器堆叠了几个级联模块,并采用不同的IOU阈值训练,进一步提高了准确率. IOU-Net[17]改进NMS算法,本文就是采用了这个网络进行训练,得到了很好的效果.

Mask-R-CNN[18]扩展了Faster R-CNN结构,在后面添加了一个和分类头,回归头并行的机制mask层,这一层是一种二值的mask,可以实现逐像素的检测.并且在细节上为了提高特征表达能力,使用ResNet替换了Faster R-CNN中的VGG基础网络. 为了挖掘多尺度的特征,作者使用了FPN网络,FPN网络可以将金字塔高级特征传递到底层,每一层都是高层特征与底层特征的组合. 使得网络的特征图同时具备细节和局部信息. 由于此网络的mask层是逐像素的检测,所以会出现misalignment问题,于是作者提出了ROIAlign结构,之前的ROI Pooling会经历两个量化的过程,第一个就是从ROI Proposals到特征图进行映射的过程,第二个就是从特征图划分成7×7的bin的过程,由于四舍五入将会导致量化的误差. ROIAlign结构可以使用双线性插值,不再进行四舍五入,将候选区域分割成k×k个单元,在每个单元中计算固定的4个坐标的位置,用双线性内插的方法计算出4个位置的值,然后进行最大池化操作. Mask-RCNN损失函数就是分类加上回归和Mask的预测的损失之和. Mask使用了sigmoid的函数,这样避免了类间的竞争. 基于Mask R-CNN的这些优点,本篇文章将mask-rcnn运用到服装检测中,建立了服装检测模型.

3 基于R-CNN的服装属性识别

Faster R-CNN候选区域的生成使用了RPN网络,采用一种Anchor机制,既保证了精度又提高了速度.在候选区域的生成过程中,采用的主要算法如下:以IOU为分类指标,将候选框分为正负样本两类.

其中,Sa代表预测框,Sb代表是标记框,FIOU代表的这两者之间的重叠率,这个比值越高,预测效果越好. 值大于0.7,就标记为正样本,如果小于0.3就标记为负样本,但是在进行候选框的选取时候,传统的NMS算法采用的是分类得分作为评判标准,然而在实验中就会发现这种方式不能很好地表征预测框的准确性,得分高的预测框并不一定比得分低的预测框好,就会使一些分类得分低但是与Sb的值很接近的框被抑制过滤掉,导致最终的得分指标下降. 本文采用了IOU-Net的思想,引入了回归得分作为评判标准. 每次计算预被剔除的框的的分类得分和之前的计算的最高的分类得分的最高值,保留最高的分类得分,这样返回的IOU的预测框的得分不一定是此框的原始得分,而是以该预测框为依据提出框的最高分类得分.

Mask R-CNN不再使用原始的ROI池化,因为ROI池化将对应的候选区域池化成固定尺寸的特征图的时候,两次量化结果的输出导致最后得到的特征图和原来的特征图像素位置偏移,不能很好的匹配. Mask R-CNN使用了ROIAlign方法,不再取整,而是采用双线性差值的方法固定四个点坐标的像素值,使得不连续的操作变得连续起来. 且定义了三个阶段的损失,总的损失函数定义为:

4 实验

本文实验目的主要有两个,其一是在原有的数据集上面进行微调训练自己的数据集,得到一个新的模型ClothNet,然后将这个模型作为检测网络的基础模型,继续微调送入到Faster R-CNN检测网络. 其二在预训练模型的基础上使用了Mask R-CNN结构训练检测网络,对比这两种算法的结果.

4.1 数据集介绍

本节实验所使用到的数据集有deepfashion,coco数据集. DeepFashion是香港中文大学开放的一个large-scale数据集,包含80万图片,包含了不同角度,不同场景,买家秀,卖家秀的图片,总共有四个任务,分别是服装类别和属性预测,in-shop和c2s服装检测点,外接矩形检测. 每张图片具有丰富的标注信息,包括类别,属性,bbox,特征点等信息. 本文主要做服装的属性识别与分类,所选的五个数据集中的一个,category-attribute,里面包含了289 222张服装图片,50个类别,1000个服装属性,每张图片是否标注了Bounding Box和服装类型clothing type. Bounding Box标注了左上角位置和右下角位置,每张图片的最长边resize到300,保持原图片的长宽比. 服装类型分为上身服装,下身服装,全身服装这三个类别,属性包括五类,纹理,面料,形状,部分和风格. 数据的可视化结果如图2所示.

我们在实验中抽取了这个数据集单个类别个数超过2000的20个类别,每个类别抽取2000张图像,构建子数据集deepfashionkid在VGG16[19]上进行微调.

4.2 实验总体框架

由于本实验解决的问题是服装的目标检测,本文做了一组对比实验,并在改进的网络结构上做了实验.实验如下:

首先对于Faster R-CNN,首先使用VGG16在imagenet的预训练模型上进行fine-tuning使用数据集deepfashion的子数据集deepfashionkid. 将得到的模型clothNet保存下来,方便后面的目标检测进行迁移学习. 算法框架如图3所示.

图2 数据的可视化结果

图3 服装检测系统整体框架图

Deepfashionkid数据集内容如表1所示:又在deepfashionkid数据集中每类抽取200张构建目标检测的标记数据集,分别是deepfashionVoc和deepfashion Mask两个数据集,如表2和表3所示.

4.3 实验结果分析

嫁接学习的训练方式将数据集分成两部分,part1和part2,part1部分的数据量远大于数据part2,首先训练part1部分得到的模型基础上训练part2. Faster R-CNN采用的是clothNet作为预训练的模型,然后使用了deepfashionVoc数据集进行目标检测. Mask RCNN采用了coco数据集的与训练的模型,在这个基础上进行微调,进而得到目标检测的结果. 使用labelme进行标注,因为数据集中的服装基本上都是穿在人身上的,coco数据集也有关于人的关键点检测模型,可以拿来作为预训练模型,在这个基础上从头训练,得到的实验结果.

表1 各算法采用的数据集个数

本节主要评估服装属性识别在deepfashion数据集上对比实验,并且在此数据集上改进实验.

本次的实验方案参照BTIC[20]的训练trick进行训练的,线性扩展学习率,随着batchsize的增大,学习速率也在增大. 在刚开始训练的时候使用一个小的学习率训练几个epoch,然后增大学习率,并且采用16位的浮点型参数进行训练. 在训练的过程中,学习的初始速率为0.02,每经过5000次迭代就将,学习的速率就会相应的减少0.1.

表2 deepfashionVoc数据集上实验结果对比

在自己手动标注的数据集上进行Mask R-CNN的实验,根据不同的样本数据,实验结果如表3.

表3 deepfashionMask数据集上实验结果对比

由此发现,随着样本数量的增加,mAP的值也会提升,随着网络模型深度的增加,mAP的值相对于浅层模型提高的更为明显,增加数量可以提高模型的准确度,但是增加一定的数量就会导致过拟合,目标检测多框或者框的位置不够准确. 使用新的数据在原有的网络上进行微调,并且在检测网络上更换数据,进一步微调对于检测效果的提高作用很明显. 并且损失函数是影响模型检测的一个重要方面.

5 总结与展望

本文自己构建了一个新的数据集deepfashionkid,使用这个数据集在VGG16上面进行微调得到了一种新的服装检测模型叫做clothNet,并且在这个数据集上进一步选取deepfashionVoc数据集和deepfashion-Mask数据集. 使用clothNet预训练的模型加上deepfashionVoc进行Faster R-CNN的目标检测. 接着采用了coco数据集预训练的模型进行微调,训练Mask R-CNN网络. 得到服装检测模型. 本文在训练网络的时候,采取了BTIC论文中提到的很多训练技巧. 本文仍有改进之处,在IOU的处理上可以参照Cascade RCNN和IOUNet的结构和想法运用到这个网络上,结果可能会更好. 本文只是做了服装的分类和定位,数据集也是选取了部分数据集,对于这个数据集,上面仍有很多的关键点标记数据和一些特定属性类别的数据,完全可以采用多任务和多标签学习的方式,重新定义损失函数,进一步提高服装属性和类别的准确度,扩张整个算法框架,运用到更多的应用中,比如智能衣柜,提高“以图搜图”的准确度.

猜你喜欢

服装分类特征
离散型随机变量的分布列与数字特征
抓特征解方程组
道具服装
不忠诚的四个特征
按需分类
教你一招:数的分类
说说分类那些事
现在可以入手的mina风高性价比服装
服装家纺个股表现
给塑料分分类吧