UI识别准确率提升90%?Open-AutoGLM抗模糊算法深度解析(独家技术内幕)

图像识别在UI自动化测试中的应用! 为了提高 UI 自动化测试的稳定性,拓展更多的测试场景,我们在 UI 自动化测试中引入了图像识别并取得了不错的效果,希望下面的介绍可以给各位测试友友们一些启发和帮助。 阅读详情

第一章:UI识别准确率提升90%?Open-AutoGLM抗模糊算法的技术背景

在移动应用自动化测试与智能运维场景中,传统UI元素识别常受界面模糊、分辨率差异和动态布局影响,导致识别准确率波动剧烈。Open-AutoGLM引入基于视觉语义增强的抗模糊算法,显著提升了复杂环境下的UI解析能力。该技术融合多尺度特征提取与上下文感知注意力机制,使模型在低清晰度或部分遮挡条件下仍能稳定定位关键控件。

核心技术创新点

  • 采用轻量化卷积分支提取边缘与纹理信息,增强模糊图像中的可辨识特征
  • 引入GLM(Global-Local Matching)对齐策略,实现跨分辨率模板匹配
  • 结合OCR输出与视觉布局进行语义校验,降低误检率

典型应用场景示例代码

# 初始化抗模糊识别引擎
from openautoglm import UIFuzzyDetector

detector = UIFuzzyDetector(
    model_path="glmx-small",
    enable_context_enhance=True,
    resolution_agnostic=True
)

# 执行模糊截图中的按钮识别
result = detector.detect(
    image_path="screenshot_blurred.png",
    target_label="登录",
    fuzzy_threshold=0.6  # 允许较低清晰度匹配
)
print(result.bbox)  # 输出:[x1, y1, x2, y2]

性能对比数据

算法方案平均识别准确率模糊图像表现响应延迟
传统模板匹配52%差80ms
Open-AutoGLM(启用抗模糊)94%优110ms
graph TD A[原始模糊图像] --> B{预处理模块} B --> C[去噪与锐化增强] C --> D[多尺度特征提取] D --> E[GLM语义对齐] E --> F[控件边界框输出] F --> G[结果置信度评估]

第二章:Open-AutoGLM抗模糊算法核心原理

2.1 模糊图像退化建模与成因分析

模糊图像的退化通常源于光学系统缺陷、运动抖动或对焦不准等因素。建立准确的退化模型是图像复原的基础。
退化函数的数学表达
图像模糊可建模为清晰图像 $I(x,y)$ 与点扩散函数(PSF)$h(x,y)$ 的卷积,叠加加性噪声 $n(x,y)$:

g(x, y) = h(x, y) * I(x, y) + n(x, y)
其中 $*$ 表示二维卷积操作,$g(x,y)$ 为观测到的模糊图像。该模型为后续去卷积算法提供理论依据。
主要退化类型对比
退化类型成因PSF特征
运动模糊相机或物体移动线性均匀分布
离焦模糊镜头失焦圆形对称
散焦模糊景深不足非均匀径向扩展

2.2 基于频域增强的预处理机制设计

在信号预处理中,频域增强能有效提升特征可分性。通过傅里叶变换将时域信号转换至频域,可针对性地强化关键频率成分。
频域滤波流程
  • 对输入信号进行FFT变换
  • 设计带通滤波器保留目标频段
  • 应用谱增强函数放大弱信号分量
  • 逆变换还原时域信号
核心增强代码实现

import numpy as np

def frequency_enhancement(signal, fs):
    # FFT 转换
    freq_signal = np.fft.fft(signal)
    freqs = np.fft.fftfreq(len(signal), 1/fs)
    
    # 构建增强核:放大 0.5~8Hz 成分
    mask = (freqs >= 0.5) & (freqs <= 8.0)
    enhancement_kernel = np.ones_like(freqs)
    enhancement_kernel[mask] *= 2.5  # 增益系数
    
    # 应用增强并IFFT还原
    enhanced_spectrum = freq_signal * enhancement_kernel
    return np.fft.ifft(enhanced_spectrum).real
