← all repositories
zzh8829/yolov3-tf2

YoloV3 in TF 2.0: a clean port with the migration notes included

It ports YoloV3 to TensorFlow 2.0’s eager execution and Keras functional API, then documents exactly where the framework bites back.

2.5k stars Jupyter Notebook Computer VisionML Frameworks
yolov3-tf2
Not currently ranked — collecting fresh signals.
star history

What it does

This is a ground-up re-implementation of the YoloV3 object-detection network for TensorFlow 2.0, packaging both the full model and the lightweight yolov3-tiny variant with pre-trained Darknet weights. It covers the whole lifecycle: inference on images and video, transfer learning, eager training with tf.GradientTape, graph-mode training via model.fit, and export to TensorFlow Serving. The author emphasizes “clean” code and best practices, using tf.keras.layers, tf.data pipelines, and absl-py for flags.

The interesting bit

The README’s value isn’t just the code; it’s the candid implementation notes. The author openly discusses the pain points of loading Darknet weights into Keras’s functional API because of layer ordering mismatches, the re-compilation traps of @tf.function, and why model(x) can be slower than model.predict if you ignore graph compilation overhead. It even includes a “simple hack” for BatchNormalization during transfer learning, which is the kind of detail usually buried in GitHub issues.

Key highlights

  • Supports both yolov3 and yolov3-tiny with converted pre-trained weights.
  • Offers three training modes: eager GradientTape, graph model.fit, and a hybrid eager_fit.
  • Includes a full TF 2.0 data pipeline using tf.data and vectorized transformations.
  • Exports to TensorFlow Serving with a documented signature for bounding boxes, scores, and classes.
  • Provides rough latency benchmarks across CPU, desktop GPU, and AWS Tesla instances.

Caveats

  • The benchmark numbers are explicitly labeled as “rough calculations” from detect_video.py, not rigorous training or inference benchmarks.
  • Training can fail with NaN loss if input bounding-box coordinates are not normalized or if the learning rate is too high; the README warns that label formats vary between tools like VOTT and labelImg.
  • Keras’s h5 format cannot save the nested sub-models used for Darknet weight loading, so you must use TF Checkpoints instead.

Verdict

Worth a look if you need a readable, well-commented YoloV3 baseline in modern TensorFlow and want to avoid the usual TF 2.0 migration pitfalls. Skip it if you are married to PyTorch or need a turn-key, production-hardened object-detection framework with enterprise support.

Frequently asked

What is zzh8829/yolov3-tf2?
It ports YoloV3 to TensorFlow 2.0’s eager execution and Keras functional API, then documents exactly where the framework bites back.
Is yolov3-tf2 open source?
Yes — zzh8829/yolov3-tf2 is open source, released under the MIT license.
What language is yolov3-tf2 written in?
zzh8829/yolov3-tf2 is primarily written in Jupyter Notebook.
How popular is yolov3-tf2?
zzh8829/yolov3-tf2 has 2.5k stars on GitHub.
Where can I find yolov3-tf2?
zzh8829/yolov3-tf2 is on GitHub at https://github.com/zzh8829/yolov3-tf2.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.