A task I’m working on at the moment requires a CNN with a height map as one of the inputs. This is a matrix of floating point values in which each point is the height of that point above sea level.

I’m having trouble deciding how to normalize this data. I know there are networks that work on depth or distance data but that is different for several reasons:

  • Height can also be negative (as opposed to depth/distance which starts at 0)
  • Height has a very large range - can get values between -400 and +~9000.

For these reasons the common approach to normalisation, simply subtracting the mean and dividing by the standard deviation, will result in the loss of information in most cases (all values will be close to zero).

I thought of maybe subtracting the local mean for each input, rather than a general mean calculated from all the data, but I still don't know what to do with the standard deviation, since dividing by the local standard deviation can result in very “flat” and very “steep” inputs looking the same after normalization.

  • $\begingroup$ Could you apply a log transformation to it? That would mean that the more frequent data points close to NN (sea level) would still have a good range, while the (presumably rarer?) extreme values would be compressed. $\endgroup$ – Oliver Mason May 21 '18 at 15:41
  • $\begingroup$ Hi, thanks. I know that’s a common practice with depth/distance data but the problem as I mentioned is that my data can also be negative and log is undefined for non-positive values.. $\endgroup$ – iariav May 21 '18 at 19:50
  • 1
    $\begingroup$ As you're only using the log to compress the range of the data, could you not just log the magnitude? So that -250 becomes -2.397? $\endgroup$ – Oliver Mason May 22 '18 at 7:57
  • 1
    $\begingroup$ that's an interesting idea but I think it's still problematic. let us say I'm working on a high altitude area. say 5000+. so all the small variations in height will be lost after I take the log. and if I take the same height structure to a low altitude place, say ~100, the representation will be very different. $\endgroup$ – iariav May 23 '18 at 7:18
  • $\begingroup$ i would suggest local-contrast-normalization. $\endgroup$ – thecomplexitytheorist May 31 '18 at 16:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.