上述函数中,fs为采样率,确保频率定位准确;增强核对目标频段施加2.5倍增益,突出生理相关信号(如脑电α波)。该机制显著提升后续分类模型的输入质量。

2.3 多尺度特征融合网络结构解析

多尺度特征融合网络通过整合不同层级的特征图,提升模型对目标尺寸变化的鲁棒性。深层网络具有丰富的语义信息,而浅层网络保留了精细的空间细节,二者结合可实现更精准的检测与分割。
特征金字塔结构
典型结构如FPN(Feature Pyramid Network)通过自顶向下路径与横向连接融合多层特征。每一层输出统一维度的特征图,用于后续任务分支处理。
融合方式对比
  • 相加(Add):要求张量维度一致,计算高效
  • 拼接(Concat):保留全部信息,通道数增加
  • 注意力加权:动态分配不同尺度权重
# 简化的特征融合模块
class MultiScaleFusion(nn.Module):
    def __init__(self, channels):
        self.conv1x1 = Conv1x1(channels, channels)  # 调整通道
        self.upsample = nn.Upsample(scale_factor=2)
    
    def forward(self, high_feat, low_feat):
        high_feat = self.upsample(high_feat)
        low_feat = self.conv1x1(low_feat)
        return torch.cat([high_feat, low_feat], dim=1)  # 拼接融合
该模块将高层特征上采样后与低层特征拼接,增强空间分辨率的同时保留语义信息,适用于目标检测中的特征增强。

2.4 自适应注意力校正模块实现

核心机制设计
自适应注意力校正模块通过动态调整注意力权重分布,缓解因输入特征偏移导致的模型性能下降。其核心在于引入可学习的校正因子,对原始注意力矩阵进行仿射变换。

class AdaptiveAttentionCorrection(nn.Module):
    def __init__(self, dim):
        super().__init__()
        self.gamma = nn.Parameter(torch.zeros(dim))
        self.beta = nn.Parameter(torch.zeros(dim))
        self.softmax = nn.Softmax(dim=-1)

    def forward(self, attn):
        # attn: (B, heads, N, N)
        corrected = self.gamma * self.softmax(attn) + self.beta
        return corrected
上述代码中,gamma 和 beta 为可学习参数,分别控制注意力权重的缩放与偏移。通过在训练过程中联合优化,模型能自动校准注意力分布,增强对噪声或异常激活的鲁棒性。
优势分析
  • 轻量化设计,仅引入两组向量参数,计算开销低
  • 端到端可微,便于集成至现有架构
  • 适用于多种注意力变体,具备良好通用性

2.5 算法鲁棒性验证与理论边界探讨

鲁棒性测试框架设计
为评估算法在异常输入和噪声干扰下的稳定性,构建基于扰动注入的测试框架。通过引入高斯噪声、数据缺失和对抗样本,量化输出偏差。

import numpy as np
def add_noise(data, noise_level=0.1):
    """向输入数据添加高斯噪声"""
    noise = np.random.normal(0, noise_level, data.shape)
    return data + noise
该函数模拟现实场景中的传感器误差,noise_level 控制扰动强度,用于测试模型输出的波动范围。
理论性能边界分析
使用李普希茨常数(Lipschitz Constant)衡量算法敏感度,建立输入变化与输出变化之间的数学上界。
噪声级别准确率均值标准差
0.098.2%0.01
0.195.7%0.03
0.389.4%0.08
实验表明,当噪声超过阈值 0.3 时,系统进入非线性响应区,鲁棒性显著下降。

第三章:抗模糊算法工程化实现路径

3.1 端到端识别流水线集成方案

