Weird, I have tried a simplified version of your script and it works for me:
import pickle
import torchvision.transforms as transforms
from torch.utils.data import Dataset
from PIL import Image
import numpy as np
from torch.utils.data import DataLoader


class SomeDataset(Dataset):
    def __init__(self, usage='val', dataset_pickle_file='./some.pkl', skip_every_n_image=1):
        super(SomeDataset, self).__init__()

        self.to_tensor = transforms.ToTensor()
        self.data_info = {}
        self.data_info[0] = ['./data/Leek2D/Renderings/S1_DD2.bmp', './data/Leek2D/Renderings/S1_DS2.bmp']
        self.data_info[1] = ['./data/Leek2D/Renderings/S1_DD2.bmp', './data/Leek2D/Renderings/S1_DS2.bmp']

        self.idx = [i for i in range(0, len(self.data_info[0]), skip_every_n_image)]
        self.data_len = len(self.idx)

    def __len__(self):
        return self.data_len

    def __getitem__(self, index):  #1
        instanceNum = self.idx[index]
        color_img = self.data_info[0][instanceNum]
        color_imgPIL = Image.open(color_img)
        color_tensor = self.to_tensor(np.array(color_imgPIL))
        d_img = self.data_info[1][instanceNum] #2
        d_imgPIL = Image.open(d_img)
        d_tensor = self.to_tensor(np.array(d_imgPIL))
        output = {'image': color_tensor, 'dt': d_tensor}
        return output


train_dataloader = DataLoader(SomeDataset(), shuffle=True,
                                  batch_size=1,
                                  num_workers=0)

for epoch in range(2):
        # d_net.train()
        for train_idx, train_data in enumerate(train_dataloader):
                 image = train_data['image']

Can you try it? (Change the self.data_info into some image you have on disk)