first_report_gu

来源:互联网 发布:关于大数据的新闻报道 编辑:程序博客网 时间:2024/05/24 06:28

CNN

CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。该优点是使图像可以直接作为网络的输入,网络能自行抽取图像特征,包括颜色、纹理、形状及图像的拓扑结构,避免了传统识别算法中复杂的特征提取和数据重建过程,并且在位移、缩放及其它形式扭曲不变性(这是因为局部感知区域能够获得一些基础的特征,比如图像中的边界和角落等,这种方法能够提供一定程度对位移、拉伸和旋转的相对不变性。)的应用上具有良好的鲁棒性和运算效率等。

稀疏连接:在BP神经网络中,每一层的神经元节点是一个线性一维排列结构,层与层各神经元节点之间是全连接的。卷积神经网络中,层与层之间的神经元节点不再是全连接形式,利用层间局部空间相关性将相邻每一层的神经元节点只与和它相近的上层神经元节点连接,即局部连接。这样大大降低了神经网络架构的参数规模。

权重共享:在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置。而且权重共享提供了一种有效的方式,使要学习的卷积神经网络模型参数数量大大降低。

 

如果我们有一张1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都与图像的每一个像素点相连),这样就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。

然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域。所以假如局部感受野是10x10,隐层每个神经元只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。这就是稀疏连接的作用了。
由以上分析可知,隐含层的每一个神经元都连接10x10的图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。如果我们每个神经元对应的这100个参数是相同的(也就是说每个神经元用的是同一个卷积核去卷积图像。),这样就只有100个参数了!不管隐层有多少个神经元,两层间的连接就只有100个参数。这就是权值共享的作用了

网络结构该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。一般情况下,CNN的结构形式是:输入层--> Conv--> Pooling--> (重复ConvPooling) … --> FC(Full-connected)--> 输出结果。

卷积每个隐层神经元只与10*10的局部区域像素相连,这里的10*10就是滤波器的kernel sizestride就是滤波器的步长,即从一个隐层神经元到相邻隐层神经元之间的移动长度。一个kernel size2*2filter对图像进行扫描,每次移动的步长stride2,每条连接线上的权重固定,每次扫描后得到的值按照空间顺序组成一个feature map

池化使用pooling技术将小邻域内的特征点整合得到新的特征。把卷积得到的feature map看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。1.显著减少参数数量; 2.池化单元具有平移,旋转,伸缩不变性。

训练过层:训练算法主要包括四步,这四步被分为两个阶段:

第一阶段,向前传播阶段:

(1)、从样本集中取一个样本,输入网络;

(2)、计算相应的实际输出;在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常执行时执行的过程。

第二阶段,向后传播阶段:

(1)、计算实际输出与相应的理想输出的差;

(2)、按极小化误差的方法调整权矩阵。

 

 

FCN

CNN的识别是图像级的识别,输出的是一个概率值,属于某个类别的概率,而FCN的识别是像素级的识别,对输入图像的每一个像素在输出上都有对应的判断标注,标明这个像素最可能是属于一个什么物体/类别,输出的也是一站图片。简单的来说,FCNCNN的区别在于把CNN最后的全连接层转化成了卷积层,其所有的层都是卷积层,故称为全卷积网络。输出的是一张已经Label好的图片。

考虑在反卷积步骤时,考虑采用一部分较浅层的反卷积信息辅助叠加,更好的优化分割结果的精度。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2, 4, 8, 16, 32倍 ,对于最后一层的输出图像,需要进行32倍的反卷积处理,才能得到原图一样的大小。但是32倍还原的图片限于精度问题不能够很好地还原图像当中的特征,因此向前迭代,将conv4中的卷积核特征和上一次反卷积之后的图进行融合,最后将conv3中的卷积核特征对刚才反卷积之后的图像进行再次融合,最后就完成了整个图像的还原。

 

 

CRF

CRF是一个优化的过程,一般的图像分割:前端使用FCN进行粗分割,后端使用CRF精分割,优化前端的输出,得到最终的分割图。

条件随机场的目标函数是:

最小化上面的能量就可以找到最有可能的分割。
其中的一元势函数∑iΨu(xi)即来自于前端FCN的输出,它可以输出每个像素点,属于每个类别的概率值。而二元势函数如下: 

