1自定义数据集
import os import pandas as pd from torch.utils.data import Dataset//在这里torch 以及 torchvision的版本要一致,不然会报错 from torchvision.io import read_image class CustomImageDataset(Dataset): def __init__(self, annotations_file=r'my_labels.csv', img_dir=r'MerchData', transform=None, target_transform=None): self.img_labels = pd.read_csv(annotations_file) self.img_dir = img_dir self.transform = transform self.target_transform = target_transform def __len__(self): return len(self.img_labels) def __getitem__(self, idx): img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0]) image = read_image(img_path) label = self.img_labels.iloc[idx, 1] if self.transform: image = self.transform(image) if self.target_transform: label = self.target_transform(label) return image, label
此处代码实现的是自定义数据集的一个加载,其中annotations_file=r'my_labels.csv' 表示的是一个在不同种类的图像当中,所划分的标签,以五种不同的花为例,种类分别为0-4(标签样式不固定,根据需求来做),保存格式为csv。
img_dir
:图像文件所在的目录。
transform
:可选参数,用于图像数据的预处理或增强。target_transform
:可选参数,用于转换标签数据。- 总之,
CustomImageDataset
提供了一种灵活且可扩展的方式来处理图像数据,允许在模型训练过程中有效地管理和预处理图像数据集。
img_path = os.path.join(self.img_dir, self.img_labels.iloc[idx, 0])这串代码中self.img_labels.iloc[idx, 0]
已经包含了一个相对路径,这意味着你不需要再次使用 os.path.join
将其与 self.img_dir
结合,因为这会导致路径中出现多余的目录层级。
所有在使用时应当直接img_path = self.img_labels.iloc[idx, 0],便可以读取相应文件及其子目录下的内容。