이미지 학습시, dataloader 빠르게 할 수 있을까요??!

dataloader에서 image를 불러올 때 빠르게 불러올 방법이 있을까요?

    def __getitem__(self, idx):
        file_id=self.data_path_list[idx]
        file_path = "../data/bmc/{0:04d}.jpg".format(file_id)
        image = cv2.imread( file_path )
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        
        image=self.to_tensor(image)
        if self.transform:
            #1. 이미지 사이즈 변환
            image=self.transform(image).type(torch.float32)# 이미지 0~1 정규화
        return image, torch.tensor(self.label[idx][0])
        

저는 getitem_ 함수에서 opencv를 써서 이미지를 로드하는데, 학습 시간보다 이미지 로드 하는데 시간이 너무 걸리네요. 윈도우 환경이다보니 multi process도 안되는데,
혹시 이미지 빨리 읽어오는 팁을 아시는 분 계신가요??!

램이 충분하시다면, 이미지를 미리 램에 올려놓고 쓰는 방법도 있습니다. 저는 주로 DataSet의 __init__에서 이미지를 미리 읽어서 쓰고 있어요.

def __init__():
  생략
  self. images = []
  for img_path in self.img_paths:
     image = cv2.imread( img_path )
     image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
     images += [image]
  
def __getitem__(self, idx):
      image=self.images[idx]
      return image, label
2개의 좋아요

감사합니다. init에다 올리는 방법도 있네요.
따로 가속 방법은 없나 보군요.

이 글은 마지막 댓글이 달린지 오래(7일)되어 자동으로 닫혔습니다. 댓글 대신 새로운 글을 작성해주세요! :slight_smile: