之前一直用二维卷积神经神经网络来识别肺部结节,由于没有利用到空间信息等问题,识别率可能会有瓶颈,此外也多是用别人的代码跑这个数据,想多自己实现一些网络,开始了三维卷积神经网络的学习。先看了慕课上曹健老师的课程,对神经网络构造训练的八股有所了解后,开始仿照着运用三维卷积来检测肺结节。(之前不知道为啥所有教程都会先交MNIST分类,这个分类对我进行目标检测有啥用,后来突然想通了,我可以对每个滑动窗口的图像进行分类检测,检测到了就记录下滑窗所在的位置就可以实现目标检测)。实验大概包含四个过程:
1、数据准备
提取LUNA16标注数据中的肺部结节,构造结节与非结节的二分类。这里按照结节位置与半径构造正样本,在结节坐标前与结节坐标后各提取5个负样本。以npy格式存储正样本在positive文件夹下,负样本在negative文件夹下。
2、训练样本准备
根据positive与negative文件夹下的样本提取npy文件,将每个样本resize为(16,22,22),若是positive下的文件则标注信息为[1,0],否则为[0,1]。每一个npy文件会生成一个[npy,label]的列表,最后将他们append在一起,保存为much-data.npy文件。
3、网络训练
网络的构造参考kaggle大赛中的3D CNN网络(https://www.kaggle.com/sentdex/first-pass-through-data-w-3d-convnet)。修改了了网络输入的网络参数。
4、网络测试
读取一个完整的mhd文件,滑动三维窗口,对每个3D文件进行分类器检测。
问题:
分类器输入我设置的是(16,22,22),一些大体积结节估计无法识别。
参考:
https://www.kaggle.com/sentdex/first-pass-through-data-w-3d-convnet