keras-team / keras-preprocessing

Utilities for working with image data, text data, and sequence data.
Other
1.02k stars 444 forks source link

Color conversion #343

Open AzazelHD opened 3 years ago

AzazelHD commented 3 years ago

Hey guys. I have recently gone into a ML project and using ImageDataGenerator class to augment my image dataset

However, I think the color conversion done in BatchFromFilesMixin, when calling load_img from .utils should not be done there, but on ImageDataGenerator class.

The reasons I have is people, like me in this case, may want to write their own custom transformations for images. I know there is the preprocessing_function argument, but that doesn't solve all problems.

Check the following:

My dataset has both rgb and rgba images. In my case, I wanna add a random background to png images. I can't using ImageDataGenerator class due to the color conversion. And I can't also set color_mode to rgba because then it I won't know which images hadn't background at the beggining.

The easiest way to fix this for my particular case is removing the lines from load_img where the color conversion is done, so the image ImageDataGenerator class recieves, is the image as it is. If it has 1 channel, then 1 channel. If it has 3, then 3, and if it has 4, then 4.

Please correct me if I am wrong and also please if you know another way that allows me making this kind of augmentation

I am aware that if keras doesn't control the channels on ImageDataGenerator class, then the user must take care of it, so it matches the input layer shape of the model