Repository
ACCV-Lab
Accelerated Computer Vision Lab (ACCV-Lab) is a systematic collection of packages with the common goal to facilitate end-to-end efficient training in the ADAS domain, each package offering tools & best practices for a specific aspect/task in this domain.
- Type
- Title
- 📝 Blog
- Accelerate Assisted Driving Training with NVIDIA ACCV-Lab Open-Source Toolkit 【CN】
- 🎬 Video
- ADAS & Robotics - Overview of ACCV-Lab for Data Loading and Model Training Acceleration 【EN】
Specs
- TypeTitle
- 📝 BlogAccelerate Assisted Driving Training with NVIDIA ACCV-Lab Open-Source Toolkit 【CN】
- 🎬 VideoADAS & Robotics - Overview of ACCV-Lab for Data Loading and Model Training Acceleration 【EN】
- 🎬 VideoVideo Training for ADAS 【CN】 and DALI-Based Image Preprocessing Pipeline 【EN】
- 🎬 VideoBatching Helpers: Optimizing Loss Computation 【EN】
README
ACCV-Lab Overview
Accelerated Computer Vision Lab (ACCV-Lab) is a systematic collection of packages with the common goal to
facilitate end-to-end efficient training in the ADAS domain, each package offering tools & best practices for
a specific aspect/task in this domain.
Resources
The following resources provide an overview of the project and its capabilities:
| Type | Title | Date | Link |
|---|---|---|---|
| 📝 Blog | Accelerate Assisted Driving Training with NVIDIA ACCV-Lab Open-Source Toolkit 【CN】 | 2025-12-24 | NVIDIA Tech Blog |
| 🎬 Video | ADAS & Robotics - Overview of ACCV-Lab for Data Loading and Model Training Acceleration 【EN】 | 2025-11-19 | Bilibili |
| 🎬 Video | Video Training for ADAS 【CN】 and DALI-Based Image Preprocessing Pipeline 【EN】 | 2025-06-12 | Bilibili |
| 🎬 Video | Batching Helpers: Optimizing Loss Computation 【EN】 | 2025-06-12 | Bilibili |
Contained Packages
This section provides a brief overview of the contained packages & evaluations performed on them. Please also
see the CONTAINED PACKAGES section in the documentation for a more detailed description of the packages,
their functionality and usage, as well as the API reference for each package and examples demonstrating the
usage of the packages. Evaluation results are also provided for some of the packages (On-Demand Video Decoder,
Batching Helpers, DALI Pipeline Framework).
ℹ️ Note: We are planning to add demos for packages contained in ACCV-Lab in the future. Apart from
acting as tutorials show-casing real-world examples, they will include the implementation of the experiments
which were used to obtain the evaluation results as shown in the documentation of the contained packages.
The contained packages are:
- On-Demand Video Decoder: Designed for efficiently obtaining video frames from video files. Focused on
the ADAS training domain, implementing access patterns typical for training workloads to ensure high
throughput and low latency. Enables training directly from videos with performance similar to image-based
training. - Batching Helpers: Facilitates easy-to-implement batching for non‑uniform sample sizes, a common issue in
loss computation in the ADAS domain. - DALI Pipeline Framework: Framework on top of
NVIDIA DALI that simplifies creation of
pipelines for typical ADAS use‑cases and enables integration into existing training implementations with
minimal changes. - Draw Heatmap: Utility for drawing Gaussian heatmaps (e.g. for object detection training) on the GPU.
Optionally, this package can process data in the batched format defined in the Batching Helpers package. - Optim Test Tools: Utilities for testing and profiling the optimizations. This functionality can be used
during development and evaluation of optimizations.
For more details on the packages (including performance evaluation results), please see the documentation for
each package in the CONTAINED PACKAGES section of the documentation.
⚠️ Important: If you are reading this in the
README.mdfile (and not in the HTML documentation),
please note that there is a full documentation available, containing this page, the guides, and additional
content (e.g. API reference, examples with detailed explanations, ...). You can view the documentation
online at NVIDIA.github.io/ACCV-Lab, or build a local copy as outlined
in theQuick Startsection below.
Quick Start
A docker file setting up the environment to install and use the ACCV-Lab package is available in the
docker/ directory. It allows building an image and using it as root (build without any parameters),
but also allows to configure a specific user (see the Dockerfile for the parameters).
The image can be built as follows (run from inside the docker/ directory):
# Build container to be used as root
docker build -t image_name:tag .
# Build container for the current user
docker build \
--build-arg USER_ID=$(id -u) \
--build-arg USER_NAME=$(id -un) \
--build-arg GROUP_ID=$(id -g) \
--build-arg GROUP_NAME=$(id -gn) \
-t image_name:tag .
⚠️ Important: If you want to run the On-Demand Video Decoder package inside the docker container, you
need to install and use the Nvidia container runtime.
Please see the Docker Guide for more details.
Before installing the packages, you need to make sure that git submodules are initialized. This can e.g. be
done by running the following command in your cloned version of the repository:
git submodule update --init --recursive
There are scripts available for the common tasks such as installing the contained packages or building the
documentation. The basic commands are:
# Install all namespace packages
./scripts/install_local.sh
# Install in development mode (see "Important" note below)
./scripts/install_local.sh -e
# Build documentation. This needs to be done after installing the packages, as the generation of the API
# documentation relies on the installed packages.
./scripts/build_docs.sh
⚠️ Important: Note that for some of the contained namespace packages, an editable build (i.e.
development mode) may not be possible. This is the case if the package usesscikit-build. In this case,
the package will be installed, but the binaries will be missing, leading to import errors when using the
package. It is recommended to only use the editable installation while working on specific packages.
⚠️ Important: Before generating the documentation, the package needs to be installed, as the generation
of the API documentation relies on the package being available (i.e. it should be possible to import it
during the generation). Note that installing the package also ensures that binaries of the used C++
extensions are available, so that any docstrings defined there can also be extracted.
ℹ️ Note: Pre-built documentation is available online at
NVIDIA.github.io/ACCV-Lab.
Project Structure
packages/- Individual namespace packages (each with their ownsetup.py)build_config/- Shared build utilities and configurationdocs/- Documentation generation implementation & common (i.e. not package-specific) part of documentationscripts/- Development and build scriptsdocs/guides/- Guides on how to work with this repository (also included in the documentation)docker/- Dockerfile for setting up a container able to runACCV-Lab
Available Guides
ℹ️ Note: The following guides are also available in the documentation (in the
Guidessection).
If you are reading this in theREADME.mdfile, we recommend building the documentation first (see the
Quick Startsection above) for better formatting and navigation, as well as to have access to the full
documentation.
The following guides provide comprehensive information for different aspects of the project:
🚀 Installation Guide
Step-by-step installation instructions for users and developers.
🐳 Docker Guide
Guide for setting up a container able to run accvlab from the provided Dockerfile and how to use it.
📚 Development Guide
Complete guide for developers on project structure, adding new namespace packages, and working with the build
system.
🎨 Formatting Guide
Guide to code formatting standards and tools. Explains how to use the unified formatting script and maintain
consistent code style across all namespace packages.
📖 Documentation Setup Guide
Comprehensive guide for setting up and maintaining project documentation. Covers Sphinx configuration,
automatic documentation generation, and best practices for documenting namespace packages.
🤝 Contribution Guide
Guide for contributors on how to contribute to the project.
Namespace Packages
The project includes several namespace packages, each providing specific functionality.
Please see the CONTAINED PACKAGES section in the documentation for details on the packages.
Each namespace package contains its own documentation, C++ extensions, etc. and can be installed independently
(see the Installation Guide for details).
Development
For development information, see the Development Guide which covers:
- Project architecture and namespace package structure
- Adding new namespace packages
- Build system configuration
- Testing and documentation workflows
Contributing
- Follow the Development Guide for development environment setup
- Use the Formatting Guide to maintain code style
- Ensure documentation is updated following the
Documentation Setup Guide
Please also see the Contribution Guide for more a more detailed description
Useful Links
- Online Documentation
- WeChat Discussion Group: A real-time channel for ACCV-Lab Q&A and news.
License
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.