项目背景
前端竞品性能对比测试提效
竞品间前端性能对比测试工作,每季度均会花费较长的时间;且均为重复性工作;使用模型训练或AI的方式,对视频进行自动拆分和识别,快捷输出报表,提升产出效率
实际场景
1、录制某app,由首页点击跳转到列表页,列表页跳转到详情页,详情页跳转到填写页3次场景视频
2、通过视频拆帧的方法获得图片,手动标记首页点击、列表页点击,详情页点击图片,计算跳转完成的时间差值,获得点击到跳转完成的时间。
3、重复步骤2,某app采集10次 或 20次,获取时间平均值
要求
1、步骤2可以利用人工智能或者ai的方法简化手动标记的人工成本吗?
2、请给出可实现的思路
3、请给出可执行的完整代码
ChatGPT 回答
解决方案
针对你的需求,我可以给出一种利用计算机视觉和机器学习的方法来简化手动标记的过程。
具体而言,可以使用目标检测模型来自动识别视频中的页面跳转动作,从而减少手动标记的工作量。
以下是一种可能的实现思路,以及一些伪代码来说明:
实现思路
数据收集和准备
收集包含首页点击、列表页点击和详情页点击的视频数据。
将视频数据拆帧并转换为图像。
训练目标检测模型
使用已标记好的图像数据(包含首页、列表页、详情页等)来训练目标检测模型,例如使用 TensorFlow 的 Object Detection API 或 PyTorch 的 torchvision 库。目标检测模型的目标是自动识别视频中的页面跳转动作。
模型评估
对训练好的模型进行评估,确保其能够准确地识别页面跳转动作。
自动识别页面跳转动作
使用训练好的目标检测模型对视频进行处理,自动识别页面跳转动作的发生时间点。
计算时间差值
根据识别到的页面跳转动作的时间点,计算跳转完成的时间差值。
重复采集
重复进行步骤 1 到步骤 5,采集足够的数据以获取时间平均值。
伪代码示例
以下是一个简单的伪代码示例,用于说明如何使用目标检测模型来自动识别页面跳转动作:
完整代码
由于这是一个复杂的任务,实际的完整代码可能会涉及到大量的数据处理、模型训练和视频处理等步骤。由于篇幅有限,这里无法提供完整的可执行代码。然而,我鼓励你按照上述思路逐步实现,并在实际开发中遇到问题时,随时向我寻求帮助。
训练次数
问:
6个标签,280张图,训练300轮,实际是总共多少次
答:
假设每个标签有 280 张图像,训练轮数为 300 次,那么每个标签的训练次数为:
[280 \times 300 = 84000]
如果有 6 个标签,那么总共的训练次数为:[6 \times 84000 = 504000]
因此,在这种情况下,总共的训练次数为 504,000 次。
解决方案
统计app应用点击页面跳转和加载时间,场景加载分析,视频拆帧,目标识别+简单的算法
1、人工:肉眼识别x个标识点,场景,跳转过程中到骨架屏加载,最后数据呈现(抛出图片懒加载)
2、匹配:图片指定区域识别,采集3个点(图片模板匹配相似度、颜色、OCR)分场景
3、模型:YOLO,打标和预训练模型
参考流程和参数
初始流程
1、打标,手动,费时费力
2、训练,电脑拉跨,没得显卡,50次,32个标签,训练50轮,要6个多小时
3、检测,开启显示和存储,卡的批爆,慢。不开显示和存储获取结果比较快
4、本质还是目标匹配,1页面多个标签,根据标签去识别场景
5、计算场景标签次数(x图片张数)获取到页面跳转时间,每张图片的时间是固定的
训练和识别 参考参数
训练参数
任务类型
检测
分割
姿态
分类
OBB
数据集目录:xxx
训阵轮数:100
批显大小:16,显卡性能,显存大小
图像尺寸:640
包含测试集
测试集比例
验证集比例
高级选项
框损失增益
类例损失增益
姿态损失增益
关健点目标损失增益
...
重叠遮罩
遮罩比例
Dropout率
识别参数
高级选项
置信度阈值
I0U阈值
最大检测数
类列过滤(运号分隔的索引)
类别无关NMS
使用TTA
导出模型
模型转换 pt 转 onnx
个人实操
实际操作 1000张 32个标签 训练数据记录
500次 未训练完成
50次 训练完成
2025-1-21 16:52 左右,开始训练 0%
2025-1-21 19:45 左右,训练进度 46%
模型训练 前,后 对比
基座模型,通用(宽度),别人训练的
垂直模型,定制(深度),自己训练的
未训练前
Kike 风筝
Keyboard 键盘
refrigerator 冰箱
book 书
训练后
自定义标签识别,自定义框选区域
模型结果检测
开启显示、开启或关闭存储 慢
开启显示、开启存储 速度慢
开启显示,关闭存储 速度较慢
5-10分钟才50张图片不到
图1
图2
关闭显示、关闭存储 速度快
图标识别场景日志
image 1/1 D:\code_path\Python\testVideoSceneTime\TCVideoSplitImg\88.jpg: 640x320 1 中间-tc-APP, 36.7ms
Speed: 2.0ms preprocess, 36.7ms inference, 0.0ms postprocess per image at shape (1, 3, 640, 320)
Results saved to runs\detect\predict7
image 1/1 D:\code_path\Python\testVideoSceneTime\TCVideoSplitImg\219.jpg: 640x320 1 骨架-tcH-首, 58.6ms
Speed: 2.0ms preprocess, 58.6ms inference, 2.0ms postprocess per image at shape (1, 3, 640, 320)
Results saved to runs\detect\predict7
image 1/1 D:\code_path\Python\testVideoSceneTime\TCVideoSplitImg\243.jpg: 640x320 2 完成-tcH-首2s, 41.0ms
Speed: 1.0ms preprocess, 41.0ms inference, 2.0ms postprocess per image at shape (1, 3, 640, 320)
Results saved to runs\detect\predict7
image 1/1 D:\code_path\Python\testVideoSceneTime\TCVideoSplitImg\498.jpg: 640x320 1 完成-tcH-首3, 43.9ms
Speed: 2.0ms preprocess, 43.9ms inference, 2.0ms postprocess per image at shape (1, 3, 640, 320)
Results saved to runs\detect\predict7
实操方案实现策略和调整
人工手动实现思路
1、找出页面开始跳转
2、白屏过度
3、骨架屏幕预加载过度
4、直到页面出现酒店数据
程序实现思路
场景打标签
时间差计算
1、列表页
2、过度页
3、骨架屏
4、填写页
每1秒就是1张图片,1张图片的时间固定,那就计算 场景2、场景3 有多少次再乘时间,就是 过度和骨架,到完成的时间 本质上还是 多模板匹配,识别页面场景,过度了多少张图片
问题或讨论记录
1、细节(过度页+骨架,过度页(无骨架),这两个场景的时间),还有识别精确度(还没验证)
2、还有一个问题,换了ui 就得重新去搞一次,AI截止目前只能回答 截止xxxx年xx月xx日,因为训练的知识只能到这里,一个原理
若有收获,就点个赞吧