精华内容
下载资源
问答
  • 钢铁缺陷检测挑战赛
    2021-12-07 20:44:03

    钢铁缺陷检测挑战赛

    网址:https://aistudio.baidu.com/aistudio/competition/detail/114/0/introduction

    1.比赛介绍

    1.1练习赛简介

    飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发功能丰富开源开放产业级深度学习平台。

    飞桨练习赛由百度飞桨于 2019 年发起,面向全球 AI 开发者,旨在通过发布AI细分领域的经典比赛项目,为开发者提供学习锻炼机会,助力大家快速入门深度学习,持续积累技术经验,逐步实现技能提升。

    参赛选手需使用飞桨框架,基于特定赛题下的真实行业数据完成并提交任务。

    1.2赛题介绍

    缺陷检测技术广泛应用于工业场景,比如汽车制造中的车身表面缺陷检测零件外观缺陷检测工件裂纹检测等。其中,金属表面缺陷识别技术的应用可以在生产及制造阶段的质量控制方面发挥重要作用。

    本次比赛为图像目标识别比赛,要求参赛选手基于给定图像建立模型识别出钢铁表面出现缺陷的位置,并给出锚点框的坐标,同时对不同的缺陷进行分类。通过本次比赛,我们希望看到各种泛化性能更好且更稳定的钢铁表面缺陷识别模型,您的工作也将为传统钢铁产业生产效率的提升做出重要贡献。

    1.3赛程赛制

    (1)飞桨练习赛面向全社会公开报名,直至赛题下线;

    (2)飞桨练习赛不设初赛、复赛,以每位参赛选手提交的最优成绩排名;
    (3)比赛期间选手每天最多可提交 5 次作品(预测结果+原始代码),系统自动选取最高成绩作为榜单记录;
    (4)榜单排名前10 且通过代码复查的选手可获得由百度飞桨颁发的荣誉证书
    (5)鼓励选手报名多个主题的飞桨练习赛飞桨常规赛以赛促学,全方面提升开发者的深度学习能力。

    1.4 参赛方式

    本次比赛面向全社会开放,不限年龄、身份、国籍,相关领域的个人、高等学校、科研机构、企业单位、初创团队等人员均可报名参赛。

    1.5参赛要求

    (1)仅支持个人参赛(组队功能上线后对本条规则无影响);
    (2)参赛选手报名必须保证提供的个人信息真实、准确、有效。如发放奖金或礼品时发现选手填写的报名信息与个人身份不相符,组委会将保留停止发放奖金或礼品的权利;
    (3)本次比赛要求选手使用 飞桨 PaddlePaddle 2.0 及以上版本 生成端到端深度学习模型,所有参赛选手可无限使用 AI Studio 平台提供的训练资源;
    (4)参赛队伍命名中不可出现 “飞桨官方”,“Paddle官方”,“官方baseline” 等字样,否则成绩自动取消。

    1.6 参赛报名

    (1)注册百度账号并登录 “百度飞桨 AI Studio”—“比赛”—“新人练习赛”—“XXX” 路径报名。若已有百度账号,只需在线完善相关信息即可完成报名;
    (2)百度飞桨 AI Studio 是基于百度深度学习平台飞桨的一站式 AI 开发实训平台,提供在线编程环境免费 GPU 算力海量开源算法开放数据,帮助开发者快速创建和部署模型。登录 AI Studio 查看更多内容。

    1.7 免费算力

    百度飞桨 AI Studio 为选手提供了免费的Tesla V100 GPU算力:

    (1)每日登录送算力。每天登录 AI Studio 并运行 Notebook 项目,当天即送8点GPU算力(每天最多16h,每周最多112h,当天有效)。点击学习后台任务运行教程;
    (2)完成新手引导获算力。新用户点击完成简单四步操作,即可领取 100 点 GPU 算力(最多200h,有效期90天),每个ID仅一次机会;
    (3)分享好友赢算力。点击 “个人主页”—“算力卡管理”—“分享赢算力”,即可通过邀请好友获得10点GPU算力(最多20h)。

    2.赛题说明

    2.1 赛题介绍

    ​ 本次比赛为图像目标识别比赛,要求参赛选手基于给定图像建立模型,识别出钢铁表面出现缺陷的位置,并给出锚点框坐标,同时对不同的缺陷进行分类。通过本次比赛,我们希望看到各种泛化性能更好且更稳定的钢铁表面缺陷识别模型,您的工作也将为传统钢铁产业生产效率的提升做出重要贡献。

    2.2 数据集介绍

    本数据集来自NEU表面缺陷检测数据集,收集了6种典型的热轧带钢表面缺陷,即氧化铁皮压入(RS)、斑块(Pa)、开裂(Cr)、点蚀(PS)、夹杂(In)和划痕(Sc)。

    下图为六种典型表面缺陷的示例,每幅图像的分辨率为200 * 200像素。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7xIgiay-1638881036117)(C:\Users\whd\AppData\Roaming\Typora\typora-user-images\image-20211207201438763.png)]

    从图中可以清楚地看出,不同类别缺陷之间存在差异,比如斑块开裂、****点蚀等;相同类别的缺陷内部也存在差异,比如划痕缺陷,可以是水平划痕、垂直划痕、倾斜划痕等。此外,由于受到光照和材料变化的影响,相同缺陷类别的图像,灰度也可能不同。

    2.3数据说明

    本赛题数据集提供了缺陷类别位置标注

    下图为缺陷检测结果示例。对于每个缺陷黄色框代表位置的边界框蓝色标签类别分数

    数据来源:http://faculty.neu.edu.cn/yunhyan/NEU_surface_defect_database.html

    特别感谢:东北大学宋克臣教授为本次比赛提供可开放使用的表面缺陷检测数据集

    3.提交结果

    3.1 提交方式

    1.请上传结果文件

    2.若有工作人员联系您上传源文件,才需上传

    3.2 提交内容及格式

    1. 结果文件命名:submission.csv(否则无法成功提交)
    2. 结果文件格式:.csv(否则无法成功提交)
    3. 结果文件内容:submission.csv结果文件需包含多行记录,每行包括4个字段,内容示例如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAN4FHRQ-1638881036118)(C:\Users\whd\AppData\Roaming\Typora\typora-user-images\image-20211207201804913.png)]

    各字段含义如下:

    • image_id(int): 图片id
    • bbox(list[float]): 检测框坐标(XMin, YMin, XMax, YMax)
    • category_id: 缺陷所属类别(int),类别对应字典为:{‘ crazing’:0,’inclusion’:1, ’pitted_surface’:2, ,’scratches’:3,’patches’:4,’rolled-in_scale’:5}
    • confidence(float): 置信度

    备注: 每一行记录1个检测框,并给出对应的category_id;同张图片中检测到的多个检测框,需分别记录在不同的行内。

    3.3 提交方式

    1. 结果文件提交:选手需点击本页面上方的**「结果文件」按钮框**,提交**.csv格式** 的结果文件。平台在线评分,并实时排名;
    2. 毎个参赛队伍每天最多可以提交5次在线评测,提交额度用尽后,当日无法再提交;
    3. 参赛者历史提交结果将在本页下方展示,但排行榜页内仅显示该参赛者历史最佳成绩(如果新提交结果好于之前提交结果,该参赛者在排行榜中成绩将自动进行更新覆盖。反之,排行榜中成绩保持不变)。

    3.4 提交注意事项

    1. 本次比赛要求参赛者必须使用飞桨(PaddlePaddle)深度学习框架训练的模型提交结果;
    2. 自动评审规则:每支队伍每天参与评测的提交次数不超过5次,排行榜将按照评测分数从高到低排序,并且实时更新。排行榜中只显示每支队伍历史提交结果的最高成绩,各支队伍可在提交结果页面的个人成绩中查看历史提交记录。

    3.5 评价指标

    • 本次图像目标识别比赛的评价指标为mAP,使用VOC2010以后提出的标准。

    • AP总结了插值平滑后的Precision - Recall曲线形状,并定义为一组11个等距召回级别的平均精度。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gu7W5dNj-1638881036118)(C:\Users\whd\AppData\Roaming\Typora\typora-user-images\image-20211207202139401.png)]

    4.数据集介绍

    4.1 赛题数据集

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sw4Ijq0Q-1638881036119)(C:\Users\whd\AppData\Roaming\Typora\typora-user-images\image-20211207202223462.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZIFtaGZ-1638881036119)(C:\Users\whd\AppData\Roaming\Typora\typora-user-images\image-20211207202231748.png)]

    4.2 赛题基线

    本场比赛基线由飞桨比赛达人笠雨聆月提供,
    点击查看完整基线项目。


    (基线)基于PaddleX的钢铁缺陷检测挑战赛实现方案

    该程序是基于PaddleX快速上手-YOLOv3目标检测,实现的钢铁缺陷检测挑战赛的目标识别代码。需要注意的是PaddleX已经推出2.0

    该程序是基于PaddleX快速上手-YOLOv3目标检测,实现的钢铁缺陷检测挑战赛的目标识别代码。需要注意的是PaddleX已经推出2.0

    更多相关内容
  • 缺陷检测开源工具

    2021-07-01 12:13:29
    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第时间送达 本文转自|AI算法与图像处理、DEye下载链接:https://github.com/sundy...

    点击上方“小白学视觉”,选择加"星标"或“置顶

    重磅干货,第一时间送达
    
    

    本文转自|AI算法与图像处理

    一、DEye

    下载链接:

    https://github.com/sundyCoder/DEye

    介绍:Defect Eye是一个基于tensorflow1.4的开源软件库,主要用于表面缺陷检查。该应用领域涵盖了制造环境中的各种应用,包括加工工具鉴定,晶圆鉴定,玻璃表面鉴定,掩模版鉴定,研发以及工具,过程和生产线监控。图案化和非图案化的晶圆缺陷检查和鉴定工具可在晶圆的前表面,后表面和边缘上发现颗粒和图案缺陷,从而使工程师能够检测和监控关键的良率偏移。此外,它还可用于医学影像检查,包括肺PET / CT,乳腺MRI,CT结肠造影,数字化胸部X射线图像。

                                                 

    二、A toolbox for surface defects saliency detection(表面缺陷显着性检测)

    下载链接:

    https://github.com/abin24/Saliency-detection-toolbox

    该工具箱中包含14个检测模型,分别是:

    1、视觉注意机制的ITTI和BMS;

    2、基于全局颜色稀疏度的FT,LC和HC;

    3、基于局部颜色稀疏度的AC和MSS;

    4、基于频域分析的SR,Rudinac和PHOT;

    5、基于区域或超像素对比度的RC,SF和GMR;

    6、基于快速的最小障碍距离转换MBP。

    该模型运行速度快,易于移植,仅在Opencv上使用。

    三、基于PCB的缺陷检测

    代码链接:

    https://github.com/Ixiaohuihuihui/Tiny-Defect-Detection-for-PCB

    代码介绍:主要针对PCB的六类缺陷(缺失孔,鼠标咬伤,开路,短路,杂散,伪铜)的检测,分类和配准任务。

    上述内容,如有侵犯版权,请联系作者,会自行删文。

    下载1:OpenCV-Contrib扩展模块中文版教程

    在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

    下载2:Python视觉实战项目52讲

    在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

    下载3:OpenCV实战项目20讲

    在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

    交流群

    欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

    展开全文
  • 基于AI深度学习的缺陷检测系统

    千次阅读 2022-01-06 18:21:55
    深度学习技术在工业装备检测系统的实现步骤 步骤1:准备阶段,样本采集。目标缺陷都分布在目标样本中,此时,需要对样本分类进行图片采集。一般在采集的同时通过图像定位,使样本保持在同样的位姿。东莞市精驰技术...

    1. 基于AI深度学习的工业缺陷检测现状

           在工业生产中,由于生产和运输环境中的不可控因素,很容易产生划痕、压伤、擦挂等缺陷。而其中的缺陷大部分都极其微小,甚至是肉眼难以识别,这些缺陷所造成的坏品率极大的制约了工业界的发展。在中国制造业转型升级的过程中,产品质量要销往欧美等发达国家,让产品更具竞争力,必然要求不良品不能最终出现在成品中。一方面,如果能提前发现不良的部件,提前排除,那就能打造成本优势,另一方面,人工检测一般在强灯光或者显微镜的工作环境中,人容易疲劳,容易误判,对经验要求高,现在大部分工厂并不容易找到检测工人,各种因素驱动之下,全自动智能化的外观检测,催生了庞大市场需求。然而,很多工厂都还是刚从人工转视觉,市场潜力无限。

    图1  电池产线人工在做外观缺陷检测

            除去人工检测外,使用机器视觉技术进行缺陷检测是最为常见的做法,而机器视觉中需要依赖硬件模块和软件模块两个部分。硬件模块中最主要的功能是图像采集,软件模块主要负责图像的处理,分析和检测功能。 机器自动外观检测一般都采用传统视觉算法方法,主要包括面积分析、颜色抽取、差异对比、灰度分析、Blob计算等,然而这些方法对被检对象依赖较大,并且存在检测效率低、误检率高、不同目标需要针对性编码等问题。 随着深度学习图像检测技术的发展,尤其在自动提取特征和实现端到端检测方面表现出良好的性能,使得深度学习网络可以准确且快速地从图像中识别目标,并且具有较强的鲁棒性。 因此,基于深度学习的图像检测技术在缺陷检测领域得到越来越多的重视。

    图2  屏幕生产线人工在做外观缺陷检测

           传统方法中图像分析主要是利用图像本身的特点,人工的进行图像特征选择或特征提取,现在可以使用的图像处理算法有很多,像 Open CV 库和 HALCOM 算法包中就有许多高效的图像处理和特征提取算法。比如对数据去噪后,可以利用 Open CV 中的边缘检测算法对图像边缘进行定位和检测。通过差分、微分等方法找到符合特征的边缘信息,然后通过一些手动设计好的特征提取算法,对这些信息进行匹配,找到符合缺陷特征的信息,进而完成缺陷的检测。 

           深度学习中的图像分析相比需要人工提取特征的传统方法操作起来就比较简单,其主要依靠深度学习算法训练出的模型,检测时,模型会根据训练过程中自动学习到的模型特征,对图像利用卷积操作进行特征提取得到的图像特征进行检测判断,然后给出“他”的判断结果。在使用深度学习的过程中,省去了人工图像处理,提取特征的操作,由深度卷积神经网络代替人来完成这些操作,而且针对复杂的特征,卷积神经网络在这些工作上会比人完成的更加出色。  

    2. 工业应用少样本的深度学习技术

           深度学习近年来应用效果越来越好,很大程度上依赖于在当前信息时代中对大数据的应用。比如疫情当下,很多小区为了加强对控制出入小区的门禁的管理,使用了应用广泛的人脸识别设备,甚至使用了针对戴口罩人脸的检测,希望可以让住户不摘口罩就可以被识别,而这样的设备要想使效果满足日常使用需求,需要服务端的算法中有训练得当的模型的支持,这样的模型就需要大量的人脸数据来喂养。相对来说,人脸数据算是比较好收集和标记的,只要在人流量大的区域架设采集设备,一天就可以采集成千上万张人脸照片,对于人脸照片,普通的标记工作人员就可以完成质量比较好的标记。但是工业生产的场景中,良率都比较高,且被检测目标的专业性,需要更专业的人员才能判断出缺陷内容,也无法满足大量的缺陷样本的采集工作。由于样本数量太少,训练模型时出现过拟合问题。因此分析目标检测中典型算法的优劣势,需要提出灵活的模型网络的缺陷检测算法框架,用于解决少样本学习过程中模型过拟合的问题。 

     图3  电池盖帽典型的缺陷类型(1)

      图4  电池盖帽典型的缺陷类型(2)

    3. 深度学习技术的应用分类

          目前工业领域笔者见过的实际应用深度学习技术在生产线正常良好工作的,以美国康耐视的Vidi深度学习软件居多。主流的halcon开发应用者,由于halcon缺乏完善的标注训练工具,导致几乎市场上不存在基于halcon的深度学习的工业现场实际应用。

                                                        图5  Vidi 深度学习工具软件

             至于所谓的百度飞桨和华为等大厂的国产深度学习算法包,笔者判断,或许开源的深度学习算法包好用,但是真正的情况的是,工业上鲜有落地,所谓的开源深度学习标注软件更是一堆鸡毛,根本无法商业化。因为一套完善的机器视觉检测设备,他是一整套集成化的产品,包括了运动控制、人机界面、数据管理、机器视觉(传统)、机器视觉(AI)、机械设计、电气部分、生产组织管理等因素。不仅仅只是解决了AI算法问题,就能把机器做出来,或者做好,他是一系列专业性能力的集合,然后某些细分领域的检测设备,毕竟数量少,不能像汽车那样大规模应用而获得资本大规模投入,吸引大量高素质人才进入。自动化设备其实是专业性很强的领域、在技术门槛很高、收入待遇平平的时候,是难以吸引大量985大学等顶尖人才加入。毕竟Vidi标注训练工具很贵,针对市场上的深度学习标注训练测试一体化的工具缺乏的情况。我公司 东莞市精驰技术有限公司 自主研发了一款能满足深度学习要求的标注训练测试一体化工具,简单易用。

            图5    东莞市精驰技术有限公司的MindWorks.AI工具软件(深度学习标注训练测试一体化)

            MindWorks.AI具备项目管理、目标生成、图片管理、标注缺陷、种类分类、划分、训练和测试评估一体化的深度学习工具软件。

            言归正传,深度学习的应用分类,主要是4类:1、目标识别;2、缺陷分割(语义分割)3、目标分类;4无监督学习。

           1、目标识别。就是识别目标的位置,在工业领域,一般情况下不需要使用,笔者认为用传统的匹配定位或者卡尺等特征定位准确度更高。

                                   图6    东莞市精驰技术有限公司的图像目标识别定位软件

           2、缺陷分割(语义分割)。这个是重点内容。就是训练后,深度学习将目标缺陷分割出来。标注的越准确,分割的结果越好。

                                  图7    东莞市精驰技术有限公司的MindWorks.AI工具软件缺陷标注界面

                                    图8    基于精驰技术MindWorks.AI工具软件训练后的缺陷分割效果

           3、目标分类。此类方法,将不同类型的目标筛选出来,或者将不同的缺陷进行分类,然后将缺陷目标找到。分类是深度学习速度最快,准确度最好的。深度学习最有优势的地方也是如此。

                              图9    基于精驰技术MindWorks.AI工具软件的分类训练

     一般情况下,标注工具需要将目标调整到一致的位姿后,加掩膜,只保留目标区别区域,再训练,效果会很好。基于深度学习的分类算法,如上图所示,只有1个点的区别的模穴号混料筛选,准确度可以达到99.8%以上。效果非常好。

           4、无监督学习。此类方法,是针对难以找到NG样品的时候,就训练OK样本。如果单单去理解专业术语无监督,可能让读者懵逼。一言以蔽之,就是训练好物料,训练后,在运行时候实际物料与之判断,不重合的地方越多,差异越多,有个面积阈值,用来判断NG。类似于差异模板。

                                   图10    基于精驰技术MindWorks.AI工具软件的无监督学习训练

                               图11    基于精驰技术MindWorks.AI工具软件的无监督学习训练结果

    3、深度学习技术在工业装备检测系统的实现步骤

    步骤1:准备阶段,样本采集。目标缺陷都分布在目标样本中,此时,需要对样本分类进行图片采集。一般在采集的同时通过图像定位,使样本保持在同样的位姿。东莞市精驰技术有限公司(东莞市精驰软件有限公司)针对这一环节专门开发了采集纠正姿态的软件。

    步骤2:准备阶段,样本训练。将采集的样本导入到工具软件进行标注划分和训练。东莞市精驰技术有限公司(东莞市精驰软件有限公司)针对这一环节专门开发了一体化的工具软件MindWorks.AI

    步骤3:准备阶段,导入训练模型结果到运行软件。将有了标准的训练划分标注软件,就可以可视化的得到训练结果,然后生成结果之后,就可以导入到目标运行软件,以待实际工作使用。

    图12    精驰技术有限公司开发的检测运行系统

             精驰技术有限公司开发的检测运行系统,可最大支持12个黑白/彩色相机同时工作,具备缺陷存档、统计报表、深度学习模型导入、运行执行判断等动能,容易使用,而且方便。

                                        图13    精驰技术Inspect运行软件的深度学习模型导入窗口

    步骤2:运行阶段,实现目标ROI定位。目标ROI就是需要进行检测分析的地方,定位ROI的方式有很多种,包括深度学习本身就可以做ROI目标检测,传统的方式,主要包括Blob分析,找圆,找方,找Mark点,模板匹配等。精驰技术根据团队多年的应用经验,推荐使用模板匹配进行精确定位ROI。

    步骤3:运行阶段,调用深度学习模型。目标ROI找到之后,将该ROI直接应用深度学习模型即可得到结果。对于分类而言,结果是不同类型的分数的列表,可以设置一个阈值判断即可;对于缺陷分割而言,就是分割出来的缺陷位置,将他显示出来,可以这是一个面积阈值来判定OK和NG;对于无监督学习而言,也是用面积表征缺陷位置,设置一个面积阈值判断OK和NG即可。

    4、深度学习技术的工业装备检测系统效果展示

           深度学习是个好技术,也确实能解决一些问题,但是不要指望他能解决一切问题,毕竟一套检测系统、一台检测设备,都是光学、运动控制、摄像机标定、预处理、人机界面、数据系统、机械、电气、组织管理等一系列要素的集合。就像木桶原理一样,任何一块有短板,这个产品都是做不出来的,抑或是不稳定的。毕竟深度学习也就是产品的算法一环而已,仅此而已。只不是方法先进一点罢了。

    图13    精驰技术MindWorks.AI 深度学习在印刷目标的识别效果

    图14    精驰技术MindWorks.AI 深度学习在划痕目标的识别效果

                              图15    精驰技术MindWorks.AI 深度学习在PCB光板的识别效果

     5、最后

           最后最后,若您有更好的项目,我们可以一起评估,一起合作,合作共赢。如果您有其他见解,不妨联系我们一起交流学习。  

    展开全文
  • 智能测试实践之路-UI 缺陷检测

    千次阅读 2022-03-27 20:45:46
    我们在一个正常的截图上说明构建的方法: 挑选一个文字区域,通过 ocr 结合 CV 的方法确认文字区域,获取 “京东会员” 文字区域坐标集合,利用该集合在原图上获取文字的背景和颜色,计算字号,再通过图形处理能力...

    篇幅较长,请大家耐心看完,建议收藏慢慢看,另外文末给大家准备了面试资料(学习资料加面试题等),需要自取!

    背景

    随着业务与技术的发展,软件架构从最初单体结构逐步演变成 AI 赋能的分布式体系,基础框架技术能力不断成熟,数据、控制、服务等能力的深化为业务的快速建立与扩展提供了强大的支撑能力。与此同时,测试技术由被测体的业务与技术变革所牵引,从瀑布式跟进服务端单体的纵向测试能力建设发展到敏捷化的端到端全链路测试,尤其强化了精析测试能力的作用。质量保障过程从点面支撑进化到立体保障,复杂度从服务端向移动端迁移。

    移动端的测试模式可大体分为代码侵入方式与非代码侵入方式。代码侵入方式,以集成 SDK 或系统底层 Hook 方式为主,通过采集系统基础资源指标、收集日志信息、触发或反馈执行动作、调用或收集接口调用信息等方式,支持测试路径与结果验证。作为各大厂商的测试技术落地的主要方式,通过后向监控与单点查询等方式对业务测试起了很重要的作用。非代码侵入模式,以用户视角来探索测试边界,强调产品功能与体验,界面信息即是输入也是输出。由于缺少代码和日志信息的辅助,相对弱化测试路径的设计与目的性,强化用户交互逻辑。技术上或通过 UIAutomator/WDA 与 GUITree 控件树来实现定位与判决,或通过图像智能识别来实现分类、遍历与异常检测。

    Test By AI 作为测试技术的新方向,已经逐步成为国内外大型互联网公司和测试服务提供商的研究方向。通过智能化手段增强测试路径生产能力、测试数据特征诊断能力,以及测试断言的准确性,是共同探索与实践的方向。其中,在图形化界面上,基于计算机视觉识别能力构建 UI 的功能录制回放、设计还原、性能诊断与线上巡检已慢慢有所沉淀,有代表性的平台包括 Test.AI、Applitool、Mabl 、AirTest、AppiumPro、Fastbot、SmartX、RXT、DevEco Studio、PerfDog、GameAISDK 等。

    痛点

    对于大型的 APP 而言,往往承载了公司触达用户的大量业务类型,通过前中后台数以万计的服务链条支撑,而高 DAU 多类型设备覆盖的用户场景成为产研测质量控制的挑战。代码后向兼容、模块依赖、数据一致性、业务策略重叠等,都可能引起功用户侧的系统问题,比如空白屏、空白块、文字重叠截断、图文遮挡、字符乱码、货币符号错误、兜底图文缺失等。问题列表:

    图一:典型问题分布图

    实践之可行性调研

    研测阶段关注点在业务功能实现层面,人工甄别上述问题的成本非常高且容易形成疲劳遗漏,智能化在研测阶段和线上监控上识别此类问题正是 Test By AI 的切入点。在智能化切入目的性测试领域前,从结果诊断逻辑上探索异常巡检的落地技术实践是一种有效方式。

    从实现方案上,有多种可能:

    一、基于 GUITree 控件的节点信息,来判断节点是否存在,节点属性是否正确,以此来匹配到功能或者业务逻辑上,比如出现图片加载失败,网络加载超时,价格缺失,商品描述缺失等。但是,无法判断纯图形类型的问题,比如文字重叠、图文错位等。

    二、基于图形的特征比对,判断两张图片的相似度。CV 现有成熟的算法有 SIFT、SURF、ORB 等,但特征比对的逻辑是预判,事前知道错误图形的类型,且要与错误图形库逐一比对判断,计算资源与耗时随着问题类型的增加线性增长。

    三、基于模型训练,通过深度学习对训练集中的大量数据进行特征提取,达到一次性的类别与阈值判决,以此作为测试结果判定的主要手段。同时,辅助二次检验的手段来提高判决的准确率。


    图二:图像训练与检测逻辑图

    通过 AI 建设智能测试基础能力,核心在于数据与模型,再者是在业务域的工程落地实践。从数据上来看,我们需要建立主站 app 各类页面的遍历能力,以便实现业务域场景的覆盖。依托现有测试遍历技术和自动化测试能力,可以实现周期性遍历页面,跟进业务迭代引入的主站 app 端变化。同时,将探索式遍历、脚本业务域遍历与赛博云真机平台融合,可以保障兼容性覆盖与效率提升。这样,我们可以实现正向样本数据的收集。
    另外,负向图像样本的收集也极为重要。由于缺陷、异常问题反馈的图像数据相对较少,难以覆盖所有的异常场景,所以需要按照发现问题的图像特点,以正向训练集来批量地构建各种错误类型的负向样本,作为负向训练集和测试集,以提供给模型训练与效果验证。

    异常构建能力建设

    为了提供负向样本,我们必须建立异常图像特征的构建能力。这里,将以图片缺失、文字重叠等场景来举例说明异常构建的技术方案。

    图片缺失
    图片缺失会出现在多种场景中,比如,首页商品图片加载整体失败、活动页/搜索结果页/购物车/结算页图片缺失、带顶栏空白页、广告位动图缺失等。这些场景从技术维度都可以归结为异常白块。从 CV 的角度构建,可先找出页面中的图片元素。对图片进行二值化处理,然后根据确认元素轮廓,在原有的图片像素点上定位,用白色填充矩形区域。对于边界区分度不高的图片,可加入膨胀、或腐蚀的图形化处理。

    图示中蓝色框中图片会被白块所依次取代:

    文字重叠
    文字重叠异常在整体异常占比是最高的,发生的场景存在于 APP 的各个角落,这一块我们力求把异常样本构造的更贴近真实样本,保证最终训练模型识别的准确度。

    我们在一个正常的截图上说明构建的方法:

    挑选一个文字区域,通过 ocr 结合 CV 的方法确认文字区域,获取 “京东会员” 文字区域坐标集合,利用该集合在原图上获取文字的背景和颜色,计算字号,再通过图形处理能力构造相关文字的重叠,最终效果如下图

    通过如上方法,我们构建了文字重叠异常的数据集,异常图片量级达到万级以上,并且基本不用投入人力。

    算法开发实践

    在 UI 测试过程,异常图片种类繁多、不同缺陷的表现形式多样,且不同页面的样式、排版经常发生变化,传统的 CV 算法(如模版匹配、滤波等)难以实现逐个缺陷判定。因此,采用深度学习(DeepLearning)的方法成为优选方案。
    深度学习算法开发一般分为以下步骤:
    开发环境搭建
    样本数据准备
    网络结构设计
    模型训练与测试
    算法迭代优化

    开发环境搭建
    首先,确认采用 Local 方式,还是 Online 的方式。Local 的方式,需要准备带有 GPU 的机器、安装显卡驱动及深度学习框架相关软件包;Online 模式,一般适用于大厂,如 AWS、JD Cloud 都提供相关的租赁服务。大家可以根据自身情况选择,根据实时性、灵活性的要求,选择开发语言,目前主流的开发语言为 Python、C++ 等。

    样本数据准备
    样本数据是整个工作最基础、最重要的一环。数据质量的好坏决定算法模型性能的优劣。根据经验判断,构建优质的样本数据集,包括数据搜集、数据整理、数据去噪声、数据构造、数据增强、数据迭代等步骤,大致需要花费整个实践工程 70% 甚至 80% 的时间。本项目实践的任务属于有监督训练学习,搜集的样本数据集包括图片和其对应的 label。智能测试过程最常见的两类异常缺陷为空白块异常和文字重叠异常;我们设定没有异常缺陷的样本为正常样本(标记为-1),每类异常情况标注不同的 label(空白块异常标记 0,文字重叠异常标记为 1)。

    对于图像分类任务,每张图片对应于某个类别(正常、空白块、文字重叠);对于目标检测任务,每张图片对应于多个目标的检测框,每个检测框同时包含类别信息和位置信息。我们将本实践中的异常检测问题定义为目标检测问题,不仅标注出缺陷的类别信息,同时标注出缺陷的具体位置。我们从已标注的样本集中随机抽取 10 条目的展示结果,如下图所示:

    最左边一列代表随机抽取样本的 index,后面依次是 image_path,class_label,defect_pos, xyhw。


    图:随机抽取的 10 条标注样本示例图

    其中,image_path 为图片的存储路径,class_label 为异常缺陷的类型,defect_pos 为异常缺陷在图像中的坐标位置(x1,y1,x2,y2),xyhw 为缺陷位置的相对坐标(这样即使图片发生了 resize,缺陷坐标保持不变)和缺陷的类型。正常样本在 class_label 中记为 NaN,在目标检测标注中记为(-1,0,0,0,0)。

    网络结构设计
    在图像领域,目前深度学习网络结构主要有两大主流框架,即 CNN 和 Transformer。在此,我们仅介绍基于 CNN 的网络结构模型的相关探索实践。Transformer 目前在学术领域属于热议阶段,但其对数据量级、硬件资源等要求都非常高,其落地实践情况仍在持续探索中。

    从 ImageNet 1000 类图像分类 Top5 错误率的历年趋势图可以看出,Top5 的错误率逐年明显下降,其后甚至低于人类自身错误率 5.1%。

    自 2012 年起,网络结构从最初的 AlexNet,逐渐演变到 VGG,GoogleNet,Resnet 等。在本项目实践中,我们采用带有 SELayer 的 Resnet18 结构,整体结构如下图所示:

    图:带有 SELayer 的 Restnet18 网络结构图

    模型训练与测试
    在完成样本整理和网络结构设计后,接下来进入模型训练的阶段。首先,将样本集划分为训练集和测试集,并设置必要的超参数(如训练轮次 epoch、学习率 learning_rate、批次样本数目 batch_size 等);然后,定义损失函数 Loss,在实践的初期阶段,我们将异常检测视为分类问题,所以完成 softmax 层计算后,采用 CrossEntropy 来进行梯度反传。

    测试样本和真实样本的 ROC 曲线图如下所示:

    图:测试样本和真实样本的 ROC 曲线图

    算法迭代优化
    我们提取 Restnet18 的 Layer4,构建了特征热力图,如下图所示。分析热力图发现,缺陷在空白块处响应最大,说明缺陷的特征已被分类器准确学习到。


    图:模型检测结果的热力图

    ● Bad Case 分析:
    Case 1: 算法模型判定为正常,标注为异常的样本,如图(a)所示。经过二次 check 后,确认为标注错误。因此,识别 “算法模型得分较高而与真实标注信息不一致” 的样本,可作为快速去噪的有效方法。

    Case 2:模型未识别出来的异常空白块,分析原因发现目前的训练样本集中没有 “粉色底” 的空白块。在后续样本采集的过程中,可持续增强此类样本的搜集。

    (a)模型发现的标注错误 (b)样本集缺失的 “粉色底” 空白块
    图:Bad Case 分析样例图

    真实样本的匮乏构成算法实践探索的最大壁垒。我们尝试了多种方式去尽可能搜集完备的样本集:其一,人工构建异常样本,此类方式的构建步骤繁琐,人力成本耗费较大且某些异常情况无法人工构造;其二,采用无监督学习的方式构建样本,该方式通过大量正样本的学习来识别异常样本,此类方式能节约大量的人工标注时间和成本,非常值得进一步探究,也将成为后续我们重要的研究方向。

    未来规划

    从现有的客户反馈问题和研测问题为切入点,我们在算法效果上取得一个不错的结果,以此作为开端,继续深化 Test By AI 的智能化之路。在算法上,从数据清洗、模型设计等维度继续优化模型效果,同时开始无监督学习算法能力的尝试。在工程上,以现有能力为基础,加强二重检测能力的建设,保障业务测试实践的效果。在实践上,总结 badcase、提炼针对性的算法和工程技术点,增强 AI 判决的效果。结合 AI,提升测试路径生产能力、测试数据特征诊断能力,以及测试断言的准确性,同样会变成智能化探索的重要一环。

    福利

     

    展开全文
  • APP开发技术浅析

    千次阅读 2018-04-24 14:22:53
    、纵向对比Native App传统的原生App开发模式,有iOS和Android两大系统,需要各自语言开发各自App。优点:性能和体验都是最好的 缺点:开发和发布成本高 应用技术:Swift,OC,JavaWebApp移动端的网站,常被称为...
  • 对用户来说,体验不好,出现缺陷,没有什么产品缺陷与开发缺陷之分,就是产品体验差,垃圾。当出现缺陷的时候,往往我们先馅于“在这不是bug是需求,是需求还是bug?”的纠缠中。这种毫无建设性的争辩,没多大意义。...
  • App安全检测实践基础——工具 apktool:简而言之就是获取资源文件,主要查看res文件下xml文件、AndroidManifest.xml和图片。 (注意:如果直接解压.apk文件,xml文件打开全部是乱码) dex2jar:将apk反编译成...
  • android app代码审计,常规漏洞/缺陷整理(持续更新)
  • 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。 3、测试资源 测试任务开始前,检查各项测试资源。 –产品功能需求文档;...
  • 智能家居,作为一个由物联网衍生的新兴概念,可智能连接各类智能传感器和设备,促进家用电器、照明、加热冷却系统以及安防系统的自动化。三星 SmartThings 作为一个开放的智能家居平台,在同类平台中占据领先优势。...
  • 掌握Windows系统基于深度学习的目标检测训练自己的数据集方法 掌握labelImg图像标注方法 掌握YOLOv4数据集整理方法 掌握YOLOv4训练、测试、性能统计方法 掌握训练好的网络模型在前端软件的测试与应用 掌握前端...
  • 由于市场的需求不断变化,原有的开发环境和...本文先介绍如何将HBuilderX创建的uni-app项目转换成vue-cli项目,紧接着通过cross-env实现多环境的配置,最后通过配置文件和git分支实现不同环境下不同需求的多变开发
  • 一文搞懂App测试,APP测试方案

    千次阅读 多人点赞 2021-07-31 17:32:40
    、业务功能测试 1.业务功能测试概念 按照用户的需求(需求说明书、原型等]去检验开发的代码实现是否满足用户的功能性需求。 2.测试对象 1.功能点(单独模块]》单元测试· 2.多模块》集成测试 3.业务流程==》系统测试...
  • 很多时候还是致命性的,这就要求我们测试人员要尽最大可能去找出软件当中的缺陷,减少app崩溃出现的概率,这里我将收集到的关于针对APP崩溃测试的资料以及自己的工作经验整理如下:APP中BUG的直接影响App的Bug会...
  • ios实时卡顿检测和优化方案

    千次阅读 2022-01-25 13:39:11
    在移动设备上开发软件,性能一直是我们最为关心的话题之,我们作为程序员除了需要努力提高代码质量之外,及时发现和监控软件中那些造成性能低下的”罪魁祸首”也是我们神圣的职责。友盟+U-APM就是款提供应用性能...
  • 引言 人工智能早已不是什么新鲜...想象一下如果人脸门禁普及到家庭中,如果一个人拿着你的照片就能进入你的房间,那门禁岂不是形同虚设,因此活体检测一个必不可少的部分。 那么如何在Android平台上实现活体检测...
  • Python 使用QT5开发界面的一个demo开发过程的总结Python 使用QT5开发界面的一个demo开发过程的总结1. 当前使用的 python版本 :2. 使用pip安装 QT5:pip install pyqt53. 安装PyQt5-tools : pip install pyqt5-...
  • 第四,在并发检测的需求上,CodeSec采用多进程、多线程方式,每个检测任务在一个线程中进行检测分析,对于查询、审计等采用独立线程进行处理等方式,可以支持多个检测任务并发检测。而对于并发需求更高的用户,可以...
  • iOS App 闪退监测

    千次阅读 2018-04-22 18:02:49
    为保障线上 App 的用户体验,我们一般都会对线上 App 的 crash 率做实时监控,一旦检测到 spike,可以即刻调查原因,但这一切的前提是 crash 日志能够准确上报。crash 日志上报有两难点:crash handler 安装之前的...
  • 为什么会出现Hybrid App呢,早期是因为开发一个Android或iOS的客户端,需要的人力成本比较大,开发周期比较长,后来有些团队就通过将部分页面拆分出来,由前端来完成,再通过在客户端里的Webview来展示。由于小编我...
  • Vue app开发踩过的那些坑(二)

    万次阅读 2017-07-18 16:13:28
    最近接了一个活儿,甲方要求用Vue来进行开发,于是乎,从头开始读了一遍官方文档,便开始写代码了。之前接触过Angular js,不过理解不深,但是对上手Vue来说,还是有帮助的。对于CSS,也老是记不住一些属性,在开发...
  • 4.内存泄露:同一个对象不停地开辟,而且没有释放; 5.内存溢出:程序所消耗的内存大于硬件提供的内存; 6.网络:异步加载时提前调用了数据(现象是在弱网时,根源是空指针); 7.界面UI:像拍照没有附加于Control...
  • App/H5/小程序测试技术

    2021-07-06 21:17:03
    本节大纲 ØApp测试概述与流程 ØApp测试策略详解 ØH5测试与小程序测试...3. App测试 Ø 就是对手机上的软件APP进行测试的一个过程 App测试常用术语 1.移动端操作系统 2.屏幕尺寸 3.分辨率 4. 像素 5. 网络制式 6. 其
  • 希望以后可以写一个自己的移动即时通讯App,使用xmpp协议,包括服务器端和客户端。 已实现功能: 1、登录、注销、保持在线。 2、好友、群、消息列表。 3、发送/接收好友、群、群成员消息。 4、表情选择...
  • 开发打包上传到内测分发平台 2.平台可以生成对应的二维码 3.测试直接扫码进行应用安装 线上 发布平台 各类安卓手机品牌商城 App store、iTools 发布步骤 1.开发者账号注册,申请在发布平台(各种应用商店)...
  • 移动端测试 (APP测试)

    千次阅读 2020-10-15 18:56:38
    涵盖内容 APP测试流程 二、APP测试方法 三、APP测试工具 四、APP测试和Web测试的区别 ...APP的整个研发的周期一般在2~3月左右,具体根据产品功能的复杂度来确定,而且测试周期一般是1~3周左右,所..
  • Java 单体服务开发指南

    千次阅读 多人点赞 2021-07-19 15:27:30
    文章目录、代码组织模式1、多仓库2、单体仓库二、编程规约(参考《阿里 Java 开发手册》)1、命名风格2、常量定义3、代码格式4、OOP 规约5、日期时间6、集合处理7、并发处理8、控制语句9、注释规约10、前后端规约...
  • 为什么需要规范APP命名? 当我们在需求及业务明确后,产品及设计已经做出了对应的文档及UI图,那么进入...虽然在很多时候定义App的版本命名规则时随便拍脑袋就定下来了,而且觉得大家在交流沟通的时候都是串数字
  • APP手工测试基础知识

    2020-04-04 14:30:22
    、系统架构 1、APP的系统架构一般分为三层(三层架构):分别是客户端,应用服务器,数据库服务器。 2、三层架构的工作原理:客户端向数据库请求数据,数据库返回给客户端数据的过程。其中客户端要先经过应用...
  • 检测node版本(需要>=6) node -v ...检测npm版本(需要>...Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 npm全称是 Node Package Manager,就是node的包管理工具 yarn 和npm类似,是为了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,631
精华内容 4,652
关键字:

开发一个缺陷检测app