cover_image

新人分享系列-图像语义分割和颜色识别

任任 MOGU广告技术
2017年12月21日 08:44

图片

花名:任任

部门:算法中心图像算法组

入职时间:2016年

主要从事图像算法相关研发工作


一、研究背景

       用色彩来装饰自身是人类的原始本能,无论古代还是现在,色彩在服饰审美中都有着举足轻重的地位,是服装三大要素之一,因此服装颜色标签识别对时尚电商平台蘑菇街来说非常重要。

        蘑菇街图像算法组第一批的颜色识别算法采用的是经典成熟的服装检测+颜色识别的技术方案。该方案的实施需要标注大量的服装颜色数据,因此第一批只做了10类基础色的识别。随着蘑菇街业务的发展,越来越多的业务对颜色标签提出了更细粒度的要求,一期10类颜色的识别算法已经无法满足新的需求,于是重新思考探索了细粒度服装颜色识别算法,制定了如图1所示的语义分割+颜色聚类的细粒度颜色识别方案。

图片

                            图1 细粒度颜色识别方案流程图

  

 具体来讲,新的细粒度颜色识别主要分为如图2所示的三部分:

      第一,对服装图像采用语义分割技术分割出图像中各服装单品比如上衣、裤子、裙子和包包等的具体区域,排除背景等区域的干扰;

      第二,对分割出的服装上衣、裤子等服装单品区域图像进行颜色聚类,得到服装单品的主要颜色及占比;

      第三,定义标准的服装色卡标签,对聚类得到的主要颜色量化分析,得到具体的颜色标签。

图片

                          图2 细粒度颜色识别示意图


新方案和以前方案相比有以下优点:

      1.不需要标注海量的数据,降低成本:很多基于深度学习的颜色识别系统需要标注海量的服装颜色数据进行模型的训练,以达到准确识别颜色的目的。当颜色类别较多时,颜色的标注难度会很大,因为颜色之间相似度较高,而且颜色偏主观,每个人认为的颜色都会多少有些差别,标注难度大也同样导致标注成本高。通过采用语义分割加颜色聚类的技术路线,不再需要标注大量的颜色数据,可以解决了颜色标注的问题,节约了成本。

       2.可识别的颜色种类多,并且可以方便的通过色卡定制需要的颜色标签。传统的基于分类的颜色识别系统,支持的颜色类别是由标注的数据颜色类别决定的,如果需要增加颜色类别就要重新标注新类别的颜色数据,成本较高。通过将颜色聚类和颜色识别流程相分离的方式,系统只需改变色卡就可以增减可识别的颜色种类,方便灵活、可定制性强。

      3.相比传统的颜色识别算法,新颜色识别系统能够很好的应对多色服装,因为传统分类算法一件衣服只能输出一个颜色标签,而新系统可以输出多色中各色的颜色占比,比如黑白条纹的T恤可以输出黑色占比60%,白色占比40%.


二、总体成果

     建立了一个可扩展的细粒度颜色识别系统,能够满足蘑菇街服装时尚信息分析系统、选品后台等业务场景对颜色识别的需求。搭建了颜色识别服务,在识别效果和实时性上满足各业务需求,并建立了颜色识别可视化页面以便于进行颜色识别分析。服务整体流程包括:输入一副服装图片,通过模型得到具体的各服装区域,对各服装颜色进行分析识别,最终输出图中上衣、下装、鞋子和包包的主要颜色和占比,具体细粒度颜色识别算法的效果如图3所示。

图片

                       图3 细粒度颜色识别算法的效果


三、技术原理

    语义分割:

       系统的第一个流程是利用语义分割技术,将商品主体从背景中分离出来。以服装图像为例,区域提取的目标是对图片进行精细化语义分割,排除背景与服装、服装与服装之间的相互干扰。针对服装模特图片,我们通过Human Parsing算法,把主要区域提取出来,例如:头肩、上衣、裤子、鞋、包包等。

         图像语义分割(SemanticSegmentation)是图像理解的基础技术,在服饰信息分析、自动驾驶系统(具体为街景识别与理解)、无人机应用(着陆点判断)以及穿戴式设备应用中举足轻重。众所周知,图像是由像素组成。顾名思义,语义分割就是将像素按照图像中表达语义含义的不同进行分组和分割。如图3所示,浅紫色区域表示语义为“上衣”的图像像素区域,荧光蓝代表“下装”语义区域,军绿色表示“包包”,深紫色代表“右鞋子”区域,橙色则表示“左鞋子”区域。在图像语义分割任务中,其输入为一张H×W×3的三通道彩色图像,输出则是对应的一个H×W矩阵,矩阵的每一个元素表明了原图中对应位置像素所表示的语义类别(Semanticlabel)。因此,图像语义分割也称为“图像语义标注”。

       在语义分割领域,全卷积网络(FullyConvolutional Networks,FCN)推广了原有的CNN结构,在不带有全连接层的情况下能进行密集预测。FCN使得分割图谱可以生成任意大小的图像,且与图像块分类方法相比提高了处理速度。实际上几乎所有关于语义分割的最新研究都采用了FCN结构;不过该框架中的池化层在增大上层卷积核的感受野、聚合背景的同时,却丢弃了部分位置结构信息。

