出现的问题和解决方法

问题1:在尝试用nnUnet处理brats2021数据集时,因为nnuNet官方没有给2021的处理程序,我是在2020上改的(记录一下:改过的文件在cotr-mian里面的nnuNet里面),之后在改完之后出现错误,好像是叫不能读取图像的错误。

解决1:之后改了很多都没有成功,最后在一个帖子上看到路径过长也不行,将那个数据集移到用户目录之后路径缩短,运行成功!

问题2:在跑Transformer文章代码的时候,发现里面只能进行二维图像的读取,也就是nii.gz格式的三维图像是读不了的,因为它里面使用的opencv读取的图像,传入nii.gz直接会出现返回值为‘NoneType’,结果出错,这时候需要进行将三维图像转换成二维图像才可以,并且opencv无法读取路径有中文或者文件名是中文的图像。

总结2:OpenCV无法读取nii,gz类型的图像,并且它不支持读取文件名或者路径有中文的文件,需要全换成英文才行

问题3:这个是我写的程序算法的问题,也记录一下吧,listdir方法支持从目录中读取所有文件,并返回文件名列表,但是他的排序方式值得注意,因为我跑Transformer的时候直接从nnuNet数据集中适应过去的,所以在使用这个方法的时候出现原图像和label不对应的问题。

总结3:使用listdir方法的时候注意排序问题

问题4:在进行图像处理的时候,有时候方向不相同的话他会出现那种训练之后效果并不好的情况,比如这个nnUNet,他就需要必须保证方向必须得相同才行,记录一下,改变方向的脚本在nnUNet_raw_data/文件夹下

总结4:必须保证图像的方向相同才可以进行训练

笔记记录

1. 在两台服务器之间进行文件迁移时,如果知道另一台服务器账密(用户权限即可),就可以使用scp命令进行数据迁移,命令如下:

scp -r -P 端口号 源服务器路径/* 用户名@IP地址:目标服务器路径

2. 在看nnUNet和COTR代码时,遇到一些问题,记录一下,见下文

Python高级语法学习

2021-8-13 0

3. 在学习transformer的时候做的代码注释和笔记,见下文

4. 在看menet的时候,第一次见到这样的维度(None,14,12,1024), 查阅了好多资料发现原来None代表的意义就是任意batchsize的值,就是一个占位符,相当于一个动态的Tensor,下面是关于这个的一些操作

c = tf.placeholder(tf.float32,[None,1,2])  # 定义一个None的维度,平常的操作不行
b = tf.reshape(c,[-1,1,1,2])  # 直接reshape不行,会报错,这里可以采用-1代替None的维度,这样就不会报错了
###None相加的还没看,应该和普通的Tensor一样###