深度学习(niftynet医学图像)总结之二:数据处理小程序——生成label_csv文件和image_csv文件

本文分享了使用NiftyNet进行深度学习训练时的数据配置经验,详细介绍了如何利用Python的pandas库处理并生成用于训练的CSV文件,包括图像路径和标签路径的组织方式。

在使用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)

 

在处理图像数据时,通常需要将图像 ID 与对应的多标签分类结果进行存储,以便后续使用。Python 提供了多种方法来实现这一需求,其中 `pandas` 是一个功能强大的数据处理库,可以轻松地将一维数组二维数组保存为 CSV 文件。 假设图像 ID 是一个一维数组,而多标签分类结果是一个二维数组,可以通过构建一个包含这些数据的 `DataFrame` 来组织数据[^1]。以下是一个示例代码,展示了如何将这些数据保存为 CSV 文件: ```python import pandas as pd import numpy as np # 示例数据 image_ids = np.array(['img1', 'img2', 'img3']) # 图像 ID 的一维数组 labels = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) # 多标签分类的二维数组 # 构建 DataFrame columns = ['ImageID'] + [f'Label_{i}' for i in range(labels.shape[1])] # 定义列名 data = np.hstack((image_ids.reshape(-1, 1), labels)) # 合并图像 ID 标签 df = pd.DataFrame(data, columns=columns) # 保存到 CSV 文件 df.to_csv('output.csv', index=False) ``` 上述代码中,首先定义了图像 ID 多标签分类结果的示例数据。然后,通过 `np.hstack()` 将图像 ID 标签合并为一个二维数组,并将其转换为 `DataFrame`。最后,使用 `to_csv()` 方法将数据保存为 CSV 文件[^1]。 如果图像 ID 标签数据已经存在于不同的数据结构中,也可以通过类似的方式进行合并存储。此外,`pandas` 还支持多种数据格式的读取写入操作,例如 Excel、JSON SQL 数据库等。 ### 数据格式的灵活性 在实际应用中,图像 ID 可能以字符串或整数形式存在,而多标签分类结果可能是二进制标签(0 或 1)或概率值(0 到 1 之间的浮点数)。无论数据的具体形式如何,都可以通过调整列名数据类型来适应不同的需求。例如,可以将图像 ID 列命名为 `ImageID`,并将每个标签列命名为 `Label_0`、`Label_1` 等。 ### 数据存储的扩展性 除了保存图像 ID 标签外,还可以在 CSV 文件中添加其他相关信息,例如图像的路径、尺寸、类别描述等。这些附加信息可以进一步丰富数据集的元数据,便于后续的分析处理。 ### 相关问题 1. 如何将图像数据标签存储为 HDF5 格式? 2. 如何使用 Python 将图像数据转换为 TFRecord 格式? 3. 如何将多标签分类结果转换为二进制标签? 4. 如何使用 `pandas` 读取写入 Excel 文件? 5. 如何将图像数据标签存储为 JSON 格式?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值