图片

                            图4 FCN语义分割网络


       在服装语义分割中,人体结构和服装位置之间的相对关系,对提高分割效果来说至关重要。我们在实际工作中,借鉴了DeepLab论文(DeepLab: Semantic Image Segmentation with Deep Convolutional Nets,Atrous Convolution, and Fully Connected CRFs. arXiv:1606.00915, 2016)的空洞卷积(Atrous Convolution)思想,保留了池化层中所舍弃的位置结构信息。丢失的位置结构信息主要由于重复池化和下采样造成,因此我们的网络中移除了最后的若干个最大池化层下采样操作,并对滤波器进行上采样,在非零的滤波器值之间加入空洞,进行空洞卷积。如图5所示,

        (a)中的常规卷积只能获取到较小感受野上的稀疏特征;

        (b)中方法采用空洞卷积后可以得到较大感受野对应的更丰富特征,对应服装语义分割中也就保留人体和服装之间的位置结构信息,有助于服装分割效果的提升。

图片

                      图5 图像语义分割中的卷积操作


       除了上面介绍的采取空洞卷积策略之外,我们针对蘑菇街服装数据集的特点,对分割网络模型进行优化,在基础网络中加入了多尺度的支路网络,使得在训练中模型获取的图像信息更多,模型更容易收敛,并且分割IOU指标提升到了68.5%。引入多尺度信息之后模型不可避免的会变大导致速度变慢,为了解决Inference阶段图片处理速度变慢的问题,我们对Inference阶段的网络进行剪枝,使模型大小压缩了67%,IOU只下降0.6%,但单张图片的平均处理速度从260ms降到了160ms,大大提升了处理速度。


   颜色量化分析:

       通过语义分割获得上衣、裤子等服装单品区域后,对单品图像采用改进的MeanShift算法进行颜色聚类,得到服装单品的主要颜色占比。

实际应用中,蘑菇街商品图片的颜色会受到拍摄光线和滤镜处理的影响,这给我们的颜色识别带来了挑战,主要是两个方面。

       【1】颜色空间的选择:不同的颜色空间有不同的特点,Lab色彩空间具有单独的亮度通道,因此为了减小光照对聚类算法的影响,提升颜色聚类的准确度,我们会在Lab色彩空间对图片色彩进行一定的矫正,再进行颜色聚类,以尽可能减少光照和滤镜对颜色识别的影响。

       【2】服装色卡定义:与此同时根据蘑菇街服饰颜色分布及商品标签需要,定义了蘑菇街标准的72色服装色卡。基于颜色聚类的结果,获取到主体颜色的聚类中心信息,所占比例最大的聚类中心所对应的色卡,被定义为最终输出颜色名称。


四、经验总结

      从刚毕业加入蘑菇街到现在,已经一年半多,这期间经历了很多,感触很多,成长也有很多。

      1.作为应届生,我感触最深的是工作后要迅速完成身份的转变,工作后已经不再是学生了,做事行为方式也不能按照学校实验室的方式来,要迅速融入到工作中去。积极向同事和Leader沟通工作进展,工作中遇到的问题也要及时向同事和Leader反馈,或许你遇到的坑,同事们之前已经遇到过了。

      2.作为算法人员,要多关注行业进展,多读好的论文paper,开拓自己的视野,并且在读paper的过程中,要多思考能不能将论文中的新技术和公司的业务相结合,为公司创造新的价值。

      3. 大部分算法应届生会存在工程能力偏弱的情况,主要原因在于之前在学校没有太多的大型项目经验,而主要关注算法方面。实际上好的算法需要优秀的工程能力来实现,所以应届生很有必要提升自己的编程能力,养成良好的编程风格和习惯。




更多流量广告搜索算法相关内容, 敬请关注“美丽联合数据技术”公众号

图片

继续滑动看下一个
MOGU广告技术
向上滑动看下一个