Zhiwei Hong

Results 27 comments of Zhiwei Hong

Eh, It seems a problem with Cython. Try it with version 0.25(mine is 0.25.2) - this one should work. (pip uninstall cython && pip install cython==0.25). If it still fails,...

**1. about the bmp file.** To apply transfer learning and pretrained CNN model, I need to transfer the singe channel CT image to three channel image(such as .bmp or .png...

Eh, it's just used to analyze the original dicom files in LIDC dataset and help you to better understand it. It can generate the annotation and binary file of the...

(1)yes, each dir, such as LIDC_IDRI_0001, has N dcms and a xml annotation file. And each dcm file has its own SOP_ID,but the number in the name of the dcm...

@taoshi006 您好,首先很高兴你参考这个project。几点情况说明一下: (1)这个是之前和其他几个同学一起做的一个小project,旨在练手,所以有很多不太完善的地方,并没有发表相关的学术论文,你可以看到这个结果现在还不是太好,主要是这种检测的思想比较新颖,仅供参考。主要是参考的这篇Paper 《[End-to-end people detection in crowded scenes](https://arxiv.org/abs/1506.04878)》的思想,中文翻译见[这里](https://www.jianshu.com/p/897a36440175)。关于这个实现的原始仓库请参考[Russell91/TensorBox (Tensorflow version)](https://github.com/Russell91/TensorBox)和[Russell91/ReInspect (Caffe version)](https://github.com/Russell91/ReInspect) ,本仓库CNN_LSTM文件夹基本框架都是借鉴自TensorBox项目。 (2)原始图像是512\*512是没错的,这个是DICOM的标准。这里大小352\*256有一系列的变化,可能没有说清楚。简单来说,肺结节一定是出现在肺实质里面的,不会跑到外面,所以整幅图像肺实质外面的部分我们是不太关注的,这个352\*256基本就是能够确保抠出所有图像的中间肺实质,这是在大量数据的分析之后统计出来的。至于为什么是这样一个值,还有一个地方就是,原始TensorBox项目输入图像是640\*480,看[这里](https://github.com/zhwhong/lidc_nodule_detection/blob/master/CNN_LSTM/hypes/lstm_rezoom.json),这个是原始配置,然后网络中最后出来的每个grd的region size是32,可以看[官方配置](https://github.com/russell91/tensorbox/blob/master/hypes/lstm_rezoom.json)里面region size就是32,这个是网络结构决定的,所以相当于将原始的640\*480变成了20\*15的grid。而转移到我们[lung](https://github.com/zhwhong/lidc_nodule_detection/blob/master/CNN_LSTM/hypes/lstm_resnet_rezoom_lung.json)配置文件这里,352\*256正好是32倍数,所以出来的grid是11\*8,这样计算起来比较方便,所以最终选了这么一个253\*256的大小。所以看到这里,你会发现其实这个大小可以自己调整的,并不是死的。 参考:CNN_LSTM/analysis_results.py,convert_txt2json.py,make_json.py。 (3)还有一个问题,关于我这里的图片是rgb三通道的问题,是因为我想采用迁移学习的方式,使用CNN预训练模型参数,而你知道,Inception是三通道输入的,所以我将图像转换成了三通道,这完全是为了使用transfer learning,你完全可以不这样做,使用单通道的图片来进行训练,只要数据集充分,是可以学习出来的。如果你也想用迁移学习,那么关于灰度图转换为rgb,可以参考[这篇Paper](https://arxiv.org/abs/1602.03409)的一个方法,我这里采用的是一种偷懒的方式,这个在本issue上面的回答中有提到。 另外关于这个结节检测,现在可以参考的成熟项目非常多,比如: - kaggle的[Data Science Bowl 2017](https://www.kaggle.com/c/data-science-bowl-2017)前几名的算法,[lfz/DSB2017](https://github.com/lfz/DSB2017), [juliandewit/kaggle_ndsb2017](https://github.com/juliandewit/kaggle_ndsb2017)等,各自有对应发论文; - [Lung Nodule...

@Asteriajojo images是一个list,里面放的是排序后的每一个dicom切片的pixel_arry,根据你的描述,我猜你是没有把images变成numpy的array,加一个images = np.array(images)再试试

@Asteriajojo CNN_LSTM这个就是项目的主体部分,其他的都是过程中用到的辅助的东西,仅供参考,没什么实际的作用。api_lidc是一些处理LIDC原始数据,分析数据的脚本,旨在开始时对数据有个大概了解的作用。至于pylung和cnn_3d这些和主体都没什么关系,pylung那个是一个做CT切割后的patch小块分类的一个分支,大概试了一下就没有继续深入,cnn_3d那个是当时做kaggle上一个肺结核分类比赛时写的两个脚本,也没什么关系,不用管这些。核心部分都在CNN_LSTM这里面。

@Asteriajojo 理论上是的,这中间还有一些别的数据处理和数据准备的乱七八糟的东西,需要对[Tensorbox](https://github.com/Russell91/TensorBox)这个项目有一定了解,主要是基于那个做的,所以可能中间还会有很多小问题,仅供参考学习使用,这个项目已经很久没有更新了,目前新的tensorflow还不确定是否兼容,所以如果是工程使用请慎重,仅供参考学习。

@Asteriajojo 印象中有前面两个ckpt就够了吧,inception_v1.ckpt和resnet_v1_101.ckpt,至于save.ckpt-150000v2下不下来没关系,这个是tensorbox做行人检测训练的model,如果用在LIDC上,是需要重新训练的,这个没有什么用,有另外两个就可以了。

1.你这里的问题好像是tensorflow.python.ops.rnn_cell_impl模块在新版本的tensorflow里面被其他函数取代了,你那里提示你换成tf.nn.rnn_cell.LSTMCell,改一下应该就可以。然后tensorflow.python.training.queue_runner_impl队列产生数据好像也是被改了,让你用tf.data啥的,也是版本的问题,原来那个是用了一个队列来处理batch数据,会快一些,你使用别的方式处理batch数据应该也是可以的,比如把文件名存在一个list里面,然后每次读一个batch出来训练。然后后面这个也是看提示,你文件夹里面缺少了一个图片LIDC-IDRI-0188.dat_31_.bmp。因为这个是之前的tf版本写的,tf目前更新很快,很多函数都在后来的版本中重新封装了。 2.save.ckpt-999999这个是你调用run.sh训练完成之后在output里面生成的checkpoint,你train完了就有了,然后测试时就可以直接用。你可以看train.py里面424行ckpt_file = H['save_dir'] + '/save.ckpt',522行和547行,训练完了会往目标文件夹存储下训练好的checkpoint。你上面一个问题里面说download.sh里面下不下来的save.ckpt-150000v2也是别人自己训练的,只不过那是别人在行人检测上训练出来的,所以之前说下不下来没关系,也没什么用。