fcn网络训练代码_用FCN做分割
船长黑板报所有文章和代码的最新版本均在
Captain1986/CaptainBlackboardgithub.com
维护,知乎不做维护
您的Star是对我的鼓励
图像分割是计算机视觉中比较常见的技术,广泛应用于智能交通、自动驾驶等领域。恰好船长最近正在做图像分割的项目,也调研了一些图像分割的经典方法,准备把用CNN做图像分割的方法都做个记录,这里是第一篇FCN,原始论文发表于15年的CVPR,属于用深度学习做图像分割的挖坑之作(褒义)。
**欢迎探讨,本文持续维护。**
## 实验平台
N/A
## 语义分割:从整体图片分类到像素级分类
在FCN提出之前,CNN(AlexNet,VGG,GoogLeNet,RCNN和SPPNet)都已经在图像分类和目标检测领域攻城拔寨,既然CNN可以在整图分类和部分图片分类上取得成功,那么把CNN来做pixel-to-pixel的分类进而解决图像分割问题也就是可以想象的了。
以AlexNet为例,它的开始的几层是卷积层,最后卷积层后面连接全连接Softmax层输出一个长度为1000的向量代表分类的类别概率。它的最后输出是针对整个图的分类结果,此时空间信息消失了。如果在去掉全连接层,换上卷积层,那么一样也可以输出分类的结果,还保存了空间维度上的信息,示意图如下图所示:
这里就不再赘述,在[《D#0025-CNN中使用卷积代替全连接》](Captain1986/CaptainBlackboard)已有比较详细的介绍,感兴趣的朋友可以去看。
然后,既然FCN可以生成整张图大小的热力图,那么如果这个图的大小和输入图像大小一致,且有了输入图中每个像素的真值标签(Ground Truth),那么就可以用这个标签来监督FCN的训练,让热力图和标签趋向一致,原理如下图所示。有了每个像素的分类信息,那么做分割就是个太简单的事情了。
## FCN做分割的网络架构
### 基础网络
作者试用了AlexNet,VGG-16,VGG-19和GoogLeNet等在分类任务上表现较好的网络,首先把它们的Softmax砍掉,第二步把全连接层改成卷积层,第三步附加一个1x1的卷积层生成21个PASCAL分类的热力图,最后添加一个双线性采样的upsample层作为Deconvolution层来把热力图扩充到输入图像的分辨率。在做了这些改造之后,如上图所示,实验发现复用了VGG-16的卷积部分的效果最好,VGG-16可以作为特征提取的主干网络。
### Skip连接Combining what and where
像VGG这样的网络是一层一层的层次性结构,不同的层感受野不同,特征图所能表达的含义也不同。浅层的特征感受野小,可以表达一些精细的特征,能回答**在哪里**的问题;而深层的特征感受野大,适合表达一些整体的语义,适合回答**是什么**的问题。如果把不同层次的特征图融合起来,整个网络形成一个有向无环图DAG,那么应该适合于分割这类既要回答是什么,又要(精确到像素级地)回答在哪里的问题。
上图是FCN的网络结构图,VGG不同层的特征在upsample之后会进行(sum或者concate)融合,最终融合到pool3这一层,得出来一个和原图大小一样的图。
上图可以看出,不做不同层特征图的融合会怎么样。可以看到,**融合的浅层特征越多,分割得越精细**。
上表是作者给出的实验数据,具体地证明了上上图的结论。
### UpSample
在类似VGG这样的分类网络中,因为卷积Stride和Pooling层的作用,特征图的空间分辨率是随着层数越来越深递进地越来越小的,但是分割要做pixel-to-pixel的分类任务,真值标签是原图分辨率地像素级的图,那么分割网络的输出也要是同样的分辨率,即输入图片大小的分辨率。
FCN作者这里为了放大特征图分辨率采用了很简单地x2 Upsample层,具体来说就是添加了一个**类似于双线性插值**的层,来根据位置坐标计算输出图的像素级标签。当然,这里说是类似于双线性插值的层,是因为这一层它的插值系数是可以学习的,不是定死了的。
## 总结
本文介绍了一种早期较为经典的分割网络FCN,可端对端地进行全图训练。该网络特征提取部分还是基于VGG-16,改造成全卷积网络。添加了Skip连接融合浅层细节和深层语义特征,采用了可学习的UpSample层使网络输出分辨率和输入一致。
## 参考资料
+ [《D#0025-CNN中使用卷积代替全连接》](Captain1986/CaptainBlackboard)
+ [Fully Convolutional Networks for Semantic Segmentation](https://arxiv.org/pdf/1411.4038.pdf)
+ [Fully Convolutional Networks for Semantic Segmentation](https://arxiv.org/pdf/1605.06211.pdf)
fcn网络训练代码_用FCN做分割相关推荐
- fcn网络训练代码_另辟蹊径,中科院自动化所等首次用图卷积网络解决语义分割难题...
使用 CNN 处理图像问题已经是常规操作,但此类方法会造成局部位置信息的损失.如何解决这个问题呢?来自中科院自动化所和北京中医药大学的研究者另辟蹊径,提出用图卷积网络解决语义分割问题. 选自arXiv ...
- fcn网络训练代码_FCN网络训练 菜鸟版
论文全名:Fully Convolutional Networks for Semantic Segmentation 全卷积神经网络 FCN代码运行详解: 运行平台: Ubuntu 14.04 + ...
- FCN网络训练训练——从零开始
FCN网络训练训练--从零开始 一 数据集准备 在/fcn.berkeleyvision.org/data/下新建文件夹 sbdd trianval: http://www.eecs.berkeley ...
- FCN网络训练 SIFTFLOW数据集
论文全名:Fully Convolutional Networks for Semantic Segmentation 全卷积神经网络 FCN代码运行详解: 运行平台: Ubuntu 14.04 + ...
- 【21】FCN网络训练及理解
准备工作 代码地址:https://github.com/bat67/pytorch-FCN-easiest-demo 论文参考:全卷积网络 FCN 详解 FCN详解与pytorch简单实现(附详细代 ...
- 训练代码_代码简介:是的,有完全免费的代码训练营
训练代码 Here are three stories we published this week that are worth your time: 这是我们本周发布的三个值得您关注的故事: Yo ...
- 语义分割FCN网络训练自己的数据集_未完待续
下载PASCAL VOC2012数据集 wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar 参考文献: https:// ...
- 训练代码_无需一行代码,完成模型训练和部署,这个AI工具开始公测
本文转载自淘系技术,文末附官网下载链接. 阿里巴巴淘系技术开源轻量级深度学习推理引擎 MNN 以来,得到了业界的普遍认可 -- 数十家企业成为 MNN 的用户,不乏有一线科技企业:此外,MNN 还与上 ...
- 贝叶斯网络python代码_贝叶斯网络,看完这篇我终于理解了(附代码)!
1. 对概率图模型的理解 概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布.由图灵奖获得者Pearl开发出来. 如果用一个词来形容概率图 ...
最新文章
- java方法生命周期_Java线程的第二种实现方式以及生命周期
- svn 1.6 linux 下载,LINUX下Subversion1.6.17 部署
- java调python报错Cannot create PyString with non-byte value
- IDF 实验室 初探乾坤
- 《Javascript入门学习全集》 Javascript学习第一季(7)
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物人物特效
- c语言txt操作,C语言文件操作总结
- Java虚拟机类加载机制--类加载的过程详解
- ConcurrentLinkedQueue since java1.5
- 系统集成项目管理工程师(试题分析、考试大纲、教材目录)
- Windows10磁盘分区和扩展
- react 面试 笔记
- 户外运动耳机如何选择、最优秀的五款户外运动耳机推荐
- IOS获取屏幕分辨率
- 1.UEFI-edk2 开发环境搭建
- Anaconda/Conda创建环境时报错的解决方案
- Buck零电压准谐振变换器
- 关于“参商两曜斗西东”中“参商”和“两曜”具体指什么
- 数字签名算法MD5和SHA-1的比较
- Layui 弹出层插件