Search code examples
tensorflowkerastraining-datasatellite-image

Training Chip and Target Image format in TensorFlow


I am trying to build a Land Cover Classification model for Sentinel Image. The Image Channels(bands) I am using are 32-bit float.

I need to understand how to best format the Image data, both the chips/patches for training and the Target Image for Classification. I have few questions?

  1. Do I need to convert my Original Image and Training Chips from 32bit to other depth?
  2. Do I need to ensure that both the training chips/patches and target have same depth (either 32bit, 16bit or other)?
  3. Do I need to resale my data? I saw some papers where data was rescaled between 0-1 or 0-255?
  4. Does data depth effect the performance of learning and predicting?

Many thanks.

Maz


Solution

  • The best precision to use on a PC is float32 for many reasons like, more precision makes calculation more accurate which is better, but somehow float16 is slower than float32 on PC(I don't remember why) and float64 is unusable slow on regular machines.

    So

    1. You usually need to use float32 as input anyway. So if it's float32 in the first place then just use it like that.

    2. You do, but I think they all will got converted to ther desired precision during fit or predict for keras. It's in $HOME/.keras/keras.json.

    3. I don't think it's a need but std centered rescale helps convergence, though, google always simply rescale to -1 to 1.

    4. It does, but as I said, more precision gives better accuracy but it slower.