Ultralytics YOLO27: Join the waitlist.
Get Started

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#

Modelsize
(pixels)
acc
top1
acc
top5
Speed
CPU ONNX
(ms)
Speed
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B) at 224
YOLO26n-cls22471.490.15.0 ± 0.31.1 ± 0.02.80.4
YOLO26s-cls22476.092.97.9 ± 0.21.3 ± 0.06.71.5
YOLO26m-cls22478.194.217.2 ± 0.42.0 ± 0.011.64.8
YOLO26l-cls22479.094.623.2 ± 0.32.8 ± 0.014.16.0
YOLO26x-cls22479.995.041.4 ± 0.93.8 ± 0.029.613.5

Key Features#

  • The Ultralytics imagenet dataset 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:

SplitImagesClasses
Train1,281,1671,000
Validation50,0001,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.

Download size

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.

Train Example
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:

ImageNet classification dataset sample images

Citations and Acknowledgments#

If you use the ImageNet dataset in your research or development work, please cite the following paper:

Citation
@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 imagenet dataset 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 data at imagenet:

    Train Example
    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)

    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.

  1. Jie LiuJie Liu

    how to reproduce the result of Pretrained Models? Please give me the command

    1. Paula DerrengerPaula DerrengerUltralytics(edited)

      @keeper-jie hi there!

      To reproduce the pretrained classification results on ImageNet, train from the model YAML (not the .pt weights) 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=224

      These commands train on the ImageNet dataset for 100 epochs at 224x224. You can adjust the epochs and imgsz parameters 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! 🚀

    2. Jie LiuJie Liu

      please 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
    3. Paula DerrengerPaula 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=224

      These commands will initiate training on the ImageNet dataset for 100 epochs with an image size of 224x224 pixels. You can adjust the epochs and imgsz parameters 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! 🚀

    4. Jie LiuJie Liu

      I 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
      train: /dataset/imagenet/train... found 1281167 images in 1000 classes ✅ 
      val: /dataset/imagenet/val... found 50000 images in 1000 classes ✅ 
      test: None...
                     classes   top1_acc   top5_acc: 100%|██████████| 53/53 [00:31<00:0
                         all      0.631      0.858
    5. Paula DerrengerPaula 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:

      1. 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.

      2. 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.

      3. Data Augmentation: Implementing data augmentation techniques can help improve model generalization. Techniques like random cropping, flipping, and color jittering can be beneficial.

      4. Learning Rate Scheduler: Using a learning rate scheduler can help in adjusting the learning rate during training, which might improve convergence.

      5. Regularization Techniques: Techniques such as dropout and weight decay can help in preventing overfitting and improving model performance.

      6. 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=224

      If 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!

    6. Jie LiuJie Liu

      Bug 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,7

      Result :

      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
      train: /dataset/imagenet/train... found 1281167 images in 1000 classes ✅ 
      val: /dataset/imagenet/val... found 50000 images in 1000 classes ✅ 
      test: None...
                     classes   top1_acc   top5_acc: 100%|██████████| 53/53 [00:31<00:0
                         all      0.631      0.858

      Dependencies(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.0

      Addition 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/train4

      I use yolov8 docker with command docker pull ultralytics/ultralytics:8.1.8

    7. Paula DerrengerPaula 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:
      1. 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.

      2. 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.

      3. Data Augmentation: Implementing data augmentation techniques can help improve model generalization. Techniques like random cropping, flipping, and color jittering can be beneficial.

      4. Learning Rate Scheduler: Using a learning rate scheduler can help in adjusting the learning rate during training, which might improve convergence.

      5. Regularization Techniques: Techniques such as dropout and weight decay can help in preventing overfitting and improving model performance.

      6. 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=224
      Additional 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! 🚀