nuScenes devkit's changelog reaches 1.2.0 while its newest tag is from 2021
The devkit of the nuScenes dataset.
At a glance
- What is it?
- nuscenes-devkit is the Python toolkit for the nuScenes and nuImages datasets, installed with one pip command and used through tutorials that read a specific folder layout off disk. Two things in this repository have drifted. The changelog records a v1.2.0 from August 2025 that has no matching GitHub release, and the opening paragraph is still the instructions from a dataset download page telling the reader to click a green Code box.
- Who is it for?
- The devkit suits anyone training or evaluating perception models on nuScenes or nuImages who wants the official loaders rather than a hand written parser, and the folder layout it expects is documented precisely enough to script around. Two things to check before you start.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 61 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The changelog names a release that was never tagged
The changelog is the most maintained document in the file and it runs from September 2018 to August 2025. Its newest entry reads: Aug. 28, 2025, Devkit v1.2.0, change to supporting Python 3.9 and Python 3.12.
The release list for the repository stops three years earlier. The newest tag is 1.1.3 from 2021-04-05, described as bug fixes and pip requirements, followed by v1.1.2 and v1.1.1. Nothing in the release list matches 1.2.0, and nothing matches v1.1.11 from September 2023 or v1.1.10 from February 2023 either, both of which the changelog describes as specifying versions for pip requirements.
So there are three versions of the project's own history: what the changelog says shipped, what GitHub tagged, and what pip resolves. A second inconsistency sits inside the tagged set: the 1.1.2 tag is dated 2021-04-05 while its changelog entry is dated November 23, 2020, so the release was cut months after the work it describes.
The opening line is a download page template
The first paragraph after the title is not about the devkit. It welcomes the reader to the Motional and nuTonomy downloadable driverless vehicle software page and tells them to click the green box above labeled Code to download a copy of the software described below.
There is no green Code box in a repository README. That instruction belongs to a dataset download page, and it has been carried into the repository file without being rewritten. Everything after it, the overview, the changelog, the setup sections, is written for someone who arrived knowing what nuScenes is.
It is a small thing, and it is the kind of small thing that tells you how the file is maintained. The changelog is precise down to the day. The header still describes a different page.
One devkit, two datasets, and two different split names
The setup section states that a common devkit serves both nuScenes and nuImages, and that nuImages uses the same sensor setup as the 3D dataset with a similar structure, which is what makes installation simple for anyone moving between them.
The similarity stops at the split names. Under `/data/sets/nuimages`, the versioned JSON table folders provide train, val, test and mini splits. Under `/data/sets/nuscenes`, the equivalent folders provide trainval, test and mini. So the same code path handles two datasets whose split vocabulary differs by one entry and whose names do not line up one to one, with validation separated in one case and folded into a training split in the other.
Both datasets also accept a relocated root. If you want to keep the data somewhere other than the documented path, you set the `dataroot` parameter on the NuImages class or the NuScenes class. That is the only configuration knob the setup section offers, which tells you how little state the devkit keeps of its own.
One dataset needs every archive and the other needs two folders
The download requirements differ sharply. For nuScenes the file says you need to download all archives after logging in, with no subset offered. For nuImages it says at least the metadata and samples are needed and that sweeps are optional.
Both unpack to a fixed path, `/data/sets/nuscenes` or `/data/sets/nuimages`, with the same warning attached: unpack without overwriting folders that occur in multiple archives. That warning exists because the versioned JSON tables appear in more than one archive, so a naive extraction order silently replaces them.
The resulting layout is the contract the code reads. nuScenes expects samples for keyframes, sweeps for intermediate frames, a maps folder holding rasterised PNG images and vectorised JSON files, and versioned folders of JSON tables with the metadata and annotations. nuImages expects samples, sweeps and versioned folders, and no maps folder at all.
The two label sets are installed on top of that same root rather than beside it. Panoptic nuScenes, published in August 2021, adds a panoptic folder and its own versioned tables; nuScenes-lidarseg, published in August 2020, adds the semantic labels for point clouds. Both cover approximately 40,000 keyframes. The Panoptic install list has four steps, and the third of them is to get the latest version of the devkit, which is the same instruction this repository makes hardest to follow.
Python support is tested on two versions and nothing else
The devkit is tested for Python 3.9 and Python 3.12. That sentence is the entire platform statement, and it sits directly under the note that one devkit serves both datasets and directly above a link to an installation page with its own section on installing Python.
The changelog explains when the range last moved: the August 2025 entry for v1.2.0 is the change to supporting 3.9 and 3.12. Before that, the two most recent entries, v1.1.11 and v1.1.10, were about specifying versions for pip requirements rather than about interpreters.
Two tested versions is a narrow claim for a package distributed by pip, and it means an environment on 3.10, 3.11 or 3.13 is outside what anyone has verified. The installation page is where the detail lives; the file itself stops at the two numbers and defers.
What the file does spell out is how you start working. The nuImages route runs a notebook from the Python SDK tutorials directory, naming the file directly:
jupyter notebook $HOME/nuscenes-devkit/python-sdk/tutorials/nuimages_tutorial.ipynbThe Panoptic route points at a different notebook in the same directory, and both are followed by links to a database schema document and a set of annotator instructions. So the entry point is a notebook that assumes the folder layout already exists on disk, which is why the layout section above is the part worth reading twice.
The licence file is named LICENSE.txt and the metadata reports nothing
The repository's licence field reports no recognised value while a LICENSE.txt file sits at the root of the tree. Nothing in the files reconciles the two, so the terms are whatever that document says, and this article does not choose between them.
The top level is small enough to read at a glance: a licence file, the README, a docs directory, a python-sdk directory, a setup directory, and the GitHub configuration. There is no package manifest at the root and no lock file, so the version the devkit reads for itself is not recorded in a file a reader would find by looking.
What the tree does show is the split between documentation and code. Tutorials live under the Python SDK, the schema and instruction notes live in docs, and the setup directory holds whatever the packaging needs. The homepage recorded for the project is the dataset site rather than any page describing the toolkit.
Releases broke compatibility once and dropped the teaser set
Two entries in the changelog describe changes that would break a working setup, and both are worth knowing before you pin a version.
The December 2018 entry says the devkit folders were restructured and that this breaks backward compatibility. The March 2019 entry for v1.0.0 says the full dataset, paper and devkit were released and that support was dropped for the teaser data. Anyone whose pipeline was built against the teaser set lost their input at that version.
The rest of the history is additive and tells you what the toolkit grew into. CAN bus expansion in February 2020, map expansion in July 2019, the prediction challenge code in March 2020, tracking evaluation code with a reorganised detection evaluation in November 2019, then a series of Panoptic nuScenes releases in 2021 that added tracking metrics and a PAT metric, ending with two releases in 2021 fixing the lidarseg and map expansion code.
Two sections the table of contents promises are not in the visible text here: Known issues and Citation.
Editorial conclusion
The devkit suits anyone training or evaluating perception models on nuScenes or nuImages who wants the official loaders rather than a hand written parser, and the folder layout it expects is documented precisely enough to script around. Two things to check before you start. Work out which version you are actually installing, since the changelog names a 1.2.0 from August 2025 while the newest published release is 1.1.3 from April 2021, and pip will not tell you which of those the code in front of you is. And read the terms before downloading, because both datasets require an account and an agreement to the terms of use, with nuScenes requiring every archive and nuImages accepting a metadata and samples subset.
Frequently asked questions
What is the structure of the nuScenes dataset?
As the devkit expects it on disk: a root directory holding samples for keyframes, sweeps for intermediate frames, a maps folder with rasterised .png images and vectorised .json files, and versioned folders of JSON tables carrying the metadata and annotations, with the trainval, test and mini splits each in its own folder. The default path given is /data/sets/nuscenes, and a different location is set through the dataroot parameter.
How many scenes are in nuScenes?
This repository does not give a scene count. The numbers it does state are approximate keyframe counts: panoptic labels for roughly 40,000 keyframes, published in August 2021, and lidarseg semantic labels for roughly 40,000 keyframes, published in August 2020.
What are nuScenes?
The dataset itself is not described here, this repository is its devkit. What the file covers is the tooling: one pip installable package used by both nuScenes and nuImages, a changelog of devkit versions, the folder layout each dataset expects, tutorial notebooks, and pointers to schema and annotation instruction notes in the docs directory.
How do I install nuscenes-devkit?
With `pip install nuscenes-devkit`. The devkit is tested on Python 3.9 and Python 3.12, installing Python itself is pointed at a separate installation page, and a longer advanced installation procedure lives on that page rather than in the file.
Do I need every nuScenes archive to use the devkit?
For nuScenes the file says to download all archives. For nuImages it says at least the metadata and samples are required and the sweeps are optional. Both unpack to a fixed root without overwriting folders that appear in more than one archive, because the versioned JSON tables are duplicated across them.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/nutonomy-nuscenes-devkit)