Deep Learning for Depth, Ego-Motion, Optical Flow Estimation, and Semantic Segmentation