当前位置: 首页 > news >正文

计算机视觉CS231n学习(7)

可视化和理解

这里主要是对CNN中间的层的结果可视化

  1. 滤波器可视化

    直接可视化网络各层的滤波器权重,高层滤波器的可视化结果趣味性较低,而底层滤波器通常对应边缘、纹理等基础视觉特征

    (“高层滤波器” 通常指的是网络中靠后的卷积层所包含的滤波器)

  2. 最后一层特征分析

    提取最后一层全连接层的高维特征向量,通过近邻搜索找到特征空间中相似的图像,比像素空间的近邻搜索更符合语义相似性。

    利用主成分分析PCA 或 t-SNE等降维算法,将高维特征向量映射到二维空间,可视化特征分布,直观展示不同类别的聚类情况

  3. 激活值可视化

    将卷积层的特征图可视化为灰度图像,观察神经元对输入图像的响应,通过最大激活补丁方法(Maximally Activating Patches),筛选出能最大程度激活特定通道的图像补丁,理解该通道关注的视觉模式

  4. 遮挡实验与显著性图

    1. 遮挡实验 Occlusion Experiments

      通过遮挡图像的不同区域,绘制分类概率的热力图,判断哪些区域对分类结果影响最大(比如遮挡小猪头部会显著降低猪类别的概率)

    2. 显著性图 Saliency Maps

      作用:判断哪些像素对分类重要

      计算类别得分相对于图像像素的梯度,取绝对值后在RGB通道上取最大值,以及结合GrabCut进行无监督分割,得到对分类起关键作用的像素区域(比如狗类别的显著性图集中在狗的轮廓区域)

  5. 反向传播Backprop 与梯度上升Gradient Ascent

    1. 引导反向传播

      通过限制ReLU层仅反向传播正梯度,生成更清晰的中间神经元响应图像,展示神经元关注的图像区域

      就是通过引导反向传播可视化中间特征,即选择单个中间神经元并计算其值对图像像素的梯度

    2. 梯度上升

      步骤:初始化图像、前向计算分数、反向传播求梯度、更新图像

      通过优化生成合成图像,最大化特定神经元或类别得分(加入L2正则化等约束使图像更自然)

      还可以使用更好的正则化方法(如高斯模糊、裁剪小值像素等)

基于神经网络可视化一些相关的应用

  1. 欺骗性图像 / 对抗样本 Fooling Images / Adversarial Examples

    生成步骤:从任意图像出发,选择类别,修改图像最大化类别,至网络被欺骗

    通过修小修改图像(人眼难以察觉),使网络误分类(比如将大象误分类为小狗),揭示网络对细微扰动的敏感性

  2. DeepDream

    通过放大网络某层的神经元激活值,迭代优化图像,生成具有梦幻风格的图像(比如将星空图像转化为充满眼睛和纹理的抽象图案)。

    核心是通过梯度上升最大化层激活(指让CNN中特定层的神经元激活值尽可能增大,在CNN中,当输入图像经过各层的卷积和池化等操作时,每一层的神经元会根据输入产生相应的输出值,这些输出值就是神经元的激活值)的平方和,过程中使用图像抖动、梯度归一化等技巧增强效果。

  3. 特征反演 Feature Inversion 与纹理合成 Texture Synthesis

    1. 特征反演

      给定图像的CNN特征向量,重建出与之匹配且自然的图像,通过总变差(Total Variation)正则化保证图像平滑

    2. 纹理合成

      1. 近邻方法:生成像素时复制输入中最近邻的邻域

      2. Gram矩阵法

        步骤:预训练CNN、计算输入纹理各层激活和Gram矩阵、从随机噪声初始化生成图像、计算损失并反向传播更新

        利用Gram矩阵(衡量特征通道间的共现关系),从随机噪声生成与输入纹理相似的大尺寸图像,不同层的Gram矩阵对应不同尺度的纹理特征

  4. 神经风格迁移 Neural Style Transfer

    1. 原理

      结合内容图像的特征(通过特征重建损失)和风格图像的Gram矩阵(通过风格损失),生成兼具内容与风格的图像

    2. 快速风格迁移

      训练前馈神经网络实现实时风格迁移,通过感知损失替代传统损失函数,并使用实例归一化(Instance Normalization)提升效果

      (前馈神经网络(Feedforward Neural Network,FNN)是一种最基本的神经网络结构,属于深度学习中的一种模型。它的特点是信息从输入层逐层向前传播,经过隐藏层(如果有的话),最终到达输出层,且在传播过程中没有反馈或循环。)

