Binary Convolution Network for faster real-time processing in ASICs
Tensorflow implementation of Towards Accurate Binary Convolutional Neural Network by Xiaofan Lin, Cong Zhao, and Wei Pan.
Why this network? Let's quote the authors
It has been known that using binary weights and activations drastically reduce memory size and accesses, and can replace arithmetic operations with more efficient bitwise operations, leading to much faster test-time inference and lower power consumption.
The implementation of the resulting binary CNN, denoted as ABC-Net, is shown to achieve much closer performance to its full-precision counterpart, and even reach the comparable prediction accuracy on ImageNet and forest trail datasets, given adequate binary weight bases and activations.
pip install -r requirements.txt
tensorflow-gpu will be installed. Make sure to have
CUDA properly setup.
NOTE: shift_parameters and beta values are currently not trainable. This is because the gradient for
tf.clip_by_valuewere not implemented in
tensorflow v1.4. Even in the current version (
tensorflow v1.8) the gradient for
tf.signis not implemented. Implementation of custom Straight Through Estimator (STE) is required.