ultralytics/yolov3

PyTorch implementation of YOLOv3, YOLOv3-SPP, and YOLOv3-tiny for real-time object detection with training, validation, inference, and multi-format export.

What it solves

This project provides a PyTorch implementation of YOLOv3, a real-time object detection model that identifies and locates objects within images or videos. It solves the problem of needing a fast, accurate, and easy-to-deploy system for detecting multiple objects across various sizes (small, medium, and large) in a single pass.

How it works

YOLOv3 treats object detection as a single regression problem, predicting bounding boxes and class probabilities directly from the full image in one forward pass. It uses a Darknet-53 backbone for feature extraction and a feature-pyramid-style design to make predictions at three different scales. It employs anchor boxes to stabilize training and independent logistic classifiers to allow a single object to have multiple labels.

Who it’s for

It is designed for developers and researchers who need real-time object detection capabilities, ranging from those deploying on high-performance GPUs to those targeting CPU and edge devices (via the YOLOv3-tiny variant).

Highlights

  • Three Model Variants: Includes YOLOv3 (balanced), YOLOv3-SPP (enhanced accuracy via Spatial Pyramid Pooling), and YOLOv3-tiny (optimized for speed and edge devices).
  • Comprehensive Tooling: Provides built-in scripts for training, validation, inference, and exporting models to formats like ONNX, TensorRT, and CoreML.
  • Multi-scale Detection: Efficiently handles objects of varying sizes through multi-scale feature maps.
  • PyTorch Hub Integration: Allows users to load pretrained models programmatically with a few lines of code.