在使用niftynet进行深度学习训练时,配置数据还是比较麻烦的,笔者整理之前在配置数据时,写的一些小的程序处理脚本。
在使用padas的dataframe读写csv文件时,需要注意一点:padas不是一行一行的写csv文件(笔者在此处遇到巨坑)。每写一次csv,前面的内容会被覆盖。置于padas的dataframe能不能以追加的方式写入,我目前还没研究过(不好意思,若有人研究过,请在下方给我留言,谢谢。)
所以在处理时,会把所有的数据存放在list中,再通过字典转换为dataframe格式。
后续预告:会对niftynet的配置进行总结,敬请关注。
以下为源代码:
import pandas as pd
import numpy as np
import os
this file is used to generate the csv niftynet training dataset(*_ct.csv, *_label.csv).
The format of csv file is :
image path
001 filepath
. .
. .
. .
#generating source image csv file for source images.
list_img=[]
list_path=[]
im_path = 'E:\\...\\imagesTr'
im_name = os.listdir(im_path)
for i,element in enumerate(im_name):
list_img.append(element)
list_path.append('E:/.../imagesTr/' + element)
dataframe = pd.DataFrame({'image' : list_img, 'path' :list_path})
dataframe.to_csv('E:/.../heart_ct.csv',index=False)
#--------------------------------------------------------------------------#
#generating label image csv file for label images.
list_label_name = []
list_label_path = []
label_path = 'E:\\...\\labelsTr'
label_name = os.listdir(label_path)
for j,elem in enumerate(label_name):
list_label_name.append(elem)
list_label_path.append('E:/.../labelsTr/' + elem)
label_dataframe = pd.DataFrame({'label':list_label_name , 'path':list_label_path})
label_dataframe.to_csv('E:/.../heart_label.csv',index=False)
label_path = 'E:\\...\\labelsTr'
label_name = os.listdir(label_path)
for j,elem in enumerate(label_name):
list_label_name.append(elem)
list_label_path.append('E:/.../labelsTr/' + elem)
label_dataframe = pd.DataFrame({'label':list_label_name , 'path':list_label_path})
label_dataframe.to_csv('E:/.../heart_label.csv',index=False)