全卷机神经网络图像分割(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。

效果如下所示:

这里写图片描述

这里写图片描述

表格排序技巧

表格排序的方法function Table (tBody, tHead) { this.tBody = tBody; this.tHead = tHead.constructor == A...
  • net_lover
  • net_lover
  • 2001-07-04 16:27:00
  • 2640

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

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

【Unet】UNet主要类特性及相应方法介绍

UNet常见概念简介   Spawn:简单来说,把服务器上的GameObject,根据上面的NetworkIdentity组件找到对应监视连接,在监视连接里生成相应的GameObject.   C...
  • ldy597321444
  • ldy597321444
  • 2017-04-13 17:25:04
  • 2032

【UNET自学日志】Part1 UNET的设置与运动同步

以一个FPS游戏为例 1、新建一个Plane作为游戏场景内的地板。 2、导入Character包,在场景中添加FirstPersonCharacter中的Prefabs——FPSController,...
  • sinat_24994943
  • sinat_24994943
  • 2016-03-23 14:25:46
  • 4997

U-net神经网络

U-Net: Convolutional Networks for Biomedical Image Segmentation U-net这篇论文的作者是参加一个ISBI的竞赛, http://b...
  • yang9649
  • yang9649
  • 2017-07-07 14:03:03
  • 708

【UNET自学日志】Part20 UI

说在前面,通过这部分我似乎看到了可以实现互联网的希望啦! 废话不多说,我们开始进入正题 首先在Menu场景下新建一些UI元素,两个button(ButtonStartHost和ButtonJoin...
  • sinat_24994943
  • sinat_24994943
  • 2016-05-07 19:23:14
  • 2185

【深度学习论文】:U-Net

U-Net在深度学习应用到计算机视觉领域之前,人们使用 TextonForest 和 随机森林分类器进行语义分割。卷积神经网络(CNN)不仅对图像识别有所帮助,也对语义分割领域的发展起到巨大的促进作用...
  • hduxiejun
  • hduxiejun
  • 2017-05-03 10:04:39
  • 16148

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

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

Unity5.1 新的网络引擎UNET(二) UNET 官方推荐Demo案例

孙广东  2015.7.14总体感觉,  新的网络引擎的出现,并没有带来太大的轰动,  至少相对于 UGUI推出而言,  但是官方论坛依然和 UGUI时一样,提供了各种讨论的帖子。 其中包括很多分享的...
  • u010019717
  • u010019717
  • 2015-07-23 08:14:02
  • 21861

Segnet分割网络caffe教程(一)

segnet分割网络的地址说明:http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html 在这个里面主要讲解如何使用segnet以及每一步的步骤,对...
  • caicai2526
  • caicai2526
  • 2017-08-14 20:57:38
  • 2205
收藏助手
不良信息举报
您举报文章:全卷机神经网络图像分割(U-net)-keras实现
举报原因:
原因补充:

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