我正在尝试从 https://github.com/DDI-Dataset/DDI-Code 及其数据集运行代码(已下载并添加到作者指示的文件夹中),并且我收到消息“ 发生异常:异常请访问 https://stanfordaimi.azurewebsites.net/datasets/35866158-8196-48d8-87bf-50dca81df965 下载DDI数据集。 ”在 VScode 中使用 python 调试器时 下面是文件“ddi_dataset.py”中的代码。
"""Code for loading DDI Dataset."""
from torch.utils.data import Subset
from torchvision.datasets import ImageFolder
from torchvision import transforms as T
import os
import pandas as pd
import numpy as np
means = [0.485, 0.456, 0.406]
stds = [0.229, 0.224, 0.225]
test_transform = T.Compose([
lambda x: x.convert('RGB'),
T.Resize(299),
T.CenterCrop(299),
T.ToTensor(),
T.Normalize(mean=means, std=stds)
])
class DDI_Dataset(ImageFolder):
_DDI_download_link = "https://stanfordaimi.azurewebsites.net/datasets/35866158-8196-48d8-87bf-50dca81df965"
"""DDI Dataset.
Args:
root (str): Root directory of dataset.
csv_path (str): Path to the metadata CSV file. Defaults to `{root}/ddi_metadata.csv`
transform : Function to transform and collate image input. (can use test_transform from this file)
"""
# root = 'C:\\Users\\User\\OneDrive\\desktop\\CSproject\\datasets\\DDI\\images'
def __init__(self, root, csv_path=None, download=True, transform=None, *args, **kwargs):
if csv_path is None:
csv_path = os.path.join(root, "ddi_metadata.csv")
if not os.path.exists(csv_path) and download:
raise Exception(f"Please visit <{DDI_Dataset._DDI_download_link}> to download the DDI dataset.")
assert os.path.exists(csv_path), f"Path not found <{csv_path}>."
super(DDI_Dataset, self).__init__(root, *args, transform=transform, **kwargs)
self.annotations = pd.read_csv(csv_path)
m_key = 'malignant'
if m_key not in self.annotations:
self.annotations[m_key] = self.annotations['malignancy(malig=1)'].apply(lambda x: x==1)
def __getitem__(self, index):
img, target = super(DDI_Dataset, self).__getitem__(index)
path = self.imgs[index][0]
annotation = dict(self.annotations[self.annotations.DDI_file==path.split("/")[-1]])
target = int(annotation['malignant'].item()) # 1 if malignant, 0 if benign
skin_tone = annotation['skin_tone'].item() # Fitzpatrick- 12, 34, or 56
return path, img, target, skin_tone
"""Return a subset of the DDI dataset based on skin tones and malignancy of lesion.
Args:
skin_tone (list of int): Which skin tones to include in the subset. Options are {12, 34, 56}.
diagnosis (list of str): Include malignant and/or benign images. Options are {"benign", "malignant"}
"""
def subset(self, skin_tone=None, diagnosis=None):
skin_tone = [12, 34, 56] if skin_tone is None else skin_tone
diagnosis = ["benign", "malignant"] if diagnosis is None else diagnosis
for si in skin_tone:
assert si in [12,34,56], f"{si} is not a valid skin tone"
for di in diagnosis:
assert di in ["benign", "malignant"], f"{di} is not a valid diagnosis"
indices = np.where(self.annotations['skin_tone'].isin(skin_tone) & \
self.annotations['malignant'].isin([di=="malignant" for di in diagnosis]))[0]
return Subset(self, indices)
我认为问题是变量
root
不包含任何文件路径,所以我尝试向它添加绝对文件路径(标记上方,
root = 'C:\\Users\\User\\OneDrive\\desktop\\CSproject\\datasets\\DDI\\data_dir\\images'
),但是,出现了同样的错误消息。
以下是该文件在我的计算机中的位置。
**ddi_dataset.py:** C:\Users\User\OneDrive\desktop\CSproject\dataset\DDI\ddi_dataset.py **images: ** C:\Users\User\OneDrive\desktop\CSproject\dataset\DDI\images ('images'是我放置 png.s 和 ddi_metadata.csv 的文件夹)
I'我希望知道问题发生的原因以及如何解决~谢谢你
代码出现问题是因为它在的“images”文件夹中找不到“ddi_metadata.csv”文件,而此文件是初始化 DDI_Dataset 类所必需的。
可以尝试以下几种解决方案:
-
确认“ddi_metadata.csv”文件存在于正确的位置: 该文件应该位于“images”文件夹内,即“C:\Users\User\OneDrive\desktop\CSproject\dataset\DDI\images\ddi_metadata.csv”。
-
在创建 DDI_Dataset 对象时,明确指定 csv_path 参数:
dataset = DDI_Dataset(root='C:\\Users\\User\\OneDrive\\desktop\\CSproject\\dataset\\DDI\\images',
csv_path='C:\\Users\\User\\OneDrive\\desktop\\CSproject\\dataset\\DDI\\images\\ddi_metadata.csv')
- 如果仍然遇到问题,请尝试将“ddi_metadata.csv”文件复制到与“ddi_dataset.py”文件相同的目录中, 然后在创建 DDI_Dataset 对象时,将 root 参数设置为该目录:
dataset = DDI_Dataset(root='C:\\Users\\User\\OneDrive\\desktop\\CSproject\\dataset\\DDI')
如果以上方法都无法解决问题,请检查以下内容:
- 确保已经下载了完整的 DDI 数据集,并且“ddi_metadata.csv”文件包含在内。
- 检查“ddi_metadata.csv”文件的编码格式。如果编码格式不是 UTF-8,则可能会导致读取文件出现问题。 可以尝试使用文本编辑器打开该文件,并将其另存为 UTF-8 编码格式的文件。
通过以上步骤,应该能够解决“发生异常”的错误,并成功加载 DDI 数据集。
标签:python,file-not-found From: 78774298