热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UI2CODE系列文章|如何提高“小目标”检测准确率

背景  在计算机视觉领域,存在一个“小目标”检测任务,比如自动驾驶中的交通灯,或者医学图像中的早期肿块。“小目标”的正确检出能极大地提高用户体验,促进自动化行业的发展。UI2COD

背景

  在计算机视觉领域,存在一个“小目标”检测任务,比如自动驾驶中的交通灯,或者医学图像中的早期肿块。“小目标”的正确检出能极大地提高用户体验,促进自动化行业的发展。UI2CODE是闲鱼技术部推出的一个应用工具。通过对页面ui元素的自动解析并自动生成相关代码,UI2CODE能提高工程师的开发效率。ui元素的自动解析部分采用计算机视觉技术来识别ui元素的类别和位置,其作为整体流程的第一步决定了后续代码生成的准确性以及用户使用的体感。页面中存在的一些“小目标”ui元素,比如下图a)页面卡片中的价格组件和芝麻信用图标等,b)页面卡片中“三个点”表示的图标。还有其他一些小目标比如文字、特殊的符号也会出现在页面中,小目标漏检或者误检都会导致后续代码生成的错误。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

挑战

  根据coco数据集的定义,像素面积小于32×32的物体为小目标物体,像素面积介于32×32与96×96之间的物体为中目标物体,像素面积大于96×96的物体为大目标物体。小目标检测的挑战包括:

1. 类别不均衡。页面中小目标物体相对于其他中、大目标物体占比较少。类别不均衡的问题会导致模型训练过程中损失函数学到的信息更偏向占比多的中、大目标物体。

2. 特征丢失。基于深度学习的目标检测算法为了检测更多复杂的特征往往会加深或加宽网络,同时为了减少计算量以及增加位移不变特性,网络中常常增加池化层。池化层下采样过程不可避免地会丢失部分或者全部小目标特征信息。

3. 定位精度。模型预测框在有相同偏差时,偏差给小目标iou(预测框和标准框面积的交并比)带来的影响要比中、大目标iou带来的影响要大的多,因为小目标预测框只要偏移一点点,iou就降低很多。

小目标检测存在的挑战会导致模型检测结果精确率和召回率下降,具体评价指标上体现为mAP或mAR数值较低。

方案

流程

针对小目标检测存在挑战,采用如下方法来提高小目标的检测效果:

1)训练过程中对小目标进行数据扩充和增强

2)检测模型经历Faster RCNN到FPN到Cascade FPN的优化迭代

3)采用图像处理技术修正预测框位置

《UI2CODE系列文章|如何提高“小目标”检测准确率》

数据扩充

  页面中存在的类别不均衡问题会导致模型偏向于学习中、大目标特征,因此训练阶段扩充小目标的数据能有效地提高模型对于小目标的注意力,进而提升小目标在训练过程中对损失函数计算的贡献。数据扩充的方法是在包含小目标的图像中将所有小目标在任意随机位置复制粘贴多次,并且确保小目标粘贴的位置和其他已经存在的目标位置不会出现重叠,并且距离图像边界至少5个像素。粘贴的过程中可以对小目标进行增强,比如在尺度5%范围内进行缩放。下图中a)是原始图像,b)是对小目标”¥9.9″和”…”在任意不重叠位置复制黏贴了5次。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

