You only look once, but you reimplement neural nets over and over again.
YAD2K is a 90% Keras/10% Tensorflow implementation of YOLO_v2.
Original paper: YOLO9000: Better, Faster, Stronger by Joseph Redmond and Ali Farhadi.
- Keras
- Tensorflow
- Numpy
- Pillow (For rendering test results.)
- Python 3
git clone https://github.com/allanzelener/yad2k.git
cd yad2k
# [Option 1] To replicate the conda environment:
conda env create -f environment.yml
source activate yad2k
# [Option 2] Install everything globaly.
pip install numpy
pip install tensorflow-gpu # CPU-only: conda install -c conda-forge tensorflow
pip install keras # Possibly older release: conda install keras
Until Keras PR 5350 is merged:
pip install git+https://github.com/allanzelener/keras.git@func_defaults_to_tuple
- Download Darknet model weights from the official YOLO website.
- Convert the Darknet YOLO_v2 model to a Keras model.
- Test the converted model on the small test set in
images/
.
wget http://pjreddie.com/media/files/yolo.weights
./yad2k.py cfg/yolo.cfg yolo.weights model_data/yolo.h5
./test_yolo.py model_data/yolo.h5 # output in images/out/
See ./yad2k.py --help
and ./test_yolo.py --help
for more options.
The YAD2K converter currently only supports YOLO_v2 style models, this include the following configurations: darknet19_448
, tiny-yolo-voc
, yolo-voc
, and yolo
.
yad2k.py -p
will produce a plot of the generated Keras model. For example see yolo.png.
YAD2K assumes the Keras backend is Tensorflow. In particular for YOLO_v2 models with a passthrough layer, YAD2K uses tf.space_to_depth
to implement the passthrough layer. The evaluation script also directly uses Tensorflow tensors and uses tf.non_max_suppression
for the final output.
voc_conversion_scripts
contains two scripts for converting the Pascal VOC image dataset with XML annotations to either HDF5 or TFRecords format for easier training with Keras or Tensorflow.
yad2k/models
contains reference implementations of Darknet-19 and YOLO_v2.
- Error deserializing Lambda wrapping space_to_depth. Apply this PR to Keras.
pip install git+https://github.com/allanzelener/keras.git@func_defaults_to_tuple
- Add YOLO_v2 loss function.
- Script to train YOLO_v2 reference model.
- Support for additional Darknet layer types.
- Tuck away the Tensorflow dependencies with Keras wrappers where possible.
- YOLO_v2 model does not support fully convolutional mode.
YAD2K stands on the shoulders of giants.
- 🔥 Darknet 🔥
- Darknet.Keras - The original D2K for YOLO_v1.
- Darkflow - Darknet directly to Tensorflow.
- caffe-yolo - YOLO_v1 to Caffe.