Custom Image manipulation

Hi I am participating in a Kaggle competition:

so what i want help with are following:

  • creating a copy of all images and inverting them and then adding then in the dataset

now i know a function (PIL.ImageOps.invert(img)) that can invert a single image but how do i go about doing it for all the images and can i do it using GPU that will increase the speed

also once they are inverted how do i combine them with original to create the dataset

You could just write a loop or use multithreading to create an inverted copy of all of the images in a data pre-processing step. Look at using threadpool + map as that should be fastest. Doing it on the GPU will not make it faster unless you do it randomly per batch in your dataloader. You can add a custom Transform to your Datablock/Dataloader to do this. Depending on where you add it it would be as simple as 255 - x or 1 - x depending on if your add it before or after your image range is converted from 0-255 to 0-1.


thanks for your ideas, i figured it will be fastest and will save precious GPU time if i do it separately and upload as a new dataset on kaggle.