全卷机神经网络图像分割(U-net)-keras实现

2017年04月17日 20:36:34

最近在研究全卷积神经网络在图像分割方面的应用,因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用 keras 实现了,并且用了一个医学图像的数据集进行了图像分割。

全卷积神经网络

大名鼎鼎的FCN就不多做介绍了,这里有一篇很好的博文 http://www.cnblogs.com/gujianhan/p/6030639.html
不过还是建议把论文读一下,这样才能加深理解。

医学图像分割框架

医学图像分割主要有两种框架,一个是基于CNN的,另一个就是基于FCN的。

基于CNN 的框架

这个想法也很简单,就是对图像的每一个像素点进行分类,在每一个像素点上取一个patch,当做一幅图像,输入神经网络进行训练,举个例子:

cnnbased

这是一篇发表在NIPS上的论文Ciresan D, Giusti A, Gambardella L M, et al. Deep neural networks segment neuronal membranes in electron microscopy images[C]//Advances in neural information processing systems. 2012: 2843-2851.

这是一个二分类问题,把图像中所有label为0的点作为负样本,所有label为1的点作为正样本。

这种网络显然有两个缺点:
1. 冗余太大,由于每个像素点都需要取一个patch,那么相邻的两个像素点的patch相似度是非常高的,这就导致了非常多的冗余,导致网络训练很慢。
2. 感受野和定位精度不可兼得,当感受野选取比较大的时候,后面对应的pooling层的降维倍数就会增大,这样就会导致定位精度降低,但是如果感受野比较小,那么分类精度就会降低。

基于FCN框架

在医学图像处理领域,有一个应用很广泛的网络结构—-U-net ,网络结构如下:

这里写图片描述

可以看出来,就是一个全卷积神经网络,输入和输出都是图像,没有全连接层。较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题。

问题分析

我采用的数据集是一个isbi挑战的数据集,网址为: http://brainiac2.mit.edu/isbi_challenge/

数据集需要注册下载,我的GitHub上也有下载好的数据集。

这个挑战就是提取出细胞边缘,属于一个二分类问题,问题不算难,可以当做一个练手。

这里写图片描述

这里最大的挑战就是数据集很小,只有30张512*512的训练图像,所以进行图像增强是非常有必要的。

在这里,我参考了一篇做图像扭曲的论文,http://faculty.cs.tamu.edu/schaefer/research/mls.pdf

实现的效果如下:

这是扭曲之前:

这里写图片描述

这是扭曲之后:

这里写图片描述

这是我进行图像增强的代码: http://download.csdn.net/detail/u012931582/9817058

keras 实现

keras是一个非常简单地深度学习框架,可以很方便的搭建自己的网络,这是我的keras实现: https://github.com/zhixuhao/unet

效果

最后在测试集上的精度可以达到95.7。

效果如下所示:

这里写图片描述

这里写图片描述

语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet

http://blog.csdn.net/u012931582/article/details/70314859 前言 在这里,先介绍几个概念,也是图像处理当中的最常见任务. 语...
  • yang9649
  • yang9649
  • 2017年07月07日 14:38
  • 3499

语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet

原文来自:http://blog.csdn.net/u012931582/article/details/70314859 前言 在这里,先介绍几个概念,也是图像处理当中的最常见任务....
  • zhyj3038
  • zhyj3038
  • 2017年05月05日 13:49
  • 6423

语义分割(semantic segmentation) 常用神经网络介绍对比-FCN SegNet U-net DeconvNet

前言在这里,先介绍几个概念,也是图像处理当中的最常见任务. 语义分割(semantic segmentation) 目标检测(object detection) 目标识别(object recogn...
  • u012931582
  • u012931582
  • 2017年04月21日 14:54
  • 2529

机器学习(四) 机器学习与深度学习的实际应用整理

前言     本文主要是整理备份机器学习与深度学习的实际应用,尽量给出原始作者网站,包括论文、代码和github等原始数据。共勉! 基于深度神经网络的免费开源的人脸识别系统     openfa...
  • jorg_zhao
  • jorg_zhao
  • 2016年09月08日 10:21
  • 1807

语义分割 常用神经网络介绍对比-FCN,SegNet,U-net DeconvNet

前言 在这里,先介绍几个概念,也是图像处理当中的最常见任务. 语义分割(semantic segmentation)目标检测(object detection) 目标识别(object rec...
  • Leonis_v
  • Leonis_v
  • 2017年10月14日 16:37
  • 464

机器学习、深度学习、计算机视觉、自然语言处理及应用案例——干货分享(持续更新......)

机器学习、深度学习、计算机视觉、自然语言处理及应用案例——干货分享(持续更新……)author@jason_ql http://blog.csdn.net/lql07161、机器学习/深度学习1.1...
  • lql0716
  • lql0716
  • 2017年04月23日 00:55
  • 8126

学习Unet的一些过程

http://www.cnblogs.com/Zackzhang/p/6593342.html 因为只会设计到几个简单的按钮命令,所以不打算做多么复杂的功能,一开始打算用C#的Socket编...
  • yaoyutian
  • yaoyutian
  • 2017年09月25日 19:15
  • 3364

TensorFlow深度学习,一篇文章就够了

TensorFlow深度学习框架Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow。...
  • tab_space
  • tab_space
  • 2016年10月12日 11:26
  • 3688

医学图像分割--U-Net: Convolutional Networks for Biomedical Image Segmentation

U-Net: Convolutional Networks for Biomedical Image Segmentation https://arxiv.org/abs/1505.04597 C...
  • zhangjunhit
  • zhangjunhit
  • 2017年06月15日 15:16
  • 3671

U-net使用, 图像分割(边缘检测)

转载: http://blog.csdn.net/qq_18293213/article/details/72423592 U-Net: Convolutional Networks...
  • yang9649
  • yang9649
  • 2017年07月07日 14:41
  • 1054
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全卷机神经网络图像分割(U-net)-keras实现
举报原因:
原因补充:

(最多只允许输入30个字)