Convolutional Neural Network built using OpenCV and Tensorflow for this Kaggle competition.
This is an implementation of "U-Net" described in this paper. The name "U-Net" comes from the "U" shape of the convolution and upsampling layers in the network. The "left" side of the "U" are convolution layers in which image shrinkage occurs. The "right" side of the "U" are transposed convolutional layers in which image dilation occurs.
The Net
class of this application is responsible for the structure and the flow of data through the neural network. This class allows training of a neural network with the train
method and access to the saved results of the training session with the predict
method.
The Convolution
class of this application is responsible for the operations that occur on the data within the structure defined in the Net.py
class. This includes the definition of activation functions and the operaions of the feed forward connections.
N.B.: Blue maps are inputs, and cyan maps are outputs.
No padding, no strides | Arbitrary padding, no strides | Half padding, no strides | Full padding, no strides |
No padding, strides | Padding, strides | Padding, strides (odd) |
N.B.: Blue maps are inputs, and cyan maps are outputs.
Convolution animations used from the following source
- [1] Vincent Dumoulin, Francesco Visin - A guide to convolution arithmetic for deep learning (BibTeX)