在你买买买的背后,AI图像算法都做些什么?
自 2013 年转型以来,蘑菇街电商平台历经了多次双 11 大促的洗礼。通常而言,大量的商家与商品参与双 11,用户规模相比平时也会剧增。今年双 11,蘑菇街还开辟了微信小程序作为新的支点,希望以此撬动新社交电商战略。平台为用户带来价值的关键是保障商品丰富、价格合理、服务可靠。在此背景下,有很多挑战需要在复杂的业务场景中去应对,其中包括:如何提高商品管理的效率,以及如何改善用户体验。在众多的技术和产品方案中,图像算法作为一项重要能力,运用于电商场景中,支持上述业务问题的改善。
随着深度学习的兴起,利用 CNN 提取图像特征,已成为图像检索领域的共识。商品图片类别众多、背景复杂,如何从丰富的图像信息中提取关键特征依然是很有挑战的问题。图像特征模块主要包含三个重要部分:数据清洗、特征模型设计、模型压缩。
利用 CNN 提取图像特征,关键在分类标签的定义。有文章(ICLR 2017: On the Limits of Learning Representations with Label-based Supervision)指出:模型提取特征能力的上限,不在数据集的大小,而在标签质量。因此,设计监督更强、质量高的标签,更有利于特征的表示。我们的商品标签有两个来源,一个是商品在类目体系中从属的类别,另一个是商家对商品的描述。数据清洗过程主要解决商家打标的标签和图像实际内容不符合的问题。利用自动化图像标签模块,可对商品图片自动打标,辅之以人工矫正。通过这种方式我们累积了数以千万计的样本图像数据,所涉及的标签 label 数目有几千种,从而构建了高质量的训练样本。
特征模型的设计以 ResNet(残差网络) 为基础,根据 ResNet 是浅层网络集成学习的思想(NIPS 2016: Residual Networks Behave Like Ensembles of Relatively Shallow Networks),我们通过设计不同尺度卷积核并拼接(Concat)在一起,提高了浅层网络的表达能力;同时适当控制深度,并改进 ResNet 中影响优化的 Shortcut 结构。试验证明网络的改进是有效的,改进后的网络在实际数据集合上的 top1 accuracy 是 61.8%,而传统的 ResNet-50 是 56.6%。
特征模型部署在 GPU 服务器上,为控制系统的整体响应时间,需要缩短特征提取的时间,因此要对深度学习网络模型进行压缩。压缩算法采用的是(ICLR 2017: Pruning Filters for Efficient ConvNets)所提到的剪枝策略。具体的做法是:针对每个卷积核计算其绝对值和,然后排序,针对绝对值小的权值和通道进行剪枝。流程中包括两个主要步骤:首先按照一定比例 (比如 10%) 进行压缩,然后进行模型的 fine-tunning 训练;两者交替迭代进行,直至模型精度的下降超过预设的目标,流程结束。最终我们所获得的特征模型在 GPU 卡 K40 上,单次特征抽取的时间在 40ms 内。鉴于搜索数据库数据量级很大,对每个查询都要计算所有的距离是非常困难的,同时存储数千万图片的高维残差网络特征向量需要耗费巨大的存储空间。为了解决这些问题,采用了近似最近邻算法中的局部优化的乘积量化算法(Product Quantization,PQ),训练得到粗量化质心和细量化质心,粗量化的结果用来建立倒排索引,细量化的结果用来计算近似距离。通过这种方法,既能保证图像索引结果的存储需求合理,也能使检索质量和速度达到更好的水平。
电商基础业务中,需要审核商家上传的商品图片。我们在实践中基于相似图像搜索技术,构建了同图识别系统。系统产出了全量图像数据的索引库,基于相似搜索引擎来查询商家图片是否为商品库中的相同图像。根据查询结果,结合业务规则,判断商品是否为同款。
蘑菇街 APP 上提供了搜相似商品的功能。如图所示,其过程是点击单个商品图像右下角的搜索图标,将与该图像相似的同类商品展现给用户。
图像标签技术的任务是通过图像算法,自动识别图片内容,如场景、风格、主体名称、颜色、图案等。通常来讲,在电商中对商品图片做图像标签的处理流程如图所示,其中所涉及到的技术模块简述如下。