模型优化

  深度学习的方法因为其强大的自动学习目标特征能力而成为目标检测领域的主流方法。一般的目标检测模型分成两个派系:以R-CNN家族为代表的两阶段网络和以YOLO、SSD为代表的一阶段网络。一阶段网络直接对预测的目标进行分类和回归,因此计算速度比较快,两阶段网络在对预测的目标进行分类和回归前需要先生成候选的目标区域,这样训练更容易收敛,检测结果更准确。
  不管是采用一阶段网络还是二阶段网络,模型一般都会包含有下采样的卷积层和池化层来提取图像的特征,下采样的存在会导致小目标部分或者全部特征丢失。下图显示的是我们最先开始尝试的Faster RCNN网络结构,主要分成2个部分:1)RPN(Region Proposal Network)部分。该网络用于生成候选目标框,其中前半部分是特征提取模块,使用一组基础的conv+relu+pooling层来提取并得到特征1到特征n,后半部分是先用特征n经过卷积操作生成特征头0,然后用特征头0去判断anchor是属于前景还是背景,并且通过回归去修正前景框的位置。2)fast rcnn部分。前景的候选框在特征n上经过roi池化操作映射到固定大小并送入后续全连接层,后续进一步计算这些候选框的具体类别,并且再次回归修正候选框的位置。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

  Faster RCNN使用的图像特征是经过多次下采样后特征n上的特征,容易造成小目标的漏检。在Faster RCNN的基础上采用了FPN(Feature Pyramid Network)网络。如下图所示,FPN在RPN部分会将不同层的特征1到特征n进行融合(图中没有画出),然后利用每一层的特征来进行分类和回归,后续部分也用每一层的特征进行特征roi池化操作以及分类和回归。相比于Faster RCNN只用高层的特征n,FPN充分利用了浅层的细节信息和高层的语义信息,更能准确地检测出小目标。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

  FPN利用多个层特征提高小目标检测效果,但并没有考虑预测框偏差导致的小目标iou定位精度问题。Faster RCNN或者FPN网络在RPN阶段根据设定的iou阈值来选取候选框,如果iou阈值过高,会导致候选框质量很高,但数量会很少,会出现模型过拟合现象;如果iou阈值较低,候选框的数量就会增加,但质量也会下降。因此选取好的iou,对于检测结果很重要。下图所示的Cascade FPN结构在FPN的基础上,从左至右增加了多个检测模块,通过iou阈值从小到大不断提高,在保证候选框数量的同时,也能使得候选框质量不下降。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

位置修正

  深度学习模型回归位置框时不可避免会产生偏差,尤其是对于小目标,位置框的偏差更加明显。UI2CODE要求位置能精确到1个像素级别,因此需要进行位置修正。简单背景下,采用前景投影的方法能获得精确的位置边界。具体做法为:

1)对图像进行高斯平滑减少噪声影响。

2)采用局部自适应二值化将前景提取出来。

3)目标初始位置框对应的二值化区域进行水平和垂直方向投影,找到左右上下最近的投影值不为0且标准差也不为0的位置,即为修正后的位置。
  下图a)为Cascade FPN检测出来的前景位置框,可以看到大部分位置框位置存在偏差,尤其是小目标“…”偏差比较大。b)图为位置修正后的位置框,大部分都修正到目标位置。当然对于一些复杂背景情况下的位置修正,采用前景投影的方法得到的结果会不准确,需要在前处理阶段进行复杂背景剔除。
《UI2CODE系列文章|如何提高“小目标”检测准确率》

效果

  上文分析了小目标检测存在的挑战,以及采用数据扩充、模型优化的策略来提高小目标的检测效果。当然作为通用检测模型,还需要同时关注整体的检测效果。
  当模型预测框和真实框之间iou大于设定的置信度阈值(比如0.5)时,认为预测框就是物体检测框,指标mAP和mAR是评判模型精确度和召回率的指标。模型使用的特征提取网络都是resnet101,表1显示的是设定置信度阈值从0.5到0.95不同值时小目标的结果指标,可以看出FPN和Cascade FPN都要优于Faster RCNN, FPN的mAP要高于Cascade FPN的mAP,FPN的mAR要低于Cascade FPN的mAR。表2显示的是设定置信度阈值等于0.5时所有目标的结果指标,可以看出Cascade FPN要优于FPN以及Faster RCNN。

《UI2CODE系列文章|如何提高“小目标”检测准确率》

展望

  小目标检测方法与其他复杂背景分析、布局分析等组成了UI2CODE页面ui元素自动解析的基础,另外上述方法也提供给淘宝D2C智能和自动化测试使用。未来进一步可以结合生成网络模型将小目标放大进行检测或者在位置修正时结合物体的类别信息从而得到更高精度的位置修正。

闲鱼团队是Flutter+Dart FaaS前后端一体化新技术的行业领军者,就是现在!客户端/服务端java/架构/前端/质量工程师面向社会招聘,base杭州阿里巴巴西溪园区,一起做有创想空间的社区产品、做深度顶级的开源项目,一起拓展技术边界成就极致!

*投喂简历给小闲鱼→guicai.gxy@alibaba-inc.com

《UI2CODE系列文章|如何提高“小目标”检测准确率》

《UI2CODE系列文章|如何提高“小目标”检测准确率》

开源项目、峰会直击、关键洞察、深度解读

请认准闲鱼技术


推荐阅读
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • 非计算机专业的朋友如何拿下多个Offer
    大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • CAS 机制下的无锁队列设计与实现 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
author-avatar
为佐殿回来而读书的天使
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有