ImageNet Dataset
The Ultralytics ImageNet dataset (data="imagenet") is the ImageNet-1k / ILSVRC-2012 subset used to train and benchmark image classification models. It contains 1,000 object classes with 1,281,167 training images and 50,000 validation images, is typically trained at a 224x224 image size, and downloads to roughly 144 GB of data. The broader ImageNet database is far larger — over 14 million high-resolution images annotated with WordNet synsets across more than 20,000 categories — but Ultralytics trains on the standardized 1,000-class ILSVRC subset that became the de-facto benchmark for deep learning in computer vision.
ImageNet Pretrained Models#
| Model | size (pixels) | acc top1 | acc top5 | Speed CPU ONNX (ms) | Speed T4 TensorRT10 (ms) | params (M) | FLOPs (B) at 224 |
|---|---|---|---|---|---|---|---|
| YOLO26n-cls | 224 | 71.4 | 90.1 | 5.0 ± 0.3 | 1.1 ± 0.0 | 2.8 | 0.4 |
| YOLO26s-cls | 224 | 76.0 | 92.9 | 7.9 ± 0.2 | 1.3 ± 0.0 | 6.7 | 1.5 |
| YOLO26m-cls | 224 | 78.1 | 94.2 | 17.2 ± 0.4 | 2.0 ± 0.0 | 11.6 | 4.8 |
| YOLO26l-cls | 224 | 79.0 | 94.6 | 23.2 ± 0.3 | 2.8 ± 0.0 | 14.1 | 6.0 |
| YOLO26x-cls | 224 | 79.9 | 95.0 | 41.4 ± 0.9 | 3.8 ± 0.0 | 29.6 | 13.5 |
Key Features#
- The Ultralytics
imagenetdataset provides 1,000 classes with 1,281,167 training and 50,000 validation images (ILSVRC-2012), the standard pretraining benchmark for image classification. - Classes are organized according to the WordNet hierarchy, where each class corresponds to a synset (a set of synonymous terms).
- Models are typically trained at 224x224, and the full dataset is a large ~144 GB download.
- The annual ImageNet Large Scale Visual Recognition Challenge (ILSVRC) has been instrumental in advancing computer vision research.
Dataset Structure#
The Ultralytics ImageNet dataset uses the ILSVRC-2012 split:
| Split | Images | Classes |
|---|---|---|
| Train | 1,281,167 | 1,000 |
| Validation | 50,000 | 1,000 |
Images are stored in per-class folders named by WordNet synset ID (for example, n01440764), the layout Ultralytics classification training expects. Each of the 1,000 classes maps to a WordNet synset, and there is no separate test split, so the 50,000-image validation set is used to measure accuracy.
ImageNet-1k is a ~144 GB download, so make sure you have enough disk space before training. For quick experiments, the smaller ImageNette and ImageNet10 subsets use the same folder format and train in a fraction of the time.
ImageNet Large Scale Visual Recognition Challenge (ILSVRC)#
The annual ImageNet Large Scale Visual Recognition Challenge (ILSVRC) let researchers benchmark algorithms on a large-scale, standardized dataset with consistent evaluation metrics. It drove major advances in deep learning for image classification, object detection, and other vision tasks — most notably AlexNet's 2012 win, which helped launch the modern deep-learning era.
Applications#
The ImageNet dataset is widely used to train and evaluate deep learning models for image classification, object detection, and object localization. Landmark architectures such as AlexNet, VGG, and ResNet were all developed and benchmarked on ImageNet, and ImageNet-pretrained weights remain a common starting point for transfer learning across vision tasks.
Usage#
To train a YOLO classification model on ImageNet for 100 epochs at a 224x224 image size, use the code snippets below.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-cls.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="imagenet", epochs=100, imgsz=224)You can also manage classification datasets and run training in the cloud with Ultralytics Platform.
Sample Images and Annotations#
The ImageNet dataset spans the 1,000 ILSVRC-2012 classes, providing a diverse and extensive resource for training and evaluating computer vision models. Here are some example images from the dataset:

