/images/avatar.jpg

我的个人博客

卷积神经网络的特点

参考1 参考2 1.稀疏连接 卷积层与下一层的连接数大大减小 或者可以说是上一层的某一个神经元只影响了下一层的某些神经元,而不是全部神经元 或者说是下一层的某一神经元只被上一层的某些神经元所影响,而不是全部神经元 2.参数共享 作为参数的卷积核$w^(l)$对于第$l$层的所有的神经元都是相同的。 参数共享可以理解为一个卷积核直捕捉输入数据中的一种特定的局部特征,因此,如果要提取多种特征就需要使用多个不同的卷积核。 3.等变表示 卷积层负责提取特征,采样层负责特征选择,全连接层负责分类

可控人物图像生成综述

1.姿态表示的错误 2.由于身体自遮挡造成的姿态表示的模棱两可 3.稀少的姿态 4.稀少的外观 5. 从2D的层面来说肢体的遮挡是无可避免的 姿态引导下任务图像生成是计算机视觉领域一个热门的研究方向。该任务的目标为在目标姿态的引导下,在保留源图像外观的基础上进行人物姿态的转变。姿态引导下人物图像生成研究具有广泛的应用价值:例如图像编辑、电影制作、AR技术、虚拟换装、以及数据增强等。在这些应用中,用户通常会关注语义和细节更加丰富的部分,例如脸部和服装的细节。因此对语义信息进行保留以及对细粒度外观特征进行补充对于姿态引导下图像生成模型具有重要的意义。 姿态引导下的图像生成研究大致可以分为三种方法:全局预测方法、局部映射方法以及混合方法 全局预测方法 受到图像翻译工作的启发,早期的姿态引导下图像生成研究通常采用了全局预测的方法来直接将源图像姿态直接转换为目标姿态。例如文献【】中提出的模型中采用了具有跳跃连接的U-net进行图像的生成,其中跳跃连接用于前向传递解码特征给编码器。但是这种基于全局预测的方法缺乏捕获相应局部特征的能力,这会导致生成图像中细节的缺失,例如生成平滑的服装或者是变形的姿态。究其原因在于U-net首先文献【】被提出用于解决图像分割问题,其原域的图像与目标域的图像的局部结构是对齐的,解码器的特征映射与编码器的特征映射具有相同的空间分布,属于强约束。而对于姿态转换问题,由于人体非刚性的特点,(由于视角变化或者是姿态变化)输入图像和目标图像具有不同的空间位置,其特征映射是未对齐的,对于未对齐的特征映射则不属于强约束。因此直接使用U-net的跳跃连接只能够为解码器提供未对齐的特征映射,这对于进行姿态转换并不能取得很好的效果。 具体解释: 假设U-net的结构如上,其中Encoder中进行的是的是源图像$I_s$和目标姿态$P_t$的信息融合,所以Encoder中的特征Encoder feature表示的是源姿态$P_s$和目标姿态$P_t$的一种融合信息(当然还包括了源图像的外观),而latent code可以理解为源图像的姿态已经转变为目标姿态(保留了源图像的外观),因此latent code可以视为生成$I_g$.(需要经过Decoder编码)。所以Encoder feature和latent code(可以理解为Decoder feature)在局部是不对齐的。 思考一下U-net中的跳跃连接的作用是什么:是为了前向传递Encoder feature,这能够有效的保留源图像中的信息。(保留图像中的局部信息,保留细节) 但是在姿态引导下的图像生成研究中,前向传递的特征是不对齐的,这会导致导致模型无法很好的捕获局部的信息,使得生成的图像细节的缺失,例如生成平滑的服装或者是变形的姿态 局部映射方法 针对全局预测方法存在的缺陷,文献【】提出了一种改进的特征融合机制,对前向传递的解码器特征进行仿射变换后再传递给编码器。受到该方法的启发,有许多的研究人员采用了局部映射方法来进行姿态引导下的图像生成研究进行细粒度挖掘,例如例如引入薄板样条函数来进一步促进了非线性局部映射、引入了局部注意力机制增强了在局部映射建模中的灵活性、除此之外还有光流法以及3D 建模法等。由于局部映射方法往往需要对应的精确特征来进行细节重构,然而在实际的情况中,图像中人物往往由于视角的变化、遮挡或者姿态变化出现不可见的区域,这会导致源图像和目标图像中的某些部分区域无法对应,这些无法对应的部分就无法使用局部映射方法,这会导致相应部分的生成内容不确定。 常用的局部映射方法:仿射变换,薄板样条,局部注意力机制,光流法,3D建模 仿射变换和薄板样条不够灵活 3D建模的计算量太大 混合方法 针对局部映射方法存在的缺陷,混合方法尝试利用另外一个全局预测分支在不对应部分生成新的内容,并与局部映射方法生成的内容相结合。但是现有的混合方法只是尝试在图像级别将生成结果进行混合,中间层的特征融合很少被研究。具体来说全局预测分支通常独立于局部映射方法,这使得两者生成的内容在风格上是不一致的。

各种激活函数

参考 sigmoid $$ f(z)=\frac{1}{1+e^{-z}} $$ 其图像如下: 特点 能够将输入的连续实值变换为0到1之间的输出 缺点 在深度神经网络中梯度反向传播是容易造成梯度爆炸和梯度消失 sigmoid导数 $$ f’(z)=\frac{e^{-z}}{(1+e^{-z})^2} $$ 其导数图像如下: tanh $$ tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} $$ 其图像如下: 特点 解决了sigmoid函数不是zero-centered的问题, 但是梯度消失依旧存在 导数 $$ tanh’(x)=1-(\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}})^2 $$ 导数图像 Relu $$ Relu(x)=max(0,x) $$ 函数图像 导数 $$ Relu’(x)=\left{ \begin{array}{lr} 1 &x>0 \ 0 &x<0 \end{array} \right. $$ 优点 解决了梯度消失问题 计算速度非常快 收敛速度远快于sigmoid和tanh 缺点 输出的不是zero-centered 有些神经元可能永远不会被激活(Dead ReLU) 不好的参数初始化 学习率过高, 导致网络不幸进入这种情况 Leaky Relu(PRelu) $$ f(x)=max(\alpha x,x) $$

学习率的调整

参考 目标函数损失值 曲线 曲线 初始时 上扬 [红线]: Solution:初始 学习率过大 导致 振荡,应减小学习率,并 从头 开始训练 。 曲线 初始时 强势下降 没多久 归于水平 [紫线]: Solution:后期 学习率过大 导致 无法拟合,应减小学习率,并 重新训练 后几轮 。 曲线 全程缓慢 [黄线]: Solution:初始 学习率过小 导致 收敛慢,应增大学习率,并从头 开始训练。

最大似然估计、最大后验估计以及贝叶斯公式的理解

概率和统计的区别? 概率(probabilty)和统计(statistics)看似两个相近的概念,其实研究的问题刚好相反。 概率研究的问题是,已知一个模型和参数,怎么去预测这个模型产生的结果的特性(例如均值,方差,协方差等等)。 举个例子,我想研究怎么养猪(模型是猪),我选好了想养的品种、喂养方式、猪棚的设计等等(选择参数),我想知道我养出来的猪大概能有多肥,肉质怎么样(预测结果)。 统计研究的问题则相反。统计是,有一堆数据,要利用这堆数据去预测模型和参数。仍以猪为例。现在我买到了一堆肉,通过观察和判断,我确定这是猪肉(这就确定了模型。在实际研究中,也是通过观察数据推测模型是/像高斯分布的、指数分布的、拉普拉斯分布的等等),然后,可以进一步研究,判定这猪的品种、这是圈养猪还是跑山猪还是网易猪,等等(推测模型参数)。 一句话总结:概率是已知模型和参数,推数据。统计是已知数据,推模型和参数。 显然,本文解释的MLE和MAP都是统计领域的问题。它们都是用来推测参数的方法。为什么会存在着两种不同方法呢? 这需要理解贝叶斯思想。我们来看看贝叶斯公式。 什么是贝叶斯公式? … 极大似然估计 极大似然估计,通俗 理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值! 换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。(给定样本来推测模型的参数) 极大后验估计