Ψp(xi,xj)=u(xi,xj)∑m=1Mω(m)k(m)G(fi,fj)
二元势函数就是描述像素点与像素点之间的关系。我们是希望图像分割的时候,在边缘的地方裂开的概率大一些(梯度越大的地方)。或者说我们希望两个相邻的像素如果差别越大,那么这两个像素属于不同类别的概率应该越大;如果两个相邻像素点的颜色非常接近,那么它们属于不同类别的概率应该越小。所以这样CRF能够使图片尽量在边界处分割。

整个过程分成4步:

1. Initialize: 首先从fcn-8s生成一个很粗糙的分割(如下图中虚线部分)

2. Message Passing. 传递相邻像素label之间的互相影响的关系。我们之前定义过k(fi, fj)的意义:
在平滑的部分若存在区域与区域的切分,则会产生很高的loss
在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss
也就是说这种Message Passing会很难穿过不平滑的部分(下图中实线的部分),所以label会像flood fill那样填充(如下图箭头方向)

3. Local Update. 更新权值。输出结果或者将Update后的dense label map作为新的Q进行新的一轮Iteration

CNN

CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。该优点是使图像可以直接作为网络的输入,网络能自行抽取图像特征,包括颜色、纹理、形状及图像的拓扑结构,避免了传统识别算法中复杂的特征提取和数据重建过程,并且在位移、缩放及其它形式扭曲不变性(这是因为局部感知区域能够获得一些基础的特征,比如图像中的边界和角落等,这种方法能够提供一定程度对位移、拉伸和旋转的相对不变性。)的应用上具有良好的鲁棒性和运算效率等。

稀疏连接:在BP神经网络中,每一层的神经元节点是一个线性一维排列结构,层与层各神经元节点之间是全连接的。卷积神经网络中,层与层之间的神经元节点不再是全连接形式,利用层间局部空间相关性将相邻每一层的神经元节点只与和它相近的上层神经元节点连接,即局部连接。这样大大降低了神经网络架构的参数规模。

权重共享:在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置。而且权重共享提供了一种有效的方式,使要学习的卷积神经网络模型参数数量大大降低。

 

如果我们有一张1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都与图像的每一个像素点相连),这样就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。

然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域。所以假如局部感受野是10x10,隐层每个神经元只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。这就是稀疏连接的作用了。
由以上分析可知,隐含层的每一个神经元都连接10x10的图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。如果我们每个神经元对应的这100个参数是相同的(也就是说每个神经元用的是同一个卷积核去卷积图像。),这样就只有100个参数了!不管隐层有多少个神经元,两层间的连接就只有100个参数。这就是权值共享的作用了

网络结构该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。一般情况下,CNN的结构形式是:输入层--> Conv--> Pooling--> (重复ConvPooling) … --> FC(Full-connected)--> 输出结果。

卷积每个隐层神经元只与10*10的局部区域像素相连,这里的10*10就是滤波器的kernel sizestride就是滤波器的步长,即从一个隐层神经元到相邻隐层神经元之间的移动长度。一个kernel size2*2filter对图像进行扫描,每次移动的步长stride2,每条连接线上的权重固定,每次扫描后得到的值按照空间顺序组成一个feature map

池化使用pooling技术将小邻域内的特征点整合得到新的特征。把卷积得到的feature map看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。1.显著减少参数数量; 2.池化单元具有平移,旋转,伸缩不变性。

训练过层:训练算法主要包括四步,这四步被分为两个阶段:

第一阶段,向前传播阶段:

(1)、从样本集中取一个样本,输入网络;

(2)、计算相应的实际输出;在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常执行时执行的过程。

第二阶段,向后传播阶段:

(1)、计算实际输出与相应的理想输出的差;

(2)、按极小化误差的方法调整权矩阵。

 

 

FCN

CNN的识别是图像级的识别,输出的是一个概率值,属于某个类别的概率,而FCN的识别是像素级的识别,对输入图像的每一个像素在输出上都有对应的判断标注,标明这个像素最可能是属于一个什么物体/类别,输出的也是一站图片。简单的来说,FCNCNN的区别在于把CNN最后的全连接层转化成了卷积层,其所有的层都是卷积层,故称为全卷积网络。输出的是一张已经Label好的图片。

