机器学习在启动耗时测试中的应用及模型调优(一)

作者:熊玉辉, 腾讯OMG质量管理部 高级工程师

商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。

原文链接:http://wetest.qq.com/lab/view/392.html

WeTest 导读

=========

启动耗时自动化方案在关键帧识别时,常规的图像对比准确率很低。本文详细介绍了采用scikit-learn图片分类算法在启动耗时应用下的模型调优过程。在之后的续篇中将采用TensorFlow CNN、迁移学习等算法,给出对比识别效果


1、常规思路与困境


App启动、关键页面加载耗时是一个常规的性能指标,也是竞品对比的关键性指标。在耗时测试中,如何自动化识别关键图片至为关键。由于视频App启动过程广告、首页运营内容是分分钟变化的。在识别关键图片时,传统的基于灰度直方图+阈值的自动化对比方法行不通。

图片1.png

关键点:如何识别关键帧的自动化

Ø人工识别:耗时,费人力

Aphone610版本 3家竞品、14个场景,每个场景10次,2分钟1次 ,约14h ==2人天

Ø图像对比:灰度直方图+阈值(不可行)

1)整图对比:视频启动过程中的广告、首页海报是变化的

2)部分对比:app完整启动后第一屏不完全展示的地方,每次不一定在同一处

Ø埋点上报:结果准确性一直被质疑(不可行)

1)adb shell am start -W packageName/packageName.MainActivity获取

2)app埋点上报:代码里加埋点,首页加载完成后数据上报

2、为什么机器学习


启动速度关键帧图片识别,其实就是机器学习中常见的图片分类问题。当前图片分类算法和开源的代码库非常成熟,应用也屡见不鲜。之前在网上有浏览到一篇文章提到用机器学习实现耗时自动化的关键帧识别,眼前一亮,在此给出实现和调优过程。

3、实施方案


整体思路:

如下图所示,采用录屏软件+自动化脚本,完成启动过程录屏之后将视频拆成一系列图片帧。通过训练好的机器学习模型,识别出每一张图片所对应的启动过程,计算启动第一张图片到启动稳定后的总帧数,即可得出最终的启动时间。

图片2.png

样本与分类label设计

图片3.png

特征选择

常见的图像特征处理方法有:

1)原始像素特征扁平化

2)提取颜色直方图(使用cv2.normalize从HSV色域中提取一个3D颜色直方图并做平滑处理)

在本方案中,最开始首先选择方法(1)。即录屏视频分辨率为480p*720p,拆帧后压缩8倍,每个像素点3个数据表示,最终一张图片用16200 维列表表示——16200个特征,后续会对比3D颜色直方图作为特征进行对比。

第一批样本集

图片4.png

算法选择

在算法选择的过程中,依据“不要在算法选择上花费太多时间,先让你的模型run 起来” 以及 sklearn 官网算法选择引导,因为样本数1000+<100k,选择 SVM+线性核 入手。

图片5.png

4、模型调优实战


1)调优步骤

在机器学习中,如果遇到较大误差时,常见的模型调优方法不外乎:

增加样本 -----避免overfitting

选用更少的特征-----避免overfitting

获取更多的特征-----避免underfitting

调整模型,或者正则参数-----均可

当然在实现过程中,我们需要首先找出问题所在,不能盲目的增加样本或者减少参数。一般来说:

快速实现算法

plot learning curve

分析 error—sample 特征,选定要采取的手段

2)绘制学习曲线

模型:LinearSVC(C=1.0),sklearn中提供了learning_curve ()函数不用自己实现

1)总样本1225,10%、25%、50%、75%、100% 5轮,train:valid = 3:1

2)计算平均方差随样本数变化的曲线

从下图中看出,当前fit的模型是存在过拟合的,所以接下来要做的事情就是增加样本、调参、减少特征等方式来处理。

图片6.png

3)防止过拟合

第一步:调整LinearSVC 参数(如C 、class_weight)——确认C=10最合适

图片7.png
图片8.png
图片9.png

第二步:增加样本(优先增加数量少的分类样本、test_set准确率低的分类样本) 1610个样本时误差最低

图片10.png

为了更好的分析问题,可以通过classification_report来得出各个分类的具体精确率情况

from sklearn.metrics import classification_report

图片11.png

第三步:减少特征

1)减少特征的过程中,尝试通过RFEVC获取最优特征数,优化结果并不明显

图片12.png

a.特征增加的步长是人为选择的,太大了可能会漏掉关键特征,太小了计算量太大

b.step一致的,最优特征数 每次可能不一样

c.提升并不大

图片13.png

2)加大图像压缩: 从原来的8倍->12倍->16倍

a.从学习曲线上看过拟合依然存在,整体的test_error还是减小了的

b.偏差严重的label=start 这一分类,压缩倍速越高精确度越低

图片14.png
图片15.png

3)PCA

主要成分分析PCA:特征置换,原特征映射到新特征,从而实现降维。降维的目的主要是减少计算量,但是有热心同志建议试试,便试试。事实证明实际上证明“利用PCA来避免过拟合”是个bad case。

图片16.png

4)提取颜色直方图并做平滑处理后,作为图像特征之后,对比发现precison和recall低了10个百分点~~

图片17.png

第四步:调整结果分类

在前面有分析过,start这个分类识别准确率很低。 分析对比图片,start与desk区别仅仅在于app icon是灰显的。经评估desk和start分类合成一类,在实际耗时测试中影响并不大,但能提高不少test set的准确率

图片18.png
图片19.png

8分类变成7分类之后的学习曲线已经趋于收敛,且过拟合情况好很多了

图片20.png

分类准确率提升如下表所示:

图片21.png

4)调优前后对比

图片22.png

5、总结


图片23.png

6、后续 - 模型探讨


SVM 线性核LinearSVC,在图片分类问题中并非唯一选择,也不是最佳选择。后面将尝试不同的图像特征提取,与CNN和迁移学习算法在本问题的应用情况进行对比

1、使用 TensorFlow 构建 CNN

2、使用Inception v3进行图像分类

3、尝试新的图像特征提取方式


腾讯WeTest是腾讯官方出品的一站式质量开放平台。致力于品质标准建设、产品质量提升,历经千款腾讯产品磨砺。平台包含兼容测试、云真机、性能测试、安全防护、企鹅风讯等优秀工具,覆盖产品在研发、运营各阶段的测试需求。金牌专家团队,10余年品质管理经验,5大维度,41项指标,360度保障产品质量。

目前,我们为WeTest平台的认证用户提供免费使用机会,详情点击http://wetest.qq.com/

如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:800024531

腾讯WeTest有奖征文活动进行中,欢迎投稿!了解详情:

http://wetest.qq.com/lab/view/379.html

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

算法岗位做数据挖掘大多都是抽特征跑跑现成模型”

这句话,说起来很简单,看起来也很容易,但真的是这样吗? 我列举几点,扩展一下上面这句话: 1、label符合业务场景吗?label准确吗?能够校准吗?放在哪张表...

3389
来自专栏CDA数据分析师

译 | 在R中使用quadprog包求解二次规划

本文由CDA作者库成员HarryZhu翻译,并授权发布。 CDA作者库凝聚原创力量,只做更有价值的分享。 概述 本文将探究一个被称为二次规划的优化问题,这是一种...

3259
来自专栏机器之心

学界 | 用DL实现Bug自动归类:微软研究院提出DBRNN-A

33112
来自专栏机器学习算法与Python学习

超参数优化,这些策略了解一下!

当然,并非所有变量对模型的学习过程都一样重要,但是,鉴于这种额外的复杂性,在这样一个高维空间中找到这些变量的最佳配置显然是一个不小的挑战。

6623
来自专栏专知

【干货分享】177页鲁棒机器学习教程(附Slides全文下载)

【导读】本文为大家整理了俄勒冈州立大学的杰出教授Thomas G.Dietterich的鲁棒机器学习教程,具体内容如下。

1053
来自专栏机器之心

业界 | 谷歌大脑开源多种新型神经网络优化器,AutoML探索新架构

选自Google Research Blog 作者: Irwan Bello 机器之心编译 参与:张倩、刘晓坤 谷歌大脑团队希望用类似于 AutoML 发现新神...

3304
来自专栏大数据智能实战

基于Tensorflow的VCTK语音识别例子测试

语音识别是深度学习早先攻克的几个领域之一。传统的基于HMM等的语音识别精度一直比较受限。但是深度学习还是给语音识别的精度带来了一个飞跃性的提高。本文在网上找了段...

5678
来自专栏机器之心

学界 | Fashion-MNIST:替代MNIST手写数字集的图像数据集

机器之心转载 公众号:PaperWeekly 作者:肖涵 FashionMNIST 是一个替代 MNIST 手写数字集 [1] 的图像数据集。 它是由 Zala...

4569
来自专栏机器之心

学界 | 香港浸会大学:四大分布式深度学习框架在GPU上的性能评测

选自arXiv 作者:施少怀、褚晓文 机器之心编译 参与:陈韵竹、李泽南 随着深度学习应用不断进入商用化,各类框架在服务器端上的部署正在增多,可扩展性正逐渐成为...

3557
来自专栏腾讯开源的专栏

【开源公告】腾讯 AI Lab 正式开源业内最大规模多标签图像数据集

2018年10月17日,深圳 - 今日,腾讯AI Lab宣布正式开源“Tencent ML-Images”项目,该项目由多标签图像数据集ML-Images,以...

1092

扫码关注云+社区

领取腾讯云代金券