Page 85 - 《软件学报》2025年第12期
P. 85
5466 软件学报 2025 年第 36 卷第 12 期
其中, m 是梯度幅值, θ 是梯度方向.
(4) 关键点的特征描述
通过以上步骤, 对于每一个关键点, 都拥有位置、尺度以及方向这 3 个信息. 接下来就是为每个关键点生成稳
定且具有区分度的特征描述符, 并转换为响应的高维特征向量, 使其不随各种变化而改变.
图 3 展示了一个 SIFT 图像匹配算法在移动应用“微信”中的比对实例. 对于目标控件和待匹配页面截图, 我们
分别对其进行灰度化等图像预处理. 由于 SIFT 算法的尺度不变特征, 无须对控件及待匹配页面截图进行尺寸大小
的处理. 在预处理完成后, 我们直接调用 SIFT 算法进行特征检测、特征描述生成以及特征点集的构建. 进一步, 将
两者的特征点进行有效匹配, 从而计算目标控件在待匹配页面中所匹配控件的坐标.
图 3 SIFT 控件比对实例
基于以上介绍, 结合本方法实际需求, 采用 SIFT 算法用于图像匹配模块的核心算法.
4.2.3 图标类型匹配
模板匹配和 SIFT 算法匹配主要是从几何形状上进行严格匹配. 但是, 有时由于 GUI 设计的不同, 表示同样含
义的图标可能在几何形状上并不相同. 本文使用图像分类模型 VGG16, 对移动应用中常见的图标进行分类. 作为
一个强大且轻量级的经典图像分类模型, VGG16 模型在诸多任务中表现出色, 且已被相关工作初步应用于控件图
标类型的分类, 表现出优异的性能 [51] . 考虑到效果与效率之间的平衡, 我们未选取更为先进但训练推理开销都更
大的最新模型, 而是以 VGG16 模型作为我们图标类型匹配部分的图像识别模型. VGG16 的基本架构由 16 层网络
组成, 包括 13 层卷积层和 3 层全连接层, 具体结构如下.
(1) 卷积层: 使用大小为 3 × 3 的卷积核, 步长为 1, 填充为 1, 使卷积层的输出尺寸与输入尺寸保持一致.
(2) 池化层: 使用 2 × 2 的最大池化, 步长为 2, 减少特征图的尺寸, 增加网络的平移不变性.
(3) 全连接层: 使用两个具有 4 096 个神经元的隐藏层和一个具有 1 000 个神经元的输出层进行分类.
为了使模型能够更准确地进行图标分类, 提高了实际应用的效果和精度. 我们在 VGG16 模型应用于移动应
用图标分类任务时, 对其全连接层进行了修改, 移除了原有的全连接层, 根据具体的分类任务 (如表 1 所示) 重新
进行了设计. 我们所构建的分类集是基于对各平台移动应用中所涉及的图标类型的充分调研所确定, 且我们的数
据集尽可能地包含了所列类型的常见样式. 然而, 也存在极少数情况可能会存在超出数据集定义的图标类型或样
式, 在这一情况下, LLMRR 将依赖图像模版匹配、文字匹配等模块进一步进行目标控件的检索. 如果确实图像匹
配与文本匹配均无法在应用截图中找到目标控件, LLMRR 将会转入大模型语义匹配, 利用大语言模型的理解能
力判断是否存在“录制冗余”或“回放冗余”. 然而, 经过对实验结果的充分人工审查, 我们并未在实验中发现此类情
况, 也充分说明了各模块的有效性.
模型的全连接层共包含两层. 第 1 层的输入维度为 25 088, 对应于之前预处理的数据大小, 输出维度为 40, 激
活函数为 ReLU; 第 2 层的输入维度即第 1 层的输出维度, 输出维度为我们的分类数 14. 由于是多分类问题, 我们
使用 categorical_crossentropy 作为损失函数, 并以准确率作为评估指标. 对于单个样本 i 和类别 j, 分类交叉熵损失
函数的公式如下:

