一. 背景介绍
淘宝有着数量巨大商品,如何分析这些商品之间的关系是淘宝中面临的一个挑战。特别是淘宝区别于京东和亚马逊在于淘宝很多是非标类,而且商品又来自数量巨大的各个不同卖家所以导致了商品种类的丰富性并且随之带来的一定重合。所以分析同类商品是分析商品关系所遇到的问题之一。
商品中除了大量的结构化信息以外还有大量的非结构化信息,其中最主要的文字和图像信息。相比文字信息图像包含着更多内容,但比起文字也更难被结构化。本文主要探索基于内容图像搜索的设计和实现,介绍其原理和所遇到的问题。文中的讨论认为图像和文本应用的处理区别仅在于特征提取和量化问题,其都可以转换为字符串搜索和向量比较问题。在实验效果上对于客满提供的真实图像进行处理然后人工校验,得到了相似性查准率为100%, 查全率为: 87%的较好效果。
此项目由淘宝图像互动组和淘宝语义分析团队提供底层算法支持、淘宝图片中心提供系统构架和对外服务搭建。项目所所实现的系统将在淘宝摄影市场图片去重业务中首先上线,且今后将视效果逐渐在其他类目上推广。
二.图像比较的原理
最简单来讲如何比较两张图像是否相似,首先想到的是重叠比较。所谓重叠比较就是将两张图片叠加起来,然后看他们有多少是相似的。重叠在实现上最简单的做法是逐像素进行比较,之后我们就可以知道这两张图到底有多少是不一样的。逐点比较需要计算图像中的每个点,那么就可以通过首先将图像划分成很多小的单元格然后比较两个图像子单元格差别是否大就可以知道图像差异是否大了。但是无论是逐点比较还其相应的优化方法其有一个很大的缺点就是计算量相当之大,并且还有一个比较致命的缺点是两张图像的比较是基于两张图像在位置上必须是对齐的,而其一旦在位置或者形状大小上有差异,逐点比较必然会失败。
以此来看如何实现两张图像的比较我们必须找到图像中有共性的部分,它们共性就是我们所说的特征。特征是一些能反应图像特点的量,如果这些量对上了,我们便可以猜测图像可能是相似的。一些图像当中常用的特征是图像有颜色信息,比如都是红色图像才有可能相似;如果一个红一个绿图像肯定相差十万八千里了。此外图像当中可以利用的特征还有材质纹理信息,特征点信息。比如两张图像都有类似布料图案的信息(如豹纹)那么我们便能够把他们找出来。所谓的特征点信息是图像当中有代表性比较特殊的点,这些点在尺度上和局部分布信息上都有其特别性,如果两张图像有相似的显著特征点,并且相似的局部点数量非常之大,那么便可以推断图像是相类似的。
总之图像当中如果我们抽取出来图像的颜色、特征点、纹理、形状这些有代表性的信息就能实现图像的再呈现从而简化了图像的比较。相比逐点比较来讲特征的比较只需要比较少量信息便能实现图像的比较,大大提高了比较的效率。后面还将会提到我们如何组织这些特征来实现图像的比较流程。在开始后面的讨论之前首先简单介绍一下颜色特征、纹理特征、和点特征。
2.1颜色特征
通常计算机对颜色的呈现是通过RGB三元组的点阵来显示的,一张图正是由无穷多个这样点所组成。所谓颜色特征指的是一张图上颜色的统计量,如红色的分布情况、绿色在某个区域内的平稳性(方差)。通过这些全局的统计量我们便可以得到图像的颜色抽象。
同时颜色还有另外一种表示方法,可以通过一个色锥来表现所有的颜色。我们称为HSV。V是体现了一种颜色的亮度V越高颜色的亮度越大,S体现了颜色的饱和度,所谓的“苍白”就是指颜色的饱和度低(S低)颜色越偏白。H则是体现了颜色在色环上的位置、也就是其到底是红是绿。由此我们可以看出HSV色彩模型是一种更复合色彩理解的物理模型,在色椎上位置差异越大色彩的区分度也越大,它是一种比RGB跟合理体现色彩差异性的模型。并且心理学同时也研究表明HSV在人的感知度上贡献是不一致的,人眼对亮度的敏感度要高于颜色的差异性。
2.2 图案的纹理特性
图案的纹理特征是一种呈现图像内像素分布特性的信息。对纹理的通俗描述例如白墙是颜色一致的,草地或者沙地有颗粒感。这就是人直接对纹理的描述体会。同样纹理也可以被量化来体现其特性,最简单对于纹理的描述莫过于方差,如果方差为零那么说明图像上像素的值都是一致的,比如墙壁。而越大则起伏越大。除了方差以外还有对图像纹理的描述还有如图像的转动惯量,图像的灰度共生矩阵等诸多描述量。
2.3图像的特征点信息
图像的特征点信息典型的有角点、sift、surf特征等特征。其中 sift和surf的原理都是查找尺度上具有独特性的那些点。区别在于sift是图像进行尺度变换,surf是卷积核进行尺度变换。
当定位到那些有独特性的点的位置以及到的尺度后,我们可以以此为中心以半径为区域得到局部区域。统计区域内的梯度直方图便可以得到我们的特征点信息。每个信息点都可以看成是一个代表图像内容的单词。
三.图像比较搜索的实现
虽然各类图像特征信息都能对图像进行向量化、数值化实现图像的抽象,但是对于单一一个特征来讲其还是有缺陷的。比如两张的图像即使内容不同也会有相似的直方图信息,有部分特征点相似也未能完全说明两张图片一致。另外特征点有时对于全图比较光滑的图像还会产生失效问题。所以这里我们采取了多层图像特征串联的检测结构,用多种特征的联合逐次过滤来实现了这一系统。初次实验中,根据算法的实现效率和效果情况选取了图像色彩直方图、top surf特征进行图像的组合复验比较。同时在这两层算法之前我们还加了一层主图颜色特征来进行图像聚类加速图像的检索过程。
这里加色彩聚类的主要目的是为了尽可能减少需要比较的图像数量,如果两张图像差距太大就可以直接放弃比较。
通过颜色的聚类我们可以对图像进行预分类从而加快颜色的检索。
在图像特征中top surf特征处理中,首先将抽取图像的surf特征,然后通过对数据集的遍历生成一份字典文件。这样对对未知的图像我们就可以通过特征提取和查表来将图像转换成字符串了。从而将图像匹配问题转换为字符串搜索问题;在色彩直方图特征中我们把图像变换成向量,从而把图像搜索查找问题转换成向量聚类和比较问题。服务实现具体的做法是用Lucene对图像进行索引构建搜索部分,然后将搜索出来的图像后端做直方图校验,同时如果第一部分搜索数据不足的时候也可以拿相近的直方图通过range filter来进行搜索补足。
四 系统的实现效果
为了测试搭建系统的效果,我们分别对做了算法模拟数据实验和线上真实数据集合实验加以人工验证。在线上实验中我们的数据来源是线上主图以及摄影市场图片,真实数据来自客满遭投诉的重复图片。
4.1)对于算法人工生成数据实验
我们原图采用了线上主图+摄影市场图片,然后人工进行一系列的变换产生待匹配图片。具体的变换方法如下:
缩放图: 按照20%、40%、60%、80%生成。
裁剪图: 按照上、下、左、右、中裁剪图像一半大小方式生成。
近似图: 由原图经过缩放、裁剪、水印操作后生成。
水印图(文字): 按照左上、左下、右上、右下、中心四个位置添加文字水印方式生成。
水印图(图片): 按照左上、左下、右上、右下、中心四个位置添加图像水印方式生成。
实验结果如下
水印+缩放: 相似性查准率为99.7%, 查全率为: 85.9%
水印+缩放+裁剪: 相似性查准率为99.7%, 查全率为: 63.4%
4.2)对于客满真实数据实验
我们将算法工程化后,依照客满所提供的真实数据来进行现场效果测试,这里我们采用了客满部门所提供的投诉数据样本, 有效样本8000+, 人工验证结果1000条.对于真实数据的结果相似性查准率为100%, 查全率为: 87%。
五.未来的研究
通过本次实验我们所构建的系统能基本满足业务需求,希望系统将来能在业务上逐渐推广。虽然此次试验结果还算理想,但是在查询结果上还有很大的优化余地,比如在surf字典的优化构建上,字符串查询的匹配效率,和直方图向量的预聚类上。目前采用的两个特征都是对图像全局性质的描述,在图像的空间信息上有所欠缺,所以今后还将加入类似shapelet, shape context之类的形状外形信息,这样对于具有相似形状特征的图像能更好地进行查找发现。此外我们通过试验发现,图像的背景和图像中叠加的文字对图像有一定的干扰,所以在图像预处理上今后还作可以图像分割和文字检测等相关工作,进一步去除噪声找到真正感兴趣的区域。
一图抵万言,我们在图像处理方面的技术研究还可能将产生大量的副产品,在淘宝海量信息中图像是一类相当有潜在挖掘价值的信息。类似与surf字典所体现的图像语义信息,形状文字等图像内容信息都将是对文字外无结构化信息挖掘的一个很好的数据源补充。总之希望本项目能持续下去带动相关团队技术和业务的发展。
--
微信名称:阿里技术嘉年华
微信号:alibabatech
简介:传播原创高质量的技术内容