안녕하세요!
밑에 첨부 이미지는 제가 갖고 있는 큰 사이즈의 csv 파일을 제가 같은 형식으로 간략화 하여 나타낸 것입니다!
해당 csv 파일은 이미지들이 들어있는 각 폴더의 경로가 "File Location"에 나타나 있으며, 해당 폴더 안에 각각 몇개의 이미지들이 들어있는지는 "Number of Images" 에 나타나 있습니다.
다름이 아니라, 제가 csv 파일과 pandas를 이용하여 이미지들을 행단위로 iloc[idx]를 이용하여 읽어내려오는 기본적인 방식은 이해 했습니다.
하지만 위와 같이 하나의 row 안에 표시된 폴더들 안에, 이미지들을 불러오기 위해 한번 더 루프를 돌려야할 때 어려움을 겪어 질문을 드리게 되었습니다.
위 이미지에 따르면 ./data/asd 폴더 안에 이미지 16개를 순차적으로 불러온 후 ./data/vbn 폴더로 넘어가 또 그 안에 있는 이미지 16개를 순차적으로 불러와야하는 상황입니다.
아래와 같이 코드를 짜보기도 했고,
차라리 idx가 각 폴더 안의 이미지 파일들을 가리키게 하고 getitem 함수를 반복적으로 호출해봐야 하나 싶어 여러 시도중에 있는데
이미지 호출 방식에 대해 어떤 조언이든 주시면 너무 감사하겠습니다..!
class CustomDataset(torch.utils.data.Dataset):
def __init__(self, root, csv_file):
self.root = root
self.df = pd.read_csv(csv_file)
def __len__(self):
#The sum of "Number of Images" values will be the total length of the image dataset.
return len(self.df.iloc[1:,1].sum())
def __getitem__(self, idx):
#This is where I have trouble controlling idx.
img_name = os.path.join(self.root, self.df.iloc[idx, 2] + '.dcm')
image = io.imread(img_name)
image = torch.tensor(image)
return image