Encoder-Decoder Convolution Neural Networks can do more

An encoder-decoder convolution neural network or sometimes also referenced as hour-glass-network because of its shape like an hour-glass can do other interesting things than classic image segmentation

With the right loss function and training material you can make them do other things as well, here we trained them to generate surface normals on faces

Example of generated surface normals on a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction
Second example of a generated surface normal for a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction
Third example of a generated surface normal for a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction
Fourth example of a generated surface normal for a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction
Fifth example of a generated surface normal for a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction
Fifth example of a generated surface normal for a face
Left to Right source image, normal map (encoded in unsigned 8bit), two different lambertian lit with different light direction

And all these examples were generated using a trained network that has only been trained with normal maps that had 7bit precission for encoding the normals and a training set of 13k images. The loss function is not optimal yet either we are losing a bit of sharpness here obviously.