考虑在反卷积步骤时,考虑采用一部分较浅层的反卷积信息辅助叠加,更好的优化分割结果的精度。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2, 4, 8, 16, 32倍 ,对于最后一层的输出图像,需要进行32倍的反卷积处理,才能得到原图一样的大小。但是32倍还原的图片限于精度问题不能够很好地还原图像当中的特征,因此向前迭代,将conv4中的卷积核特征和上一次反卷积之后的图进行融合,最后将conv3中的卷积核特征对刚才反卷积之后的图像进行再次融合,最后就完成了整个图像的还原。

 

 

CRF

CRF是一个优化的过程,一般的图像分割:前端使用FCN进行粗分割,后端使用CRF精分割,优化前端的输出,得到最终的分割图。

条件随机场的目标函数是:

最小化上面的能量就可以找到最有可能的分割。
其中的一元势函数∑iΨu(xi)即来自于前端FCN的输出,它可以输出每个像素点,属于每个类别的概率值。而二元势函数如下: 

Ψp(xi,xj)=u(xi,xj)∑m=1Mω(m)k(m)G(fi,fj)
二元势函数就是描述像素点与像素点之间的关系。我们是希望图像分割的时候,在边缘的地方裂开的概率大一些(梯度越大的地方)。或者说我们希望两个相邻的像素如果差别越大,那么这两个像素属于不同类别的概率应该越大;如果两个相邻像素点的颜色非常接近,那么它们属于不同类别的概率应该越小。所以这样CRF能够使图片尽量在边界处分割。

整个过程分成4步:

1. Initialize: 首先从fcn-8s生成一个很粗糙的分割(如下图中虚线部分)

2. Message Passing. 传递相邻像素label之间的互相影响的关系。我们之前定义过k(fi, fj)的意义:
在平滑的部分若存在区域与区域的切分,则会产生很高的loss
在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss
也就是说这种Message Passing会很难穿过不平滑的部分(下图中实线的部分),所以label会像flood fill那样填充(如下图箭头方向)

3. Local Update. 更新权值。输出结果或者将Update后的dense label map作为新的Q进行新的一轮Iteration

CNN

CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。该优点是使图像可以直接作为网络的输入,网络能自行抽取图像特征,包括颜色、纹理、形状及图像的拓扑结构,避免了传统识别算法中复杂的特征提取和数据重建过程,并且在位移、缩放及其它形式扭曲不变性(这是因为局部感知区域能够获得一些基础的特征,比如图像中的边界和角落等,这种方法能够提供一定程度对位移、拉伸和旋转的相对不变性。)的应用上具有良好的鲁棒性和运算效率等。

稀疏连接:在BP神经网络中,每一层的神经元节点是一个线性一维排列结构,层与层各神经元节点之间是全连接的。卷积神经网络中,层与层之间的神经元节点不再是全连接形式,利用层间局部空间相关性将相邻每一层的神经元节点只与和它相近的上层神经元节点连接,即局部连接。这样大大降低了神经网络架构的参数规模。

权重共享:在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置。而且权重共享提供了一种有效的方式,使要学习的卷积神经网络模型参数数量大大降低。

 

如果我们有一张1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都与图像的每一个像素点相连),这样就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。

然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域。所以假如局部感受野是10x10,隐层每个神经元只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。这就是稀疏连接的作用了。
由以上分析可知,隐含层的每一个神经元都连接10x10的图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。如果我们每个神经元对应的这100个参数是相同的(也就是说每个神经元用的是同一个卷积核去卷积图像。),这样就只有100个参数了!不管隐层有多少个神经元,两层间的连接就只有100个参数。这就是权值共享的作用了

网络结构该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。一般情况下,CNN的结构形式是:输入层--> Conv--> Pooling--> (重复ConvPooling) … --> FC(Full-connected)--> 输出结果。

卷积每个隐层神经元只与10*10的局部区域像素相连,这里的10*10就是滤波器的kernel sizestride就是滤波器的步长,即从一个隐层神经元到相邻隐层神经元之间的移动长度。一个kernel size2*2filter对图像进行扫描,每次移动的步长stride2,每条连接线上的权重固定,每次扫描后得到的值按照空间顺序组成一个feature map

池化使用pooling技术将小邻域内的特征点整合得到新的特征。把卷积得到的feature map看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。1.显著减少参数数量; 2.池化单元具有平移,旋转,伸缩不变性。

训练过层:训练算法主要包括四步,这四步被分为两个阶段:

第一阶段,向前传播阶段:

(1)、从样本集中取一个样本,输入网络;

(2)、计算相应的实际输出;在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常执行时执行的过程。

第二阶段,向后传播阶段:

(1)、计算实际输出与相应的理想输出的差;

(2)、按极小化误差的方法调整权矩阵。

 

 

FCN

CNN的识别是图像级的识别,输出的是一个概率值,属于某个类别的概率,而FCN的识别是像素级的识别,对输入图像的每一个像素在输出上都有对应的判断标注,标明这个像素最可能是属于一个什么物体/类别,输出的也是一站图片。简单的来说,FCNCNN的区别在于把CNN最后的全连接层转化成了卷积层,其所有的层都是卷积层,故称为全卷积网络。输出的是一张已经Label好的图片。

考虑在反卷积步骤时,考虑采用一部分较浅层的反卷积信息辅助叠加,更好的优化分割结果的精度。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2, 4, 8, 16, 32倍 ,对于最后一层的输出图像,需要进行32倍的反卷积处理,才能得到原图一样的大小。但是32倍还原的图片限于精度问题不能够很好地还原图像当中的特征,因此向前迭代,将conv4中的卷积核特征和上一次反卷积之后的图进行融合,最后将conv3中的卷积核特征对刚才反卷积之后的图像进行再次融合,最后就完成了整个图像的还原。

 

 

CRF

CRF是一个优化的过程,一般的图像分割:前端使用FCN进行粗分割,后端使用CRF精分割,优化前端的输出,得到最终的分割图。

条件随机场的目标函数是:

最小化上面的能量就可以找到最有可能的分割。
其中的一元势函数∑iΨu(xi)即来自于前端FCN的输出,它可以输出每个像素点,属于每个类别的概率值。而二元势函数如下: 

Ψp(xi,xj)=u(xi,xj)∑m=1Mω(m)k(m)G(fi,fj)
二元势函数就是描述像素点与像素点之间的关系。我们是希望图像分割的时候,在边缘的地方裂开的概率大一些(梯度越大的地方)。或者说我们希望两个相邻的像素如果差别越大,那么这两个像素属于不同类别的概率应该越大;如果两个相邻像素点的颜色非常接近,那么它们属于不同类别的概率应该越小。所以这样CRF能够使图片尽量在边界处分割。

整个过程分成4步:

1. Initialize: 首先从fcn-8s生成一个很粗糙的分割(如下图中虚线部分)

2. Message Passing. 传递相邻像素label之间的互相影响的关系。我们之前定义过k(fi, fj)的意义:
在平滑的部分若存在区域与区域的切分,则会产生很高的loss
在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss
也就是说这种Message Passing会很难穿过不平滑的部分(下图中实线的部分),所以label会像flood fill那样填充(如下图箭头方向)

3. Local Update. 更新权值。输出结果或者将Update后的dense label map作为新的Q进行新的一轮Iteration

CNN

CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接共享权值的方式,一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。该优点是使图像可以直接作为网络的输入,网络能自行抽取图像特征,包括颜色、纹理、形状及图像的拓扑结构,避免了传统识别算法中复杂的特征提取和数据重建过程,并且在位移、缩放及其它形式扭曲不变性(这是因为局部感知区域能够获得一些基础的特征,比如图像中的边界和角落等,这种方法能够提供一定程度对位移、拉伸和旋转的相对不变性。)的应用上具有良好的鲁棒性和运算效率等。

稀疏连接:在BP神经网络中,每一层的神经元节点是一个线性一维排列结构,层与层各神经元节点之间是全连接的。卷积神经网络中,层与层之间的神经元节点不再是全连接形式,利用层间局部空间相关性将相邻每一层的神经元节点只与和它相近的上层神经元节点连接,即局部连接。这样大大降低了神经网络架构的参数规模。

权重共享:在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置。而且权重共享提供了一种有效的方式,使要学习的卷积神经网络模型参数数量大大降低。

 

如果我们有一张1000x1000像素的图像,有1百万个隐层神经元,那么他们全连接的话(每个隐层神经元都与图像的每一个像素点相连),这样就有1000x1000x1000000=10^12个连接,也就是10^12个权值参数。

