详解阿里99大促活动页内容识别技术实现

2019 年 9 月 16 日 云栖社区

作者 闲鱼技术-仝辉,深宇


引言


淘宝99大促今年会有天猫,淘宝和聚划算全员参与,有上千个页面形式的展现。其中,测试是保障活动页面的正常发布的一个必不可少的关键环节。

传统的测试方法,需要测试人员去分析这个页面是否正常生成,以及是否实现正常地跳转等。这样通常会占用大量的测试资源。那么能否利用机器学习等相关技术为测试赋能呢?

带着这个问题,我们分析了页面的特性。经过分析后发现页面具有高度的相似性,很多模块是复用的。因此,可以利用机器学习去学习模块特征,进而达到识别这些模块的目的。最终,我们实现了对淘宝99大促几十个活动页模块的自动识别。

具体的模型训练和模型识别部分会在下一章节“处理流程”中详细介绍。


处理流程


深度学习技术通常由两部分构成:模型训练和模型预测。

深度学习通常是有监督学习的方式,因此在模型训练环节中,需要输入训练样本,“告知”它输入和输出是什么。此外,我们还需要选择合适的深度学习网络来训练。相关细节会在后续两个小节中详细描述:


  • 样本生成:样本生成过程中使用的三种方法

  • 模型选择:fpn + Cascade R-CNN


在模型预测环节,由于页面内容理解部分不止需要识别模块,还需要识别模块内部的元素。此外,受限于目标检测模型本身的局限性,会导致识别出来的位置没法达到像素级别的精确性,因此需要对位置做修正。为了近一步提高准确度,本文引入了位置修正模块。因此,本文的模型预测分为如下三个部分做介绍:


  • 模块识别:识别页面中模块类别和位置

  • 元素识别:基于模块的识别区域,识别内部元素

  • 位置修正:通过传统图像的方式修正内部元素位置


模型训练


样本制造


样本制造我们演进了三个版本:



第一个版本是手动打标,基于labelImg等标注工具进行标注。这种打标方式的缺点是需要投入较多的人力资源,且无法满足未上线页面的打标。

第二个版本是模型辅助打标,也就是先训练一个初始可用的模型,然后利用模型预测结果对模型进行初始标注,对不正确的地方作修改,可以不断地迭代优化模型。这种打标方式的缺点是无法满足未上线页面的打标。

第三个版本是自动打标,分析H5页面的代码生成布局DSL,然后通过替换属性的方式自动生成相关代码。这种打标方式的优点是可以解决上述两个版本中“无法满足未上线页面打标”的问题。这种方法也是本文中采用的主要方法。

本文,主要使用了第三种方式去生成训练数据,第一种和第二种更加真实的方式生成验证数据,达到生产环境准确验证的目的。


模型选择


淘宝99大促活动页需要识别活动页里面有哪些页面模块,且需要知道模块所在的位置。而深度学习的目标检测模型可以在给定的图片中精确找到物体所在位置,并标注出物体的类别。

考虑到对坐标位置和类别有很高的召回率和准确率的要求(IOU0.5:0.95的召回率和准确率都要达到95%以上),本文使用了精度更高的Cascade-RCNN网络。



主流的目标检测模型Faster-RCNN的缺点是RPN的proposals大部分质量不高,IOU低阈值会导致很多误检出,而高阈值会导致召回率过低。针对这个问题,Cascade-RCNN使用cascade回归作为一种重采样的机制,逐层提高proposal的IoU值,从而使得前一层重新采样过的proposals能够适应下一层的更高阈值。这样做的好处是:每个阶段都有不同的IoU阈值,可以更好地去除离群点,适应新的proposal分布。

针对识别模块大小不一这种情况,我们在卷积特征提取网络加入了特征金字塔结构,均衡了不同尺度模块的检出数量(对小模块提升尤为明显),进而提高了召回率和准确率。网络结构如下图所示:



模型识别


模块识别


在本期的淘宝99大促中,我们支持了28个模块的识别,类似的模块如下:



识别的结果如下所示:


元素识别


由于页面内容理解部分不止需要识别模块,还需要识别模块内部的元素。如下图所示,我们不仅要识别七巧板模块,也需要识别内部元素的会场导航和商品导航模块。



