Firstly why not running multiple epochs, as you’ll crop randomly over period of few of epochs you’ll get different crops and would make more sense in my opinion.
But if you still wanna pursue it, you can do this small hack
    def __getitem__(self, index):
        index = index % len(self.imgs)
        """
        Rest same as before
        Now you'll pass through each sample 20 times, for jth image 
        all indices 20i + j (0<=i<20) you'll get same image
        Make sure you follow proper validation protocol, do evaluation per image only once
        And also maybe it'll be better to keep shuffle on while training
        """
    def __len__(self):
        return 20 * len(self.imgs)