在构建高效的端到端识别系统时,关键在于将数据预处理、特征提取、模型推理与后处理模块无缝集成。通过统一的流水线架构,可显著提升识别准确率与系统响应速度。
核心组件协同流程
系统采用异步任务队列协调各阶段处理:
  1. 原始图像输入后进行归一化与尺寸校准
  2. 使用CNN骨干网络提取多尺度特征图
  3. 序列建模层(如BiLSTM)捕捉上下文依赖
  4. CTC解码输出最终识别结果
代码实现示例

# 流水线推理函数
def inference_pipeline(image):
    image = preprocess(image)          # 预处理
    features = cnn_model(image)        # 特征提取
    sequence = lstm_layer(features)    # 序列建模
    text = ctc_decode(sequence)        # 解码输出
    return text
该函数封装了从图像到文本的完整转换逻辑,各阶段参数经联合优化,在保持低延迟的同时提升识别鲁棒性。
性能对比表
方案准确率延迟(ms)
分步处理89.2%156
端到端集成93.7%98

3.2 轻量化部署与推理加速实践

在模型部署中,轻量化与推理加速是提升服务响应效率的关键环节。通过模型剪枝、量化和知识蒸馏等手段,可显著降低计算资源消耗。
模型量化示例

import torch
# 将浮点模型转换为8位整数量化模型
quantized_model = torch.quantization.quantize_dynamic(
    model, {torch.nn.Linear}, dtype=torch.qint8
)
上述代码使用PyTorch的动态量化功能,将线性层权重转为8位整数,减少模型体积并提升推理速度,尤其适用于边缘设备。
常见优化策略对比
方法压缩率精度损失适用场景
剪枝2-3倍低高并发服务
量化4倍中移动端部署
蒸馏1.5倍低小模型训练

3.3 在线学习与动态模型更新策略

在流式数据场景中,模型需持续适应新数据分布。在线学习通过增量方式更新参数,避免全量重训。
梯度更新机制
采用随机梯度下降(SGD)进行实时参数调整:

for x, y in data_stream:
    pred = model.predict(x)
    loss = (pred - y) ** 2
    grad = 2 * (pred - y) * x
    model.weights -= lr * grad
该代码实现逐样本权重更新,lr为学习率,控制更新步长,防止过拟合突变数据。
模型热更新策略
  • 双缓冲机制:维护新旧模型副本,完成评估后原子切换
  • 影子模式:并行运行新模型,对比输出一致性
  • 版本回滚:监控性能下降时自动恢复至稳定版本
更新触发条件对比
策略触发条件延迟
时间驱动固定周期低
数据驱动累积N条新样本中
变化检测概念漂移识别高

第四章:典型应用场景性能实测对比

4.1 移动端截图模糊场景下的识别表现

在移动端自动化测试中,图像识别常面临截图模糊的问题,尤其在低分辨率设备或快速滚动场景下,识别准确率显著下降。
模糊图像的预处理策略
为提升识别鲁棒性,通常引入图像预处理流程。常见的操作包括高斯模糊增强与直方图均衡化:
import cv2
# 读取灰度图并进行直方图均衡化
img = cv2.imread('screenshot.png', 0)
equalized = cv2.equalizeHist(img)
# 应用高斯滤波去噪
processed = cv2.GaussianBlur(equalized, (5, 5), 0)
该代码段首先通过直方图均衡化增强对比度,使特征更清晰;随后使用高斯滤波抑制噪声,避免误匹配。参数 (5, 5) 表示卷积核大小,平衡去噪效果与细节保留。
不同模糊程度下的识别准确率对比
模糊类型标准偏差识别准确率
无模糊098.2%
轻微模糊1.089.7%
严重模糊3.067.4%
实验表明,随着模糊程度增加,特征点丢失加剧,导致模板匹配成功率下降。

4.2 视频帧中低分辨率UI元素提取效果

在处理视频帧中的UI元素时,低分辨率环境对特征识别构成显著挑战。传统边缘检测算法往往难以保留细小文本与图标的轮廓信息。
预处理增强策略
采用自适应直方图均衡化(CLAHE)提升局部对比度:
import cv2
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
enhanced = clahe.apply(gray_frame)
该方法通过限制对比度拉伸幅度,避免噪声过度放大,tileGridSize参数控制局部区域大小,直接影响细节恢复精度。
多尺度特征融合检测
结合SSD网络结构,在不同卷积层提取UI组件:
  • conv4_3层捕获高频纹理(如边框)
  • fc7层识别语义结构(如按钮功能)
分辨率mAP@0.5
480p0.61
720p0.73

4.3 多语言混合界面的容错能力测试

在多语言混合界面中,不同语言字符集、文本方向和渲染方式可能导致界面异常。为验证系统的容错能力,需模拟各类异常输入场景。
常见异常场景
  • 混合使用从左到右(LTR)与从右到左(RTL)语言
  • 超长字符串或特殊Unicode字符(如emoji)注入
  • 缺失翻译资源时的降级处理
自动化测试示例

// 模拟多语言输入容错测试
function testMixedLanguageRendering(input) {
  try {
    const rendered = renderUI(input);
    return isValidLayout(rendered); // 验证布局完整性
  } catch (error) {
    logError(`Rendering failed for: ${input}`, error);
    return false;
  }
}
该函数模拟多种语言输入下的界面渲染流程,捕获异常并评估布局有效性。参数 input 可包含混合语言字符串,如中英文夹杂或阿拉伯语与数字共存。
测试结果对比
语言组合布局崩溃文字截断通过率
中文 + 英文否轻微98%
阿拉伯文 + 法文是严重76%

4.4 与传统OCR及CV方法的横向 benchmark

在评估现代文档理解系统时,与传统OCR和计算机视觉方法的性能对比至关重要。传统OCR工具如Tesseract依赖规则驱动的文本检测与静态字典识别,在复杂版面或低质量扫描件中表现受限。
准确率与鲁棒性对比
方法字段识别准确率图像噪声容忍度
Tesseract 478%低
OpenCV + 模板匹配82%中
深度学习端到端模型96%高
典型预处理代码示例

# 使用OpenCV进行图像二值化预处理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
该代码通过Otsu算法自动确定阈值,提升文本与背景分离效果,但对光照不均敏感,需配合形态学操作增强。 现代方法融合注意力机制与语义建模,显著优于基于特征工程的传统流程。

第五章:未来演进方向与生态开放计划

架构升级路径
系统将逐步引入服务网格(Service Mesh)架构,提升微服务间的通信可观测性与安全控制。基于 Istio 的流量镜像功能,可在灰度发布中实现生产流量复制验证:
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: user-service-route
spec:
  hosts:
    - user-service
  http:
    - route:
        - destination:
            host: user-service
            subset: v1
          weight: 90
        - destination:
            host: user-service
            subset: v2
          weight: 10
      mirror:
        host: user-service
        subset: v2
      mirrorPercentage:
        value: 100
开发者生态激励
为加速平台能力外延,我们将推出开源插件 SDK 并设立年度创新基金。社区贡献者可通过以下方式接入:
  • 提交符合 OpenTelemetry 规范的监控适配器
  • 开发支持多云资源调度的 Provider 插件
  • 参与 API 网关策略模块的性能优化挑战赛
跨平台互操作路线图
季度集成目标认证标准
Q3 2024Kubernetes CSI 驱动兼容通过 CNCF 存储工作组认证
Q1 2025支持 WebAssembly 模块运行时符合 WASI 社区规范 v0.2

外部系统接入流程:

  1. 注册 OAuth2.0 客户端凭证
  2. 订阅事件总线 AMQP 主题
  3. 实现幂等性消息消费逻辑
  4. 通过沙箱环境压力测试
基于图片识别的 UI 自动化测试工具 SikuliX SikuliX 是一款开源的 GUI自动化测试工具,它的前身是 Sikuli(上帝之眼).不同于传统的 UI自动化测试工具, SikuliX 在执行鼠标键盘自动化时是基于图片识别的,也就是说我们的脚本逻辑可以由"鼠标移动到坐标 x,y"变成"鼠标移动到指定图案上" 阅读详情

