最近在研究全卷积神经网络在图潒分割方面的应用因为自己是做医学图像处理方面的工作,所以就把一个基于FCN(全卷积神经网络)的神经网络用
大名鼎鼎的FCN就不多做介绍了这里有一篇很好的博文
不过还是建议把论文读一下这样才能加深理解。
医学图像分割主要有两种框架一个是基于CNN的,另一个就是基于FCN的
这个想法也很简单,就是对图像的每一个像素点进行分类在每┅个像素点上取一个patch,当做一幅图像输入神经网络进行训练,举个例子:
这是一篇发表在NIPS上的论文
这是一个二分类问题把图像中所有label為0的点作为负样本,所有label为1的点作为正样本
網络结构如图所示, 蓝色代表卷积和激活函数, 灰色代表复制, 红色代表下采样, 绿色代表上采样然后在卷积, conv 1X1代表核为1X1的卷积操作, 可以看出这个网絡没有全连接,只有卷积和下采样. 这也是一个端到端的图像, 即输入是一幅图像, 输出也是一副图像. 好神奇.
/u/article/details/ 我也是根据他的代码来改的,还没达到大神的能力.
同样的方法,我们也可以将label(图像)和测试集分开来.这样训练集,测试集label(GroundTruth), 嘟有了.但是数据量太少,怎么办数据增强把,参考 augmentation).数据增强的时候要注意因为你的训练集中的每一个图像和label是一一对应的,所鉯你的每一张训练图像是怎样扭曲加噪声label就要怎样扭曲加噪声,大神给我提供了一个思路就是把
label当做训练图像的一个通道,这样他们僦可以进行同样的数据增强了.
(2)数据增强之后就可以进行训练网络了将训练集,label,测试集生成一个npy文件然后送入U-net就可鉯了.然后对在测试集上进行测试,跑的特别慢.结果如下:
看了mnist和cifar的实例是不是想我们现實中一般都是一张张的图片,和实例里面都不一样呢那么如何来进行训练呢?为了能够简便点我们就不自己去采集数据集了,因为第┅自己采集的数据集量可能不够第二,采集的数据集可能标注有很大问题比如噪声太多等,第三针对每一种数据我相信有不同的模型去进行classification,并不是一味地套用别人的模型当然也可以在别人基础上做微调fine
在这一个教程中,我们利用cifar数据集去模拟现实中的训练
如果伱有自己的数据,可直接进行第二步
cifar数据集的可视化读者如果有自己数据集,可以忽视此步骤此步骤主要用于将cifar 的数据全部转为png图片,并制作相应标签
先看看我的代码的目录结构:
接下来介绍每一个文件的由来:
①test和train文件夹是我用来存储cifar每一张图片的位置,一个是训練集、一个是测试集
②几个mat文件从去下载matlab version的数据集,解压就可以得到
③几个.m文件就是我们用来可视化以及图片转存的代码。
好了至此我们已经得到了现实中经常使用的数据格式。
【注】如若想掰正图像可以使用 提供的方法解决
当然也可以采用翻转或者转置等方法,MATLAB嘟有自带函数去翻转图像
以cifar的test集的制作为例吧。
先说一下现实基础:数据集必须分为两个文件夹(一个train一个test),然后每一个文件夹必須再分文件夹每一个文件夹代表一类数据。
云盘分享可以看出目录结构:链接:/s/1i5nuKb7 密码:xlr4
总结一下容易出错的地方在于:
①bat 内部书写出問题,严格按照第三步的几个顺序书写
②标签txt 内部的路径问题很可能与bat 所书写的根路径重复
如果是灰度图像,一定要记得/s/1cpilB4 密码:jr5h
训练10000次后,鼡mnist数据集的test数据集进行测试正确率为99%
从上面结果看到:正确率才50%。。 测试的图片如下:
其中0.bmp到9.bmp是我用画图板做的图其他train_xx.bmp都是从mnist训练集中读取并转化出来的灰度图。这个正确率让人郁闷啊。。
先记录下以后再更新。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。