You could crop the image patches manually in the __getitem__ function and then stack the crops into the batch dimension.
I’ve written a small example using torchvision.FiveCrop 77.
Since you need more crops, you should adapt the code to your crop function.
class MyDataset(Dataset):
    def __init__(self, images):
        self.images = images
        self.crop = transforms.FiveCrop(size=10)
        
    def __getitem__(self, index):
        image = self.images[index]
        # image dim: [3, 100, 100]
        # Crop to smaller image patches
        crops = self.crop(image)
        crops = torch.stack([transforms.ToTensor()(crop) for crop in crops])
        # Crops dim: [5, 3, 10, 10]
        
        return crops
        
    def __len__(self):
        return len(self.images)

# Create random images
images = [transforms.ToPILImage()(x) for x in torch.randn(10, 3, 100, 100)]
dataset = MyDataset(images)

loader = DataLoader(dataset, batch_size=2)

for batch_idx, data in enumerate(loader):
    bs, ncrops, c, h, w = data.size()
    # Reshape ncrops into batch size
    data = data.view(-1, c, h, w)
    # Continue with training procedure

If you want the whole batch only from one single image, you would have to set the batch_size to 1 in the DataLoader and return your multiple crops.