我一直在 SIIM-ISIC 黑色素瘤分类竞赛中尝试使用 PyTorch 进行二元分类 (https://www.kaggle.com/competitions/siim-isic-melanoma-classification),但我遇到了一些问题如何组合图像和标签。我一直在尝试实现一个类来加载和合并图像及其标签,但由于某种原因,每次我尝试使用 5 或另一个索引运行线路 train[5] 时,都会出现相同的错误:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/kaggle/input/siim-isic-melanoma-classification/jpeg/train/ISIC_0074311'
我可以向大家保证路径已正确复制并且图像位于这些文件夹中。
train.csv: 图片名称 病人ID 性别 大约年龄 anatom_site_general_challenge 诊断 良性_恶性 目标(0或1)
jpeg文件夹中的train文件夹: ISIC_0015719.jpg ISIC_0052212.jpg ISIC_0068279.jpg ISIC_0074268.jpg ...
我的代码:
import os
import pandas as pd
from PIL import Image
import torch
import torch.utils.data
from PIL import Image
class LoadDataset(torch.utils.data.Dataset):
def __init__(self, csv_path, image_folder, transform = None):
self.df = pd.read_csv(csv_path)
self.image_folder = image_folder
self.transform = transform
def __len__(self):
return len(self.df)
def __getitem__(self, index):
filename = self.df.loc[index, 'image_name']
label = self.df.loc[index, 'target']
image = Image.open(os.path.join(self.image_folder, filename))
if self.transform is not None:
image = self.transform(image)
return image, label
train = LoadDataset('/kaggle/input/images1-isic2020/train.csv', '/kaggle/input/images1-isic2020/train/train')
train[5]
有没有人知道如何解决这个问题,或者除了图像生成器之外还有其他选择来获取带有标签的每个图像?
该错误表明
filename
缺少“.jpg”扩展名。一个简单的修复方法是,如果扩展名始终采用相同的格式,则手动添加扩展名:
filename = self.df.loc[index, 'image_name'] + ".jpg"