Citations and Acknowledgments#
If you use the ImageNet dataset in your research or development work, please cite the following paper:
@article{ILSVRC15,
author = {Olga Russakovsky and Jia Deng and Hao Su and Jonathan Krause and Sanjeev Satheesh and Sean Ma and Zhiheng Huang and Andrej Karpathy and Aditya Khosla and Michael Bernstein and Alexander C. Berg and Li Fei-Fei},
title={ImageNet Large Scale Visual Recognition Challenge},
year={2015},
journal={International Journal of Computer Vision (IJCV)},
volume={115},
number={3},
pages={211-252}
}We would like to acknowledge the ImageNet team, led by Olga Russakovsky, Jia Deng, and Li Fei-Fei, for creating and maintaining the ImageNet dataset as a valuable resource for the machine learning and computer vision research community. For more information about the ImageNet dataset and its creators, visit the ImageNet website.
FAQ#
The ImageNet dataset is a large-scale image database whose broader collection holds over 14 million high-resolution images annotated with WordNet synsets. In Ultralytics,
data="imagenet"trains on the standardized 1,000-class ILSVRC-2012 subset, which is the de-facto benchmark for image classification pretraining. Landmark models such as AlexNet, VGG, and ResNet were trained and benchmarked on ImageNet, underscoring its role in advancing computer vision.The Ultralytics
imagenetdataset uses the ILSVRC-2012 subset with 1,000 classes, 1,281,167 training images, and 50,000 validation images, typically trained at a 224x224 image size, for a total download of roughly 144 GB. The full ImageNet database is much larger (over 14 million images across more than 20,000 WordNet synsets), but the 1,000-class subset is the one used for classification training and benchmarking.To train an Ultralytics YOLO model on ImageNet, load a pretrained classification model and point
dataatimagenet:Train Examplefrom ultralytics import YOLO # Load a model model = YOLO("yolo26n-cls.pt") # load a pretrained model (recommended for training) # Train the model results = model.train(data="imagenet", epochs=100, imgsz=224)For more in-depth training instructions, refer to our Training page.
Ultralytics YOLO26 pretrained classification models offer a strong balance of speed and accuracy. For example, the YOLO26n-cls model, with a top-1 accuracy of 71.4% and a top-5 accuracy of 90.1%, is optimized for real-time applications. Pretrained models reduce the computational resources required for training from scratch and accelerate development cycles.
The annual ImageNet Large Scale Visual Recognition Challenge (ILSVRC) drove advances in computer vision by providing a competitive platform for evaluating algorithms on a large-scale, standardized dataset. Its consistent evaluation metrics fostered innovation in image classification, object detection, and image segmentation, continuously pushing the boundaries of deep learning and computer vision.
Comments8
Ask a question, share your results, or help someone else.
Jie Liuhow to reproduce the result of Pretrained Models? Please give me the command
Paula DerrengerUltralytics(edited)@keeper-jie hi there!
To reproduce the pretrained classification results on ImageNet, train from the model YAML (not the
.ptweights) so the model starts from random initialization:Using Python:
from ultralytics import YOLO # Build a model from its YAML configuration (replace 'yolo26n-cls.yaml' with other sizes like 'yolo26s-cls.yaml') model = YOLO("yolo26n-cls.yaml") # Train the model on ImageNet results = model.train(data="imagenet", epochs=100, imgsz=224)Using CLI:
yolo train data=imagenet model=yolo26n-cls.yaml epochs=100 imgsz=224These commands train on the ImageNet dataset for 100 epochs at 224x224. You can adjust the
epochsandimgszparameters as needed. For more details, refer to the Ultralytics documentation on ImageNet.If you encounter any issues, please ensure you are using the latest version of the Ultralytics package, and provide a minimum reproducible example. Happy training! 🚀
Jie Liuplease show me the command to use yolov8 yaml file to reproduce the table result like below without pretrain model:
Model size(pixels) acc-top1 acc-top5 Speed-CPU ONNX(ms) Speed-A100 TensorRT(ms) params(M) FLOPs(B) at 640 YOLOv8n-cls 224 69.0 88.3 12.9 0.31 2.7 4.3
Paula DerrengerUltralytics(edited)Hi @keeper-jie,
To reproduce the results of the YOLO26 classification models on the ImageNet dataset without using pretrained weights, you can follow the steps below. This will allow you to train the models from scratch and evaluate their performance.
Using Python:
from ultralytics import YOLO # Load a model configuration without pretrained weights model = YOLO("yolo26n-cls.yaml") # You can replace 'yolo26n-cls.yaml' with other model variants like 'yolo26s-cls.yaml', 'yolo26m-cls.yaml', etc. # Train the model on ImageNet results = model.train(data="imagenet", epochs=100, imgsz=224)Using CLI:
# Start training from scratch using a *.yaml model configuration yolo train data=imagenet model=yolo26n-cls.yaml epochs=100 imgsz=224These commands will initiate training on the ImageNet dataset for 100 epochs with an image size of 224x224 pixels. You can adjust the
epochsandimgszparameters as needed.Important Notes:
- Ensure you have the latest version of the Ultralytics package installed.
- Providing a minimum reproducible example can be very helpful if you encounter any issues. You can find more information on how to create one here.
For more detailed information and additional arguments you can use, please refer to the Ultralytics documentation on ImageNet.
If you have any further questions or run into any issues, feel free to ask. Happy training! 🚀
Jie LiuI train the model with
!yolo train data=/dataset/imagenet model=yolov8x-cls.yaml epochs=100 imgsz=224 batch=476*8 device=0,1,2,3,4,5,6,7, but the result is only 0.631 on top1 acc, please help me check it. Log:100 epochs completed in 7.923 hours. Optimizer stripped from /usr/src/ultralytics/runs/classify/train4/weights/last.pt, 115.1MB Optimizer stripped from /usr/src/ultralytics/runs/classify/train4/weights/best.pt, 115.1MB Validating /usr/src/ultralytics/runs/classify/train4/weights/best.pt... Ultralytics YOLOv8.1.8 🚀 Python-3.10.13 torch-2.1.0 CUDA:0 (NVIDIA L20, 45596MiB) YOLOv8x-cls summary (fused): 133 layers, 57404200 parameters, 0 gradients, 154.8 GFLOPs [34m[1mtrain:[0m /dataset/imagenet/train... found 1281167 images in 1000 classes ✅ [34m[1mval:[0m /dataset/imagenet/val... found 50000 images in 1000 classes ✅ [34m[1mtest:[0m None... classes top1_acc top5_acc: 100%|██████████| 53/53 [00:31<00:0 all 0.631 0.858
Paula DerrengerUltralytics(edited)Hi @keeper-jie,
Thank you for sharing the details of your training process and results. To better assist you, it would be helpful to have a minimum reproducible example. This will allow us to diagnose the issue more effectively. You can find guidelines on how to create one here: Minimum Reproducible Example.
In the meantime, here are a few suggestions to help troubleshoot and potentially improve your model's performance:
-
Verify Dataset Integrity: Ensure that the ImageNet dataset is correctly formatted and all images are accessible. Sometimes, missing or corrupted images can affect training results.
-
Hyperparameter Tuning: Experiment with different hyperparameters such as learning rate, batch size, and optimizer settings. The default settings might not always yield the best results for every dataset.
-
Data Augmentation: Implementing data augmentation techniques can help improve model generalization. Techniques like random cropping, flipping, and color jittering can be beneficial.
-
Learning Rate Scheduler: Using a learning rate scheduler can help in adjusting the learning rate during training, which might improve convergence.
-
Regularization Techniques: Techniques such as dropout and weight decay can help in preventing overfitting and improving model performance.
-
Latest Version: Ensure you are using the latest version of the Ultralytics package. Sometimes, updates include performance improvements and bug fixes.
Here is an example command to train the model from scratch using the YOLO26 YAML configuration:
Using Python:
from ultralytics import YOLO # Load a model configuration without pretrained weights model = YOLO("yolo26x-cls.yaml") # Train the model on ImageNet results = model.train(data="imagenet", epochs=100, imgsz=224)Using CLI:
# Start training from scratch using a *.yaml model configuration yolo train data=imagenet model=yolo26x-cls.yaml epochs=100 imgsz=224If the issue persists, please provide more details or a reproducible example, and we will be happy to assist you further. Thank you for your patience and cooperation!
-
Jie LiuBug description:
use 8 L20 GPU can not reproduce yolov8x-cls top1 acc.MRE:
yolo train data=imagenet model=yolov8x-cls.yaml epochs=100 imgsz=224 batch=476*8 device=0,1,2,3,4,5,6,7Result :
100 epochs completed in 7.923 hours. Optimizer stripped from /usr/src/ultralytics/runs/classify/train4/weights/last.pt, 115.1MB Optimizer stripped from /usr/src/ultralytics/runs/classify/train4/weights/best.pt, 115.1MB Validating /usr/src/ultralytics/runs/classify/train4/weights/best.pt... Ultralytics YOLOv8.1.8 🚀 Python-3.10.13 torch-2.1.0 CUDA:0 (NVIDIA L20, 45596MiB) YOLOv8x-cls summary (fused): 133 layers, 57404200 parameters, 0 gradients, 154.8 GFLOPs [34m[1mtrain:[0m /dataset/imagenet/train... found 1281167 images in 1000 classes ✅ [34m[1mval:[0m /dataset/imagenet/val... found 50000 images in 1000 classes ✅ [34m[1mtest:[0m None... classes top1_acc top5_acc: 100%|██████████| 53/53 [00:31<00:0 all 0.631 0.858Dependencies(yolo checks):
Ultralytics YOLOv8.1.8 🚀 Python-3.10.13 torch-2.1.0 CUDA:0 (NVIDIA L20, 45596MiB) Setup complete ✅ (128 CPUs, 503.5 GB RAM, 860.1/7096.0 GB disk) OS Linux-5.15.0-94-generic-x86_64-with-glibc2.31 Environment Linux Python 3.10.13 Install git RAM 503.52 GB CPU Intel Xeon Gold 6458Q CUDA 12.1 matplotlib ✅ 3.8.2>=3.3.0 numpy ✅ 1.23.5>=1.22.2 opencv-python ✅ 4.9.0.80>=4.6.0 pillow ✅ 10.0.1>=7.1.2 pyyaml ✅ 6.0>=5.3.1 requests ✅ 2.31.0>=2.23.0 scipy ✅ 1.12.0>=1.4.1 torch ✅ 2.1.0>=1.8.0 torchvision ✅ 0.16.0>=0.9.0 tqdm ✅ 4.65.0>=4.64.0 psutil ✅ 5.9.0 py-cpuinfo ✅ 9.0.0 thop ✅ 0.1.1-2209072238>=0.1.1 pandas ✅ 2.2.0>=1.1.4 seaborn ✅ 0.13.2>=0.11.0Addition train config:
task: classify mode: train model: yolov8x-cls.yaml data: /dataset/imagenet epochs: 100 time: null patience: 50 batch: 3808 imgsz: 224 save: true save_period: -1 cache: false device: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 workers: 8 project: null name: train4 exist_ok: false pretrained: true optimizer: auto verbose: true seed: 0 deterministic: true single_cls: false rect: false cos_lr: false close_mosaic: 10 resume: false amp: true fraction: 1.0 profile: false freeze: null multi_scale: false overlap_mask: true mask_ratio: 4 dropout: 0.0 val: true split: val save_json: false save_hybrid: false conf: null iou: 0.7 max_det: 300 half: false dnn: false plots: true source: null vid_stride: 1 stream_buffer: false visualize: false augment: false agnostic_nms: false classes: null retina_masks: false embed: null show: false save_frames: false save_txt: false save_conf: false save_crop: false show_labels: true show_conf: true show_boxes: true line_width: null format: torchscript keras: false optimize: false int8: false dynamic: false simplify: false opset: null workspace: 4 nms: false lr0: 0.01 lrf: 0.01 momentum: 0.937 weight_decay: 0.0005 warmup_epochs: 3.0 warmup_momentum: 0.8 warmup_bias_lr: 0.1 box: 7.5 cls: 0.5 dfl: 1.5 pose: 12.0 kobj: 1.0 label_smoothing: 0.0 nbs: 64 hsv_h: 0.015 hsv_s: 0.7 hsv_v: 0.4 degrees: 0.0 translate: 0.1 scale: 0.5 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.5 mosaic: 1.0 mixup: 0.0 copy_paste: 0.0 auto_augment: randaugment erasing: 0.4 crop_fraction: 1.0 cfg: null tracker: botsort.yaml save_dir: /usr/src/ultralytics/runs/classify/train4I use yolov8 docker with command
docker pull ultralytics/ultralytics:8.1.8
Paula DerrengerUltralytics(edited)Hi @keeper-jie,
Thank you for providing detailed information about your training process and results. It's great to see that you're using the YOLOv8 classification model on the ImageNet dataset. Let's work together to troubleshoot and improve your model's performance.
Steps to Troubleshoot and Improve Performance:
-
Verify Dataset Integrity: Ensure that the ImageNet dataset is correctly formatted and all images are accessible. Sometimes, missing or corrupted images can affect training results.
-
Hyperparameter Tuning: Experiment with different hyperparameters such as learning rate, batch size, and optimizer settings. The default settings might not always yield the best results for every dataset.
-
Data Augmentation: Implementing data augmentation techniques can help improve model generalization. Techniques like random cropping, flipping, and color jittering can be beneficial.
-
Learning Rate Scheduler: Using a learning rate scheduler can help in adjusting the learning rate during training, which might improve convergence.
-
Regularization Techniques: Techniques such as dropout and weight decay can help in preventing overfitting and improving model performance.
-
Latest Version: Ensure you are using the latest version of the Ultralytics package. Sometimes, updates include performance improvements and bug fixes.
Example Command to Train from Scratch:
Here is an example command to train the model from scratch using the YOLO26 YAML configuration:
Using Python:
from ultralytics import YOLO # Load a model configuration without pretrained weights model = YOLO("yolo26x-cls.yaml") # Train the model on ImageNet results = model.train(data="imagenet", epochs=100, imgsz=224)Using CLI:
# Start training from scratch using a *.yaml model configuration yolo train data=imagenet model=yolo26x-cls.yaml epochs=100 imgsz=224Additional Tips:
- Check for Overfitting: Monitor the training and validation loss. If the training loss is significantly lower than the validation loss, your model might be overfitting.
- Use Mixed Precision Training: Enabling Automatic Mixed Precision (AMP) can speed up training and reduce memory usage.
Minimum Reproducible Example:
If the issue persists, please provide a minimum reproducible example. This will help us diagnose the issue more effectively. You can find guidelines on how to create one here: Minimum Reproducible Example.
If you have any further questions or run into any issues, feel free to ask. Happy training! 🚀
-