Is the number of patches and their location for each image fixed?
If so, you could create these patches only once and could reuse them afterwards.
If that’s not possible, it could be a bit tricky to use multiple processes to create the patches, as you would have to provide the image index as well as the patch “index” (location etc.) to the Dataset.__getitem__ method e.g. by using a custom sampler.