机器学习实现录像分帧速度测试

作者:万宇

团队:腾讯移动品质中心TMQ

项目背景

浏览器测试组一直将录像分帧作为速度测试的重要手段之一。录像分帧具有结果简单直观,证据保存完好等优点。所以,虽然录像分帧在效率上比不上代码埋点,Hook等方法,但一直沿用至今。

2016年上半年开始,成都浏览器测试组进行主路径精细化测试,对各个常用场景的性能进行全面摸底测试。在浏览器Feeds流速度测试的时候,为了降低网络以及网页内容不同造成的误差,开发组建议一个场景进行300轮测试。如此多样的场景,加上如此多的轮数,庞大的数据量用人工或者简单自动化是无法处理的,我们必须要想新办法。

同时,深圳浏览器一直用摄像头视频分帧来进行网页速度测试,随着网页的变化,以前的自动化程序识别率逐步降低,也到了该更新的时候了。

项目现状

深圳网页速度测试,共2个关键帧,场景如下:

1、开始关键帧,通过查看屏幕上的白点来判断;

2、首屏完成关键帧, 通过查看下部网页是否铺满来判断。

成都feeds速度测试, 共3个关键帧, 场景如下:

1、开始,通过查看屏幕顶部的红蓝块变化,判断开始;

2、文字加载完成;

3、全部加载完成。

项目痛点

老方案的录像分帧速度测试,是由人工确定的”饱和度”算法,当页面铺满一定阈值的时候,确定为不同的状态。但这个方法也有明显的痛点。

1、饱和度阈值算法,必须针对具体的场景,由人工调试确定。

换一个场景,甚至网页发生了变化,必须重新人工调试阈值,如果场景一多,这是个较大的负担。而成都的主路径精细化测试,涉及到很多不同的场景,比如启动,比如多窗口,比如feeds流,比如下载等。

2、速度测试成都用的是屏幕录像,而深圳用的是摄像头。两者的视频质量差别很大,屏幕录像的饱和度和阈值,无法用在摄像头视频上,反之亦然。

所以,新方案必须要考虑下面两个因素:

(1)新方案必须可以运用在不同场景, 而无需重新开发;

(2)新方案必须可以同时适用于摄像头视频和屏幕录像视频。

今年上半年,google的阿尔法狗很火同样,我们的这个需求,也可以用阿尔法狗的原理来实现!

技术实现

通过采用有监督的模式,通过人工标注一些关键帧,然后机器学习这些人工标注的关键帧,是否就可以自动识别新的性能视频呢?我们开始着手尝试这个系统。

系统在Windows上实现,对于Windows开发,作者习惯使用C#,因此技术选型也基于C#。项目需要用到两个开源库。

1、图像处理库:Emgu.net,也就是OpenCV的C#封装,支持常用OpenCV视频,图片处理功能。

2、机器学习库:Accord.net,是在AForge.NET项目的基础上封装和进一步开发而来。因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频、音频、信号处理以及统计应用相关的解决方案。

有了现成的机器学习库和图像处理库以后,我们只需要编写程序,选择合适的特征维度,通过机器学习即可识别相应场景的图片。

整体流程如下:

那么,应该选择哪几个维度的特征呢?根据人的认知,结合项目实际,我们选择下面3个维度的特征。

1、变化区域:比如提取下面红框范围,表示两张图片之间的明显变化区域;

2、颜色直方图:颜色直方图永远都是图片处理的重要特征之一;

3、帧序列号:由于速度测试都是通过脚本进行,并不是人为点击,所以相同场景的时间轴都比较类似,比如点击按钮可能都在1.2s左右。 帧序列号都是第40帧左右。

提取特征以后,我们可以采用机器学习方法,比如神经网络,学习特定场景的特征。训练完成以后,即可以识别新的分帧图片。

效果

方案对比:

使用机器学习处理录像分帧以后,性能测试的效率明显提升。

搜索微信公众号:腾讯移动品质中心TMQ,获取更多测试干货!

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

TensorFlow 1.0 正式发布

在刚刚过去的一年里,从语言翻译到对皮肤癌的早期检测和对糖尿病患者失明的防护,TensorFlow 对研究人员,工程师,艺术家,学生和其他各界人士在各领域的进步都...

34113
来自专栏生信技能树

TCGA的28篇教程-所以癌症的突变全景图

有了MAF格式的突变数据,比如TCGA里面的乳腺癌的1000个左右的样本的突变信息,就很容易走maftool这个包,进行绘图,代码如下:

931
来自专栏安智客

Andriod8.1之测量生物识别解锁模式的安全性

(2017年12月5号Google更新了Android8.1的CDD) 如今,基于生物识别的解锁模式几乎仅通过错误接受率 (FAR) 指标(即模型错误地接受随机...

2027
来自专栏数据派THU

一万元搭建深度学习系统:硬件、软件安装教程,以及性能测试

来源:量子位 作者:Slav Ivanov@blog.slavv.com 编译:问耕 本文长度为4600字,建议阅读6分钟 本文教你万元打造一个深度学习系统。 ...

2086
来自专栏李蔚蓬的专栏

2018.01.21.一周机器学习周记

3.根据提示,在官网下载对应的CUDA版本,下载完成后进行安装(安装之前先卸载本地的旧版本)

671
来自专栏FreeBuf

如何搭建你自己的“深度学习”机器?

深度学习是一门用来解决复杂问题的技术,例如自然语言处理和图像处理。目前,我们已经可以很快的处理超大计算量的问题——这多亏了GPU,GPU最初就是用于快速生成高分...

1635
来自专栏AI研习社

还在费心学编程?微软用深度学习 AI 帮你写代码

在过去的几十年中,无论在硬件组织还是软件架构上,计算机行业已经发生了翻天覆地的变化,各种软硬件产品的性能和用户体验均得到了显著提升。 但对程序员而言,软件编码的...

2756
来自专栏企鹅号快讯

你的深度学习应用可能存在安全风险

360安全实验室(肖奇学 、Deyue Zhang)、佐治亚大学(李康)和弗吉尼亚大学(Weilin Xu)的研究者,他们在论文《Security Risks ...

1935
来自专栏IT派

2018年2月份GitHub上最热门的Python项目:深度学习占半壁江山

本篇文章为大家盘点了2月份最热门的Python 项目,本月最热门的开源项目中,深度学习相关的开源项目占据了半壁江山,让我们一起来看下吧!

980
来自专栏AI科技评论

开发 | 谷歌发布TensorFlow 1.4版本:支持分布式训练,迎来三大新变化

e Developers blog正式撰文发布TensorFlow 1.4版本,此次的更新迎来三个重大变化:Keras位于TensorFlow core中,Da...

2733

扫码关注云+社区