相关推荐

UI自动化+python元素识别

Web 网页自动化中的元素定位:为了在指定的元素上进行操作 如何才能那个进入元素定位: 1.了解元素的信息,网页中查看元素的信息 1)利用谷歌开发者工具--谷歌--右上角菜单--更多工具---开发者工具 右击定位元素--检查按钮 火狐开发者工具 第二个步骤:利用selenium中的元素定位api,去识别操作元素 开发者工具打开步骤:谷歌浏览器-右上角三个点--更多工具-- 开发者工具--找到定位工具 初级定位方法: driver.find_element(By.NAME,'wd.

daodan_feiba的博客 1074

opencv 水果识别+UI界面识别系统,可训练自定义的水果数据集

基于python+pyqt+opencv的HOG图像特征提取算法、以及SVM支持向量机算法的水果识别系统

m0_56175815的博客 4358

ui手写字识别

cnn网络手写字,pyqt做的UI,可以自己实际测试网络性能

UI 测试难题!自动化识别图片的正确率如何达到100%!

在ui自动化测试领域,会遇到这样的情形:发布一张图片或上传一个头像,如何通过自动化测试的方式判定发布后的图片是否正确呢?又或者,我们如何通过自动化测试的方式判定某网页的某个logo是否与预期的一致呢?也许,你会想,要是能够自动比对图片,将差异化的点在图片上圈出来就好了。相信我,只要你想,就会有。

1281

UI识别工具 uispy

The UI Spy tool enables developers and testers to view and interact with the user interface (UI) elements of an application. By viewing the application's UI hierarchical structure, property values, and raised events, developers and testers can verify that the UI they are creating is programmatically accessible to assistive technology devices such as screen readers.

政府科技管理者如何提升区域科技成果转化项目的评价与筛选效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

opencv 文档识别+UI界面识别系统

基于opencv+pyqt的文档识别系统

m0_56175815的博客 2756

mysql笔记:23. 在Mac上安装与卸载MySQL

MySQL对Mac电脑的适配十分强大,再加上Mac本身就是Unix操作系统演化而来的,所以在Mac上安装MySQL的方式有多种。常见的方法有如下三种:DMG、brew、TAR。介绍这些方法前,我们先了解下MySQL安装文件的下载。

斌斌(Java) 2249

Youtu-VL-4B-Instruct实际作品:10类UI控件(按钮/输入框/开关)识别结果可视化源码

本文介绍了如何在星图GPU平台上自动化部署腾讯优图实验室开源的Youtu-VL-4B-Instruct-GGUF多模态指令模型,并展示了其核心应用场景。该模型能够精准识别软件界面中的10类常见UI控件(如按钮、输入框、开关等),并通过可视化源码将检测结果直观呈现,为自动化UI测试与界面理解提供了高效工具。

weixin_42499004的博客 415

2024年全国大学生电子设计竞赛H题_自动行驶小车

自动行驶小车(H题)【本科组/高职高专组】

qq_74395263的博客 1万+

fMRI数据处理:从DICOM到NIFTI(上)

哈喽,这里是系列fMRI数据处理文章专栏。包括从核磁拷贝完DICOM格式的文件,到整理数据,检查数据,数据预处理,后续分析等等内容。如果你是一个初学者,特别是心理学或者是刚踏入认知神经科学的小白,那么这个专栏可以帮助你从头到尾完成数据处理直到结果的可视化。如果你已经进入了认知神经科学领域,这里面的内容可能过于细致,并且找不到你想要的答案,不过可以在帖子下留言评论,欢迎大家提供宝贵的意见!如果是医学相关,可能这些内不太准确或专业,谨慎参考!

weixin_44933894的博客 2482

UI元素无法识别的常见原因

测试地址没正确打开; 定位器选择错误; 定位字符串错误; 元素嵌套在frame中; 页面元素没及时的加载,设置等待时间; 元素在新出现的窗口中; 脚本编写的和实际的业务执行不一致。

test_esay 1433

BF8815A

了解ADBMS1818芯片的人会发现,这款BF8815B和1818有着很多相似的东西,当你了解其中一款AFE之后,另一款你的上手也会特别快,下面文章是我针对1818梳理的一些重要知识点,此篇文章主要讲解BF8815B的一些差异点。

m0_61973119的博客 561

UI自动化中的图片文字识别

UI自动化中的图片文字识别 一.通过超级鹰脚本实现对图片文字的识别 1、超级鹰网址:http://www.chaojiying.com/ 2、下载Python脚本 3、超级鹰的价格体系以及我们后面需要用到的验证码类型 4、关注超级鹰公众号免费领取1000题分 5、超级鹰进入用户中心生成新的软件ID 6、下载好的Python脚本 #!/usr/bin/env python # coding:utf-8 import requests from hashlib import md5 class C

weixin_47702881的博客 885

Open3D (C++) KD tree的使用【2025最新版】

Open3D (C++) KD tree的使用,博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 1566

使用Transformer实现自动调制识别(RML2016a)

image_size = 128 # resize重置输入大小patch_size = 2 # 从输入图片(信号看作图片)中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x)(x1, x1)# MLP.# Add MLP.x=x_train,y=y_train,filepath,round。

QAQIknow的博客 6276

如何使用深度学习识别 UI 界面组件?

导读:智能生成代码平台 imgcook 以 Sketch、PSD、静态图片等形式的视觉稿作为输入,可以一键生成可维护的前端代码,但从设计稿中获取的都是 div、img、span 等元件,...

淘系技术 5226

Python爬虫实战:利用Scrapy+Playwright高效爬取TED演讲数据

在当今信息爆炸的时代,TED演讲作为全球知名的思想传播平台,汇聚了各领域顶尖人才的精彩分享。对于数据分析师、研究人员或内容创作者来说,获取TED演讲的完整数据集具有重要价值。本文将详细介绍如何使用Python中最先进的爬虫技术组合——Scrapy框架配合Playwright浏览器自动化工具,高效爬取TED演讲的完整数据。传统爬虫技术在处理现代动态网页时面临诸多挑战,而本文将展示如何利用最新工具解决这些问题。

2201_76125261的博客 205

基于图像识别的ui操作--4

今天第一次把图片识别应用到实际的测试脚本中。windows环境下,效果不错。 更新一个方法 pics_match(*args) *args为传入的待匹配图片 #循环对传入的图片进行匹配,可以选择check_and_click()方法 或 wait_and_match_process() 方法进行匹配,匹配一轮后没有 #合适的结果则抛出异常,否则可以进行点击,返回True def ...

weixin_44785098的博客 349

matlab 一维相位解缠

一维相位解缠算法的matlab代码实现。

点云侠的博客 372

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UI-手势识别

基类UIGestureRecogizer typedef NS_ENUM(NSInteger, UIGestureRecognizerState) { UIGestureRecognizerStatePossible, // 手势识别默认状态,可能为发生手势识别,或者识别还没有完成 UIGestureRecognizerStateBegan, ...

dlzlnuwl37818的博客 215

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

基于图像识别的ui操作--1

```python import os import time import multiprocessing import Base import cv2 as cv import traceback ''' 1 首先在截屏尺寸图上截屏 ''' class Click_pic(): def __init__(self,match_pic,driver=None,cut=(2,1),u...

weixin_44785098的博客 772

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 揭秘Open-AutoGLM智能调节系统:如何让您的家居能耗降低40%?
下一篇: 【大模型推理新纪元】:Open-AutoGLM如何实现GPU加速的极限压榨
InstrIsle
博客等级 码龄1年 130粉丝 1977原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值