- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FCN详解与pytorch简单实现 (附详细代码解读)
本⽂分为两个部分,第⼀部分详解FCN原理,第⼆部分给 简单的代码实现。
第⼀部分 :算法理解
(理解FCN需要有CNN基础)
0.前⾔ :基于CNN的分割⽅法与FCN的⽐较
传统的基于CNN的分割⽅法 :为了对⼀个像素分类,使⽤该像素周围的⼀个图像块作为CNN的输⼊⽤于训练和预测。这种⽅法有⼏个缺
点 :
⼀是存储开销很⼤。例如对每个像素使⽤的图像块的⼤⼩为 15x 15,然后不断滑动窗⼝,每次滑动的窗⼝给CNN进⾏判别分类,因此则所
需的存储空间根据滑动窗⼝的次数和⼤⼩急剧上升。
⼆是计算效率低下。相邻的像素块基本上是重复的,针对每个像素块逐个计算卷积,这种计算也有很⼤程度上的重复。
三是像素块⼤⼩的限制了感知区域的⼤⼩。通常像素块的⼤⼩⽐整幅图像的⼤⼩⼩很多,只能提取⼀些局部的特征,从⽽导致分类的性能受
到限制。
⽽全卷积⽹络(FCN)则是从抽象的特征中恢复 每个像素所属的类别。即从图像级别的分类进⼀步延伸到像素级别的分类。
概括
FCN将传统卷积⽹络后⾯的全连接层换成了卷积层,这样⽹络输 不再是类别⽽是 heatmap;同时为了解决因为卷积和池化对图像尺⼨的
影响,提 使⽤上采样的⽅式恢复。
Keypoint
1.不含全连接层(fc)的全卷积(fully conv)⽹络。可适应任意尺⼨输⼊。
2.增⼤数据尺⼨的反卷积(deconv)层。能够输 精细的结果。
3.结合不同深度层结果的跳级(skip)结构。同时确保鲁棒性和精确性。
⽹络结构详解图:
输⼊可为任意尺⼨图像彩⾊图像 ;输 与输⼊尺⼨相同,深度为 :20类 ⽬标+背景=2 1。
下⾯详细理解这三个核⼼思想
1.全连接层→全卷积
通常CNN⽹络在卷积层之后会接上若⼲个全连接层, 将卷积层产⽣的特征图(feature map)映射成⼀个固定长度的特征向量。与经典的CNN
不同,FCN可以接受任意尺⼨的输⼊图像,采⽤反卷积层对最后⼀个卷积层的feature map进⾏上采样, 使它恢复到输⼊图像相同的尺⼨,
从⽽可以对每个像素都产⽣了⼀个预测, 同时保留了原始输⼊图像中的空间信息, 最后在上采样的特征图上进⾏逐像素分类。最后逐个像素计
算softmax分类的损失, 相当于每⼀个像素对应⼀个训练样本。
FCN将CNN中的全连接层⽤卷积层替换,全连接层和卷积层之间唯⼀的不同就是卷积层中的神经元只与输⼊数据中的⼀个局部区域连接,
并且不同卷积列中的神经元共享参数。然⽽在两类层中,神经元都是计算点积,所以它们的函数形式是⼀样的。因此,将此两者相互转化是
可能的:
对于任⼀个卷积层,都存在⼀个能实现和它⼀样的前向传播函数的全连接层 :权重矩阵是⼀个巨⼤的矩阵,除了某些特定块,其余部分都是
零 ;且在其中⼤部分块中,元素都是相等的。
同样,任何全连接层都可以被转化为卷积层。⽐如,⼀个 K=4096 的全连接层,输⼊数据体的尺⼨是 7∗7∗5 12,这个全连接层可以被等
效地看做⼀个 F=7,P=0,S= 1,K=4096 的卷积层。换句话说,就是将滤波器的尺⼨设置为和输⼊数据体的尺⼨⼀致了。因为只有⼀个单独
的深度列覆盖并滑过输⼊数据体,所以输 将变成 1∗1∗4096,这个结果就和使⽤初始的那个全连接层⼀样了。
2.上采样-反卷积(deconvolution)
经过多次卷积和pooling以后,得到的图像越来越⼩,分辨率越来越低。其中图像⼩的⼀层时 (下图的H/32 x W/32),所产⽣图叫做
heatmap(热图),热图就是我们最重要的⾼维特征图,得到⾼维特征的heatmap之后就是最重要的⼀步也是最后的⼀步对原图像进⾏
upsampling,把图像进⾏放⼤、放⼤、放⼤,到原图像的⼤⼩。最后的输 是n(类别数)个通道heatmap经过upsampling变为原图⼤⼩的
图⽚,为了对每个像素进⾏分类预测label成最后已经进⾏语义分割的图像,通过逐个像素地求其在n个通道上该像素位置的最⼤数值描述
(概率)作为该像素的分类,由此产⽣了⼀张已经分类好的图⽚。
上采样(upsampling),简单来说就是pooling的逆过程,pooling采样后数据数量减少,upsample采样后数据数量增多。FCN作者在论⽂
中讨论了3种upsample⽅法 (双线性插值、反卷积、反池化),最后选⽤的是反卷积的⽅法 (FCN作者称其为后卷积)使图像实现end to
end,可以理解upsample就是使⼤⼩⽐原图像⼩得多
文档评论(0)