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

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,视频通用资源包5000点
简介: 精准!

闲鱼技术-仝辉,深宇

引言:

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

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

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

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

处理流程:

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

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

样本生成:样本生成过程中使用的三种方法
模型选择:fpn + Cascade R-CNN

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

模块识别:识别页面中模块类别和位置
元素识别:基于模块的识别区域,识别内部元素
位置修正:通过传统图像的方式修正内部元素位置

模型训练:

样本制造:

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

image.png

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

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

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

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

模型选择:

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

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

image.png

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

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

image.png

模型识别:

模块识别:

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

image.png
image.png
识别的结果如下所示:
image.png
image.png

元素识别:

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

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

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

位置修正:

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

image.png
image.png

现有效果

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

      Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.982

      Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.989

      Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.984

      Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.989

      Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.423

      Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.986

      Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.993

      Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.993

      Average Recall (AR) @[ IoU=0.50 | area= large | maxDets=100 ] = 1.000

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

未来展望

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

相关文章
|
8月前
|
编解码 监控 安全
JT1078和GB28181差别在哪里?
JT1078和GB28181分别是针对车载监控和公共安全监控设计的标准协议。JT1078专注于车载视频监控,适用于物流与交通场景,强调实时传输、编解码支持及无线环境下的数据安全性;而GB28181侧重于大规模公共安全监控,覆盖城市安防等领域,支持多协议交互与级联方案。两者在技术上有交集,需通过中间件实现互联互通,各有独特优势以满足不同需求。
334 8
|
8月前
|
存储 编解码 监控
Android平台GB28181执法记录仪技术方案与实现
本文介绍了大牛直播SDK的SmartGBD在执法记录仪场景中的应用。GB28181协议作为视频监控联网的国家标准,为设备互联互通提供规范。SmartGBD专为Android平台设计,支持音视频采集、编码与传输,具备自适应算法和多功能扩展优势。文章分析了执法记录仪的需求,如实时音视频传输、设备管理及数据安全,并详细阐述了基于SmartGBD的技术实现方案,包括环境准备、SDK集成、设备注册、音视频处理及功能扩展等步骤。最后展望了SmartGBD在未来智慧物联领域的广阔应用前景。
380 13
|
机器学习/深度学习 人工智能 计算机视觉
带你读《深度学习与图像识别:原理与实践》之一:机器视觉在行业中的应用
这是一部从技术原理、算法和工程实践3个维度系统讲解图像识别的著作,由阿里巴巴达摩院算法专家、阿里巴巴技术发展专家、阿里巴巴数据架构师联合撰写。在知识点的选择上,本书广度和深度兼顾,既能让完全没有基础的读者迅速入门,又能让有基础的读者深入掌握图像识别的核心技术;在写作方式上,本书避开了复杂的数学公式及其推导,从问题的前因后果 、创造者的思考过程,利用简单的数学计算来做模型分析和讲解,通俗易懂。更重要的是,本书不仅仅是聚焦于技术,而是将重点放在了如何用技术解决实际的业务问题。
|
4月前
|
数据采集 Web App开发 数据可视化
Python爬取闲鱼价格趋势并可视化分析
Python爬取闲鱼价格趋势并可视化分析
|
8月前
|
人工智能 监控 Linux
基于大牛直播SDK的无纸化同屏会议与智慧教室技术方案
本文探讨了利用大牛直播 SDK 打造无纸化同屏会议与智慧教室系统的技术方案。SDK 具备跨平台兼容性、超低延迟等优势,支持 RTMP 推流播放、RTSP 直播播放及多路流媒体转发等功能,满足实时互动需求。文章详细介绍了两种场景的系统架构与功能实现,并总结其技术优势,展望未来结合 AI 等技术的发展前景,推动现代办公与教育智能化升级。
164 7
|
8月前
|
存储 人工智能 监控
大牛直播SDK在四足机器人和无人机巡检中的创新应用方案
在工业4.0和智能化浪潮下,传统巡检方式正经历深刻变革。四足机器人与无人机凭借灵活机动性和高效巡检能力崭露头角,而大牛直播SDK则赋予其实时直播与智能互动功能。本文介绍大牛直播SDK的核心优势、在四足机器人和无人机巡检中的应用方案,以及技术实现要点和未来展望,展示智能巡检的广阔前景。
232 6
|
8月前
|
编解码 监控 开发工具
H.264语法结构分析之frame_cropping_flag
本文深入探讨了H.264标准中的`frame_cropping_flag`,一个常被提及却易被误解的概念。该标志用于指示解码后图像是否需裁剪,通过四个裁剪偏移量参数调整分辨率。文章分析了其在视频转码、流处理及编辑中的应用,并讨论对视频质量的影响,如内容完整性、分辨率调整和传输效率。合理设置此参数可优化视频适配与播放体验,但需注意兼容性问题。最后强调,理解音视频协议框架对开发高质量播放器至关重要。
184 9
|
8月前
|
算法 编译器 C++
C++20之2025年上桌我坐哪里?
C++20是C++语言的一次重大更新,引入了模块、协程、概念、范围等革命性特性。相比老版本,它显著提高了开发效率、增强了代码可读性和可维护性,并通过优化编译和运行性能提升了整体表现。这些改进推动了现代C++编程范式的发展,帮助开发者应对复杂软件工程挑战。文章回顾了C++发展历程,详细分析了C++20的新特性及其优势,展望了其未来潜力。
282 1
|
存储 Prometheus 监控
服务搭建篇(一) 搭建基于prometheus + node_exporter + grafana + Alertmanager 的监控报警系统 , 保姆级教程
Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将它们路由到正确的接收器集成,如电子邮件、PagerDuty或OpsGenie。它还负责静音和抑制警报
688 0
|
机器学习/深度学习 运维 搜索推荐
机器学习中准确率、精确率、召回率、误报率、漏报率、F1-Score、AP&mAP、AUC、MAE、MAPE、MSE、RMSE、R-Squared等指标的定义和说明
在机器学习和深度学习用于异常检测(Anomaly detection)、电子商务(E-commerce)、信息检索(Information retrieval, IR)等领域任务(Task)中,有很多的指标来判断机器学习和深度学习效果的好坏。这些指标有相互权衡的,有相互背向的,所以往往需要根据实际的任务和场景来选择衡量指标。本篇博文对这些指标进行一个梳理。
机器学习中准确率、精确率、召回率、误报率、漏报率、F1-Score、AP&mAP、AUC、MAE、MAPE、MSE、RMSE、R-Squared等指标的定义和说明