tentime/ufo-mnist
UFO-MNIST Table of Contents Why UFO-MNIST Get the Data Labels Usage Benchmark Visualization Contributing Citing UFO-MNIST License UFO-MNIST is a dataset of UFO-like spotting patterns and common aerial lookalikes, consisting of a training set of 8,000 examples and a test set of 2,000 examples. Each example is a 28x28 grayscale image associated with one of 10 labels. UFO-MNIST is designed as a compact, MNIST-style benchmark for machine-learning examples and image… See the full description on the dataset page: https://huggingface.co/datasets/tentime/ufo-mnist.
UFO-MNIST
  
<details><summary>Table of Contents</summary><p>
- Why UFO-MNIST
- Get the Data
- Labels
- Usage
- Benchmark
- Visualization
- Contributing
- Citing UFO-MNIST
- License </p></details><p></p>
UFO-MNIST is a dataset of UFO-like spotting patterns and common aerial lookalikes, consisting of a training set of 8,000 examples and a test set of 2,000 examples. Each example is a 28x28 grayscale image associated with one of 10 labels.
UFO-MNIST is designed as a compact, MNIST-style benchmark for machine-learning examples and image classifiers. It shares the original MNIST image size and train/test structure, and it is provided both as a compressed NumPy archive and as IDX gzip files compatible with common MNIST loaders.
Here's an example of how the data looks:
Why UFO-MNIST
MNIST-style datasets are useful because they are small, fast, visual, and easy to load. UFO-MNIST keeps those properties while moving away from handwritten digits into low-resolution spotting categories: disks, orbs, triangles, formations, glows, aircraft, balloons, birds, and celestial or sensor artifacts.
The dataset is assembled from public UFO/UAP sighting references, official release material, and generated augmentations that make the classes balanced and easy to use in MNIST-style experiments.
Get the Data
You can use the NumPy archive directly:
The dataset is also stored in the same IDX gzip format used by the original MNIST dataset:
Metadata:
Labels
Each training and test example is assigned to one of the following labels:
Usage
Loading the NumPy archive
import numpy as np
data = np.load("data/ufo_mnist_v1/ufo_mnist_28x28.npz")
X_train = data["train_images"]
y_train = data["train_labels"]
X_test = data["test_images"]
y_test = data["test_labels"]Loading the IDX files with Python
Use utils/mnist_reader.py in this repository:
from utils import mnist_reader
X_train, y_train = mnist_reader.load_mnist("data/ufo", kind="train")
X_test, y_test = mnist_reader.load_mnist("data/ufo", kind="t10k")Build from source
python3 -m pip install -e .
ufo-mnist build --output data/ufo_mnist_v1 --seed 1337
ufo-mnist inspect --dataset data/ufo_mnist_v1
python3 scripts/export_idx.pyBenchmark
The table below lists local benchmarks on the provided train/test split.
The CNN benchmark uses three convolutional blocks with batch normalization, dropout, adaptive pooling, and AdamW. Full metrics are available in `cnn_metrics.json`.
Visualization
Training samples by class:
Test samples by class:
Contributing
Issues and pull requests are welcome. Useful contributions include better loaders, benchmark submissions, visualization notebooks, and reproducible model scripts. If you submit a benchmark, include the exact train/test split, code, seed, preprocessing, and test accuracy.
Citing UFO-MNIST
If you use UFO-MNIST in a project or publication, cite this repository:
@misc{ufo_mnist_2026,
title = {UFO-MNIST: A 28x28 Grayscale Dataset of UFO-like Spotting Patterns},
author = {tentime},
year = {2026},
howpublished = {\url{https://github.com/tentime/ufo-mnist}},
}License
MIT. See LICENSE.