生成式模型
  1. 无监督学习 监督学习对比

    1. 监督学习:数据为(x,y),(x为数据,y为标签),目标是学习x到y的映射函数

      示例:分类、回归、目标检测、语义分割、图像描述等

    2. 无监督学习:数据仅为x(无标签),目标是学习数据的潜在结构

      示例:聚类、降维、特征学习、密度估计等

      (K-means聚类、主成分分析(PCA,降维)、自编码器(特征学习,通过编码器和解码器重建输入))

    3. 监督学习和无监督学习的核心差异:是否依赖标签(无监督学习不依赖标签)

  2. 生成模型

    1. 定义:给定训练数据,生成与训练数据同分布的新样本(训练数据服从P_data(x),生成样本服从P_model(x))

    2. 目标:是使P_model(x)接近P_data(x)

    3. 类型:

      显式密度估计(明确定义P_model(x))(强调模型能够“说清概率”,模型会直接给出概率分布的数学表达式,能够计算任意样本x的概率值P_model(x))

      隐式密度估计(仅能从P_model(x)采样,不明确定义)(强调模型能够“产出样本”,模型不提供P_model(x)的数学表达式,无法直接计算样本x的概率,但能通过模型生成符合该分布的样本)

    4. 应用:生成艺术作品、超分辨率、时间序列模拟等

    5. 模型:

      主要讲解三种主流模型:PixelRNN/CNN、VAE、GAN

  3. PixelRNN/CNN(显式)

    • 基于全可见信念网络,用链式法则将图像概率分解为像素的条件概率乘积
    • PixelRNN:用LSTM建模像素间依赖,从角落开始生成像素,生成速度慢
    • PixelCNN:用CNN建模上下文区域依赖,训练可并行(更快),但生成仍需顺序进行
    • 可计算显式概率p(x),样本质量好,但顺序生成效率低
    • 改进方法:门控卷积层、残差连接等(PixelCNN++)
  4. 变分自编码器(VAE)(显式)

    • 自编码器:自编码器通过编码器-解码器重建输入,用于特征学习
    • VAE原理:引入概率视角,假设数据由潜在变量z生成,通过编码器在这里插入图片描述
      近似后验分布,优化似然下界(含重建损失和KL散度)
    • 训练:最大化下界,使生成样本接近训练数据,潜在分布接近先验(如高斯分布)
    • 生成过程:从先验采样z,通过解码器生成x
    • 优点:原理严谨,潜在表示可解释
    • 缺点:样本较模糊,优化下界而非精确似然
  5. 生成对抗网络(GAN)(隐式)

    • 原理:生成器G从噪声生成样本,判别器D区分真实与生成样本,二者构成博弈(G视图欺骗D,D试图准确区分)

    • 训练:交替优化D(梯度上升)和G(梯度下降,最大化D的误判概率)

      • 为什么使使用梯度上升方法来优化D?
      • 判别器(D)的目标是最大化对 “真实样本判为真、生成样本判为假” 的概率,判别器的核心任务是学习一个函数,输出样本为真实数据的概率(范围在 0 到 1 之间)。训练时,对于真实样本,希望判别器输出尽可能接近 1;对于生成器生成的假样本,希望输出尽可能接近 0。这种 “最大化正确分类概率” 的目标,在数学上对应最大化判别器的损失函数(如交叉熵损失),而梯度上升正是用于最大化函数值的优化方法 —— 通过计算损失函数对判别器参数的梯度,沿着梯度方向更新参数,使损失函数值不断增大,从而提升判别器的区分能力
      • 生成器(G)的目标是最小化判别器的区分能力(即最大化判别器的误判概率),因此使用梯度下降来优化 —— 沿着损失函数梯度的反方向更新参数,使生成的样本更难被判别器识破
    • 卷积架构:生成器用反卷积,判别器用卷积,遵循DCGAN设计准则

    • 应用:

      生成高质量图像,支持潜在空间插值(如“微笑女性 - 中性女性 + 中性男声 = 微笑男性”),应用于域迁移(如马 → 斑马)

    • 优缺点:样本质量顶尖,但训练不稳定,无显式密度函数

  6. 三种生成模型对比:

    PixelRNN/CNN:显式密度,似然优化,生成慢

    VAE:下界优化,潜在表示有用,样本较模糊

    GAN:博弈机制,样本最佳,训练复杂

http://www.lryc.cn/news/617243.html

相关文章:

  • 《范仲淹传》读书笔记与摘要
  • MySQL数据库简介
  • MySQL-日志
  • Vue 3 快速入门 第六章
  • Linux操作系统从入门到实战(十九)进程状态
  • JS-第二十三天-正则
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • ZeroNews:如何构建安全(无需 V*N!)的工业物联网连接
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Salesforce案例:零售企业会员积分体系
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • [Shell编程] Shell 编程之免交互
  • C语言模拟 MCU 上电后程序的执行顺序 + 回调函数机制 + 程序计数器(PC)和堆栈的作用
  • LangVM —— 一站式多语言版本管理工具,让 Java、Python、Go、Node.js 切换更丝滑
  • CVE-2019-0708复刻
  • buildroot编译qt 5.9.8 arm64版本踩坑
  • Windows文件时间修改指南:从手动到自动化
  • AI驱动的智能编码革命:从Copilot到全流程开发自动化
  • FFmepg源码系列-avformat_open_input()
  • Python调用C/C++函数库的多种方法与实践指南
  • 聊天室全栈开发-保姆级教程(Node.js+Websocket+Redis+HTML+CSS)
  • MathType关联Wps实现公式编辑【Tex语法适配】
  • 2438. 二的幂数组中查询范围内的乘积
  • 【liunx】web高可用---nginx
  • 编译Android版本可用的高版本iproute2
  • 机器学习 - Kaggle项目实践(1)Titanic
  • C++多态详解
  • SDI设计中,为何SD-SDI模式下,接收器用DRU实现,在3G-SDI模式下,使用transceiver实现
  • 多轮会话记忆的核心挑战