然而图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域。所以假如局部感受野是10x10,隐层每个神经元只需要和这10x10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。这就是稀疏连接的作用了。
由以上分析可知,隐含层的每一个神经元都连接10x10的图像区域,也就是说每一个神经元存在10x10=100个连接权值参数。如果我们每个神经元对应的这100个参数是相同的(也就是说每个神经元用的是同一个卷积核去卷积图像。),这样就只有100个参数了!不管隐层有多少个神经元,两层间的连接就只有100个参数。这就是权值共享的作用了

网络结构该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。一般情况下,CNN的结构形式是:输入层--> Conv--> Pooling--> (重复ConvPooling) … --> FC(Full-connected)--> 输出结果。

卷积每个隐层神经元只与10*10的局部区域像素相连,这里的10*10就是滤波器的kernel sizestride就是滤波器的步长,即从一个隐层神经元到相邻隐层神经元之间的移动长度。一个kernel size2*2filter对图像进行扫描,每次移动的步长stride2,每条连接线上的权重固定,每次扫描后得到的值按照空间顺序组成一个feature map

池化使用pooling技术将小邻域内的特征点整合得到新的特征。把卷积得到的feature map看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练,这个过程就是池化。1.显著减少参数数量; 2.池化单元具有平移,旋转,伸缩不变性。

训练过层:训练算法主要包括四步,这四步被分为两个阶段:

第一阶段,向前传播阶段:

(1)、从样本集中取一个样本,输入网络;

(2)、计算相应的实际输出;在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常执行时执行的过程。

第二阶段,向后传播阶段:

(1)、计算实际输出与相应的理想输出的差;

(2)、按极小化误差的方法调整权矩阵。

 

 

FCN

CNN的识别是图像级的识别,输出的是一个概率值,属于某个类别的概率,而FCN的识别是像素级的识别,对输入图像的每一个像素在输出上都有对应的判断标注,标明这个像素最可能是属于一个什么物体/类别,输出的也是一站图片。简单的来说,FCNCNN的区别在于把CNN最后的全连接层转化成了卷积层,其所有的层都是卷积层,故称为全卷积网络。输出的是一张已经Label好的图片。

考虑在反卷积步骤时,考虑采用一部分较浅层的反卷积信息辅助叠加,更好的优化分割结果的精度。例如经过5次卷积(和pooling)以后,图像的分辨率依次缩小了2, 4, 8, 16, 32倍 ,对于最后一层的输出图像,需要进行32倍的反卷积处理,才能得到原图一样的大小。但是32倍还原的图片限于精度问题不能够很好地还原图像当中的特征,因此向前迭代,将conv4中的卷积核特征和上一次反卷积之后的图进行融合,最后将conv3中的卷积核特征对刚才反卷积之后的图像进行再次融合,最后就完成了整个图像的还原。

 

 

CRF

CRF是一个优化的过程,一般的图像分割:前端使用FCN进行粗分割,后端使用CRF精分割,优化前端的输出,得到最终的分割图。

条件随机场的目标函数是:

最小化上面的能量就可以找到最有可能的分割。
其中的一元势函数∑iΨu(xi)即来自于前端FCN的输出,它可以输出每个像素点,属于每个类别的概率值。而二元势函数如下: 

Ψp(xi,xj)=u(xi,xj)∑m=1Mω(m)k(m)G(fi,fj)
二元势函数就是描述像素点与像素点之间的关系。我们是希望图像分割的时候,在边缘的地方裂开的概率大一些(梯度越大的地方)。或者说我们希望两个相邻的像素如果差别越大,那么这两个像素属于不同类别的概率应该越大;如果两个相邻像素点的颜色非常接近,那么它们属于不同类别的概率应该越小。所以这样CRF能够使图片尽量在边界处分割。

整个过程分成4步:

1. Initialize: 首先从fcn-8s生成一个很粗糙的分割(如下图中虚线部分)

2. Message Passing. 传递相邻像素label之间的互相影响的关系。我们之前定义过k(fi, fj)的意义:
在平滑的部分若存在区域与区域的切分,则会产生很高的loss
在不平滑的部分若不存在区域与区域的切分,则会产生很高的loss
也就是说这种Message Passing会很难穿过不平滑的部分(下图中实线的部分),所以label会像flood fill那样填充(如下图箭头方向)

3. Local Update. 更新权值。输出结果或者将Update后的dense label map作为新的Q进行新的一轮Iteration

原创粉丝点击