作者:王琳
导语
区别于传统测试的重路径,识别类评测更重数据。识别类的输入不被限制在软件可控范围内,而是包罗万象各种可能。不同的输入数据组合,得出来的评测结论也会截然不同。手机QQ浏览器探索X三地评测团队在评测数据方面积累了一些经验,特地写此文章来和大家讨论下分享。
关于探索X
在开始正文前,先来介绍下什么是探索X。如下几个图所示,打开QQ浏览器,首页上部天气区域按住向下滑动,就可以进入识别界面,定帧后会出现识别结果。可以是花草猫狗等的科普类名称识别,也可以是商品识别后的购买链接推送,还可以是一些AR效果广告。总之这是一个入口级别的功能,为用户打开了新世界的大门。当然了,作为当前主打的识别功能,识别准确率是我们要考虑的重要评测指标。
关于识别率的获取,首先映入脑中的问题是输入什么数据来获取识别率?这样一个看似简单的问题,细分析起来却很复杂。比如数据应该贴近用户真实情况,那么用户的使用场景是怎样的?这些场景的比例设置如何?怎么获取这些数据呢?是否可以使用线上数据?针对这四个问题,探索X评测团队进行了多轮的分析和实践,将分为场景分类、场景比例、数据生成、数据标注四个部分来进行讨论。
本文基于实物识别进行展开,其它方面的识别(例如语音类识别)仅供模型参考。
(一)场景分类
数据场景的设计类似于传统测试中的用例场景设计,需要考虑用户实际可能会遇到的场景。可以分为几个维度,每个维度设置两端极限值,在两个极限值之间均匀选取。
维度 | 释义 |
---|---|
远景—近景 | 发起识别的焦距可以调整,类似照相,需要有远景到近景不同焦距的数据,可以根据需要定制目标物体在镜头中的大小比例。 |
正面—背面 | 这种适用于特地对象的物体识别,从正面到背面,中间还有侧面横切面之类的也需要数据覆盖到。 |
纯粹—复合 | 这个维度是对背景干扰的考虑,从纯粹的物体到有各种干扰的背景条件下的物体识别,定义识别等级。 |
全局—局部 | 识别物体从完整进入摄像头到部分进入摄像头,都要覆盖到,因为实际上用户很少在第一次识别时关注到物体的完整性 |
真—假 | 寻找一些接近的物体来做混淆辨识测试,例如假二维码,外形接近的汽车等等,用于测试识别的精准度。 |
物种分类 | 这个比较好理解,就是要涵盖可识别的物种不同的分类,例如各品种的猫、狗、花草等等。 |
当然,除了上表之外还有很多其它维度,读者朋友可以自行补充。不是每次测试都要把所有维度覆盖全面,与项目组讨论选取几个更具指导价值的维度即可。结合实际案例举例如下图所示,分别是测试可乐、花草、二维码的数据场景。
(二)场景比例
在确定了要有哪些场景分类后,就到了量的问题了。
可以各种场景比例都配比为1:1,这样可以看出每种场景下的识别能力差异,有针对性的提高。但是有个新的问题,比如项目组就想知道当前花草的识别率能达到一个多少,我们固然可以说各种情况下的不同值,但是综合来看呢?这就涉及到了每种场景的计算权重比例。注意这是权重比例,是在计算时使用,而不是实际执行时的具体数据数量。
场景比例需要考虑四个方面:产品目标、场景概率、用户习惯和上报统计。
以浏览器识别来看,如下图所示,从产品目标来说当前宣传引导主要是拍花识草,产品定位更倾向于花草,因此树干类的权重就要降低一些;从场景概率来说,以常见物种为主,像“尸香魔芋”之类的玄幻物种用户基本拍摄不到(因为我们目前还是以真花为主,电视剧中出现的假花识别不在范围内),另外一个近拍为主,对于远景用户有心理预期,较远距离识别的概率低;从用户习惯来看,之前这个识别入口主要是用来进行二维码识别的,所以还存在大量用户识别二维码的需求,二维码的权重要高或者单列一个独立指标,另外用户对发生识别行为的动力中有一种分享心态,因此对那些比较名贵的花朵、珍稀动物比较倾向,我们可以去植物园动物园之类用户常发生分享的地方采集数据,这部分的计算权重也要高;最后一个方面是上报统计,如果说前面的几个方面都是版本发布前的合理预估,最后一个方面就是真实数据的指导了,通过上线后大量的用户数据上报可以进行分类统计,来观察各种场景构成的比例,指导后面的数据场景比例。
最后权重比例如上图最右侧所示,权重最高的是常规测试数据,极简模式和高复杂度的数据权重都较低,呈现一个纺锤型的统计比例。
结合具体案例如下图所示,按照场景分类进行比例分配。图中的数据看起来都是整数,只是为了方便记录,实际统计的时候进行舍入过了。二维码中特殊形状、背景易混淆和伪二维码都属于高复杂度的,权重较低。植物中花、叶、树都比例有定义外,每个分类的远景近景也都有比例。
(三)数据生成
通过场景分类和比例,基本上数据方案就已经定下来了。接下来面临的问题是从哪里获取这些数据。我们将数据集合分为三类:原生数据、构造数据和用户数据。这三类数据怎么生成的接下来会介绍。
如下图所示通过网络爬取所需数据,加上通过众测平台人工采集的数据,经过数据清洗(检查是否符合各项数据要求),比较好的数据图可以直接作为原生数据(一般指图片清晰,目标物体大小居中),一部分图片可能还需要二次加工才可以使用的,也就是所说的构造数据。构造数据主要是通过画中画和条件中心两种形式进行构造,画中画是通过两张以上的图片拟合到一起(例如物体旁边加上二维码,形成背景干扰),或者扣取的形式从原图中取目标对象(例如一幅画中存在多种花,可以扣取出来形成多个数据源);条件中心是指通过对图片进行压缩达到扫描尺寸(有些图片过于大超出识别边界,可以做适度压缩),或者按照目标对象在图片中的位置进行分类,组成居中、左侧、右侧等不同识别位置。如果版本已经发布,通过上报数据进行标注,可以获得更加真实的用户数据,标注数据的内容会在第四部分讲解。
结合项目节奏动态来看,如下图所示,从数据采集(或者网络爬取)到数据清洗、分类定级(场景分类和识别定级)、构造数据、测试后调整(需要补充数据源或者去掉一些数据)再到最后的线上数据标注,形成一套不断循环代谢的动态数据。
(四)数据标注
在第三部分提到了用户数据是通过对上报数据进行标注来获得的,本部分就具体看下是怎么标注的。首先被标注的上报数据分为两类:有真假结果上报的数据和无法获知正确性的数据。
有真假结果上报的数据,是指类似二维码识别这种,有“真”“假”结果上报判断的数据。标注方法如下图所示,将线上数据报上来的判别为真的二维码和判别为假的二维码再经过一轮人工检查,找出其中的真真TP(true positive,数据的真实类别为真,最后上报得到的结果也为真),假真FP(false positive,数据的真实类别为假,最后上报得到的结果却为真),假假FN(false negative,数据的真实类别为真,最后上报得到的结果却为假),真假TN(true negative,数据的真实类别为假,最后上报得到的结果也为假)。其中FN和TN数据可能会混入扫物结果里或者判断为无法识别,这部分数据需要单独去捞取。有人可能质疑,在二维码这种数据中,可能存在不是二维码而识别成二维码的情况吗?答案是存在的,比如用户本来是要扫商品,结果正好面对摄像头的那一面有二维码,这属于误入了二维码界面,而没有去到本来进入商品界面。这种图片就不能直接进入二维码测试集合,而是要经过处理,或者放到扫物用例结合里(作为高复杂度的数据用例)。
最后汇入测试集合的时候按照纺锤型的模式进行权重配比。这种标注的损耗率比较低,标注完后还能存有73%的数据(有一些是废图,比如模糊的或者目标物体识别错误的)。
无法获取正确性的数据是指花草或者猫狗这类数据,这些识别结果上报后,无法获知我们识别的是否正确,经过预分类处理后,还需要人工来进行精准标注。人工对比定妆照或者寻求专业人士的来帮忙标注。这里要注意是多态的保留,例如花朵的多角度图片,这是为了保持数据的多样性,从而满足场景分类中各个维度需求。这种标注高损耗,10万张图片标注下来只有600余张可用图片。耗时也比较长,后期我们采用多竞品对比的方式先进行一轮自动化标注,方便人工针对性的确认,这样就将精准标注简化为类似第一种有真假结果上报的数据标注了。例如多个竞品都标注为“加菲猫”,那么只需要人工对比定妆照确认是该图是否加菲猫即可,不必在整个库里寻找。
关于评测类数据篇就介绍到此。总结一下,从场景分类、场景比例、数据生成、数据标注这四个方面来看,共同之处就是以用户实际为依据,科学计算,不断更新。在数据获取和处理的方式上还要持续提升效率。下篇我们会给大家展示识别类评测在测试方法上总结,敬请期待。