本文考虑到这两种元素也会在页面中单独出现,采用了Coarse-to-Fine的架构:首先识别七巧板模块,然后通过另一个目标检测网络去识别内部元素。



识别的最终结果如下图所示:



位置修正


由于目标检测模型本身的局限性,会导致没法达到像素级别的精确性,因此需要对位置做修正。为了近一步提高准确度,采用计算公式如下:



现有效果


本篇我们基于FPN+Cascade网络去预测淘宝99大促模块,在验证集近千张的样本量的情况下,采用了coco的验证标准,达到了如下的准确率:


由上面的数据我们可以知道,页面和相应元素识别的召回率和准确率达到了98%左右,满足了识别精度的要求。此外,该流程符合Coarse-to-Fine的架构(由粗粒度到细粒度),对于相类似的问题也可以采用该方法处理。


未来展望


我们后续会尝试将本文的方法推广应用到更多的业务场景中去,例如双十一活动页模块识别等。由于本文的方法相对耗时(GPU机器几百毫秒级别),后续会在效果和效率的均衡上作更多的尝试。也希望大家能够关注我们后续的系列文章。


更多精彩

研发效能提升 36 计第一篇:互联网时代研发效能的挑战和应对之道

消灭 Java 代码的“坏味道”



如果觉得本文还不错,点击在看一下!
点此进入查看闲鱼技术更多好文
登录查看更多
0

相关内容

最新《多任务学习》综述,39页pdf
专知会员服务
258+阅读 · 2020年7月10日
最新《自然场景中文本检测与识别》综述论文,26页pdf
专知会员服务
68+阅读 · 2020年6月10日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
姿势服装随心换-CVPR2019
专知会员服务
34+阅读 · 2020年1月26日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
67+阅读 · 2020年1月17日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
【阿里技术干货】知识结构化在阿里小蜜中的应用
专知会员服务
95+阅读 · 2019年12月14日
 图像内容自动描述技术综述
专知会员服务
84+阅读 · 2019年11月17日
知识图谱的行业落地实现
竹间智能Emotibot
51+阅读 · 2019年9月16日
【知识图谱】基于知识图谱的用户画像技术
产业智能官
101+阅读 · 2019年1月9日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
【下载】PyTorch 实现的YOLO v2目标检测算法
专知
15+阅读 · 2017年12月27日
深度学习CTPN算法的解读与tensorflow实现
数据挖掘入门与实战
5+阅读 · 2017年11月30日
微信OCR(1)——公众号图文识别中的文本检测
微信AI
17+阅读 · 2017年11月22日
揭秘人脸识别的十大关键技术
全球创新论坛
6+阅读 · 2017年9月6日
基于深度学习的视频内容识别
计算机视觉战队
10+阅读 · 2017年8月18日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Teacher-Student Training for Robust Tacotron-based TTS
Arxiv
13+阅读 · 2018年4月18日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
最新《多任务学习》综述,39页pdf
专知会员服务
258+阅读 · 2020年7月10日
最新《自然场景中文本检测与识别》综述论文,26页pdf
专知会员服务
68+阅读 · 2020年6月10日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
姿势服装随心换-CVPR2019
专知会员服务
34+阅读 · 2020年1月26日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
67+阅读 · 2020年1月17日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
【阿里技术干货】知识结构化在阿里小蜜中的应用
专知会员服务
95+阅读 · 2019年12月14日
 图像内容自动描述技术综述
专知会员服务
84+阅读 · 2019年11月17日
相关资讯
知识图谱的行业落地实现
竹间智能Emotibot
51+阅读 · 2019年9月16日
【知识图谱】基于知识图谱的用户画像技术
产业智能官
101+阅读 · 2019年1月9日
一个小例子带你轻松Keras图像分类入门
云栖社区
4+阅读 · 2018年1月24日
【下载】PyTorch 实现的YOLO v2目标检测算法
专知
15+阅读 · 2017年12月27日
深度学习CTPN算法的解读与tensorflow实现
数据挖掘入门与实战
5+阅读 · 2017年11月30日
微信OCR(1)——公众号图文识别中的文本检测
微信AI
17+阅读 · 2017年11月22日
揭秘人脸识别的十大关键技术
全球创新论坛
6+阅读 · 2017年9月6日
基于深度学习的视频内容识别
计算机视觉战队
10+阅读 · 2017年8月18日
Top
微信扫码咨询专知VIP会员