学习记录11111

记录一下从搜索,到实践运行代码的过程

第一份开源代码 是 阅读了一篇关于医学图像配准的综述,该博主是已经毕业的研究生,分析了自己的毕业论文,以及部分开源代码,拿到代码后并不能正常运行,因为代码的数据集已经丢失了,而且模型部分缺失,仅有调用说明,没有真实的调用地址,于是按照文章的内容,了解到使用的是Unet网络的上采样以及下采样部分,并将它添加到目录下,进行调用

学习记录11111_第1张图片

 但随后发现在训练train文件夹下 关于模型以及数据集的调用,实在看不懂

我与乃宇师兄请教学习了很久后,决定换一个全面一点的代码

然后在github以及csdn上搜索相关学习内容时,发现了以前阅读过,并进行组会汇报过的一篇文章VoxelMorph-无监督医学图像配准是有开源代码的,这篇文章是在医学方面利用 配准原理 对3D的脑部扫描图进行配准,使用的数据集也是用于医学图像配准或分割的LPBA40数据集,但是,该模型同样可以用于颅脑MRI(2维切片)的配准,所以我觉得先从这个网络开始学习,把其中各部分是如何运行的搞清楚,先利用3D图像复刻一遍工作,再尝试用2D图像数据集。

首先是模型部分,其中网络主干是Unet网络

学习记录11111_第2张图片

以及空间转换层

学习记录11111_第3张图片

损失函数 

学习记录11111_第4张图片

数据集先使用的是 LPBA40数据集,按照网上的教程,把其中的30个放到训练数据集里,9个放到实验数据集里,添加标签后的40个放到labe文件夹下,还有一个 作为固定图像,一共是40个数据。

然后配置环境,下载库,开始训练。

然后目前正在解决的问题是

学习记录11111_第5张图片

读取导入图片有问题,百度之后说是文件路径不对,文件名包含中文,但是这个错误提示里的路径,我并没有找到,还在学习中解决中。


分割线

分割线

分割线

分割线

分割线

分割线

分割线


继上次更新

我分析 问题还是出在这个数据集上面 并且我得电脑没法可视化3D图片得配准过程 就是各个步骤和结果只能得到数据, 这不利于学习 以及分析问题,代码出错估计就是和显示3D图片出现得错误有关 , 所以又做出了改变

想到刚开始用sift特征点检测法自己动手得时候,对于包含特征较少,较为简单得图像 表现结果就会比较好 所以想直接用2D数据集 最经典的MNIST数字数据集 在修改了 诸多类似于 定义函数得命名与调用时命名不一致,以及上文定义变量,下文调用时写错字母等等一系列小问题后, 在VoxelMorph利用2D数据集进行训练 先放结果 再分析代码改动部分。

学习记录11111_第6张图片

  接下来记录一下我是如何实现这个过程得

首先导入需要得库,然后就是最关键的步骤,数据集,因为MNIST是很常见的,这里我选择将下载后得数据集,先分为训练集train和测试集test两部分 ,因为配准工作 不像原来使用这个数据集一般都是做识别数字得工作,我不需要0-9 这10个数字 我只需要一种数字,然后把这一种数字挑出来 我用来配准,我选择得是数字五。

学习记录11111_第7张图片

可以看到分别是将标签为5得数都提取了出来

 

在训练时,首先要输出一下训练集得数据得尺寸,数量,这里我输出得结果就是,由于x和y是成对拿出来做配准得 所以都是5421张,大小是28乘28得。

用一个可视化部分把训练集里的照片拿出来,随机抽几张展示一下,这个其实就是直观一点,因为最后写论文得时候 也肯定需要一个演示过程,拿了哪些图片 最后弄成什么样子 ,便于理解一些,这里同样也选择5张,就是下图所示,np.random.choice就是用来确定 从哪个集里抽,抽取多少个,重不重复这件事,然后就开始循环抽取,再加一个plot得可视化 画图工具 给展示出来

展示结果就是这样的

学习记录11111_第8张图片

 这里有一个点非常重要,MNISRT数据集得图片大小为28乘28,但是我需要把他调整为32乘32 因为我使用得是Unet网络 是将图片先下采样16倍,所以必须要改变尺寸,这之前我是不了解得,我百度了才知道。所以这里还有个归一化 我就不添加了 长得跟这个图差不多 就是大小变大了一点点。

接下来就是建立Unet网络,确定好各层得参数,然后看一下模型得输入和输出,输入就是将图片处理修改之后得 32乘32乘2 ,因为是灰度图像,一共两张 就是 2 ,输出这部分有点问题,还要做一个变形处理。我还在解决,这里标记一下

然后损失函数部分就是利用文章得公式,由于输出得是形变场,所以也不能用常规得损失函数,再加一个空间变换层,这都是按照文章得步骤搭建的。

接下来就开始 实际训练 设置10个块, 一个块100组图片。上面的结果图可以看到 损失误差都随着训练再降低,包括损失函数曲线 形变场都能可视化出来,但是目前还差点意思,我还在研究。还有就是网络结构以及空间变换层这一部分,其实应该是可以定义一个函数 直接设置得

目前得成果就是 是可以做到配准得 而且用的是神经网络 效果还可以  附上一个成果图

学习记录11111_第9张图片

 感觉效果还可以 但这毕竟是灰度图像,而且图像得特征也不是太多,截至周报提交前需要解决得问题还有几个 就是一是可视化,二是损失函数和空间变换层那部分还没太懂 三是 换一个数据集得效果能达到什么样 有那些方面是需要调整得 例如batch得大小  训练得过程 这是接下来学习得主要方向。

你可能感兴趣的:(学习)