Darknet Layers Implemented

Part of this project converts darknet configurations to their equivalent Tensorflow operations. One of the goals of this project is to bring the BEAGLES darknet backend to parity with Darknet proper.

Progress:

https://progress-bar.dev/60
The following checklist tracks the progress toward that goal:
☑ activation - Not handled as a layer, more of a decoration for other layers.
☐ logistic
☐ loggy
☑ relu
☑ elu
☐ selu
☐ gelu
☐ relie
☐ ramp
☐ linear
☐ tanh
☐ psle
☑ leaky
☑ stair
☑ hardtan
☐ lhtan
☑ avgpool
☑ batchnorm - Not handled as a layer, more of a decoration for other layers.
☑ connected
☑ conv-lstm
☑ convolutional
☑ cost - Not handled as layer, uses beagles.backend.framework.NeuralNet
☐ crnn
☑ crop
☐ deconvolutional
☑ detection - Not handled as a layer, Uses beagles.backend.framework.Yolo
☑ dropout
☐ Gaussian-yolo
☑ gru
☑ local
☑ lstm
☑ maxpool
☐ normalization
☑ region - Not handled as a layer, Uses beagles.backend.framework.YoloV2
☑ reorg
☑ rnn
☐ sam
☐ scale-channels
☑ shortcut
☑ softmax
☑ upsample
☐ yolo - May need to use a combination of Framework and Layer API

Migrate to Tensorflow 2

Currently there is a mix of Tensorflow 1.x and Tensorflow 2 APIs but it is a goal to remove all tensorflow.compat.v1 symbols from the BEAGLES codebase.

There are several advantages to migrating:

  • Simplified summary API
  • Simplified and more portable checkpointing
  • Improved performance with tensorflow.function() decorator
  • Improved code maintainability
Update 2020-Oct-22:
Created a NetBuilder API. Currently assessing how much code can be deprecated by using the Keras API to manage weights and checkpoints.
Update 2020-Nov-03:
Converted all code to TF 2.0. Keeping legacy code in case anyone still wants to toy with TF 1.x. 3x the FPS performance for YOLOV2 detection.

Progress:

https://progress-bar.dev/95