DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

1

StanfordCars in PyTorch

Buy Me a Coffee

*Memos:

StanfordCars() can use Stanford Cars dataset as shown below:

*Memos:

  • The 1st argument is root(Required-Type:str or pathlib.Path). *An absolute or relative path is possible.
  • The 2nd argument is split(Optional-Default:"train"-Type:str). *"train"(8,144 images) or "test"(8,041 images) can be set to it.
  • The 3rd argument is transform(Optional-Default:None-Type:callable).
  • The 4th argument is target_transform(Optional-Default:None-Type:callable).
  • The 5th argument is download(Optional-Default:False-Type:bool): *Memos:
    • Keep it False because if it's True, error occurs because the original URL is broken.
    • So, you need to manually download and extract archive.zip from here, archive.zip from here and car_devkit.tgz to data/stanford_cars/ as shown below: *Memos:
      • cars_test_annos_withlabels (1).mat needs to be renamed to cars_test_annos_withlabels.mat.
      • cars_annos.mat and cars_annos (2).mat isn't needed and there are some duplicated files as well.
      • You can also see the instruction.
data
 └-stanford_cars
    |-cars_test_annos_withlabels.mat
    |-cars_test
    |  |-00001.jpg
    |  |-00002.jpg
    |  |-00003.jpg
    |  ...
    |-cars_train
    |  |-00001.jpg
    |  |-00002.jpg
    |  |-00003.jpg
    |  ...
    └-devkit
       |-cars_meta.mat
       |-cars_test_annos.mat
       |-cars_train_annos.mat
       |-eval_train.m
       |-README.txt
       └-train_perfect_preds.txt
Enter fullscreen mode Exit fullscreen mode
from torchvision.datasets import StanfordCars

train_data = StanfordCars(
    root="data"
)

train_data = StanfordCars(
    root="data",
    split="train",
    transform=None,
    target_transform=None,
    download=False
)

test_data = StanfordCars(
    root="data",
    split="test"
)

len(train_data), len(test_data)
# (8144, 8041)

train_data
# Dataset StanfordCars
#     Number of datapoints: 8144
#     Root location: data

train_data.root
# 'data'

train_data._split
# 'train'

print(train_data.transform)
# None

print(train_data.target_transform)
# None

train_data.download
# <bound method StanfordCars.download of Dataset StanfordCars
#     Number of datapoints: 8144
#     Root location: data>

len(train_data.classes), train_data.classes
# (196,
#  ['AM General Hummer SUV 2000', 'Acura RL Sedan 2012', 'Acura TL Sedan 2012',
#   'Acura TL Type-S 2008', ..., 'Volvo 240 Sedan 1993',
#   'Volvo XC90 SUV 2007', 'smart fortwo Convertible 2012'])

train_data[0]
# (<PIL.Image.Image image mode=RGB size=600x400>, 13)

train_data[1]
# (<PIL.Image.Image image mode=RGB size=900x675>, 2)

train_data[2]
# (<PIL.Image.Image image mode=RGB size=640x480>, 90)

train_data[3]
# (<PIL.Image.Image image mode=RGB size=2100x1386>, 133)

train_data[4]
# (<PIL.Image.Image image mode=RGB size=144x108>, 105)

import matplotlib.pyplot as plt

def show_images(data, main_title=None):
    plt.figure(figsize=(12, 5))
    plt.suptitle(t=main_title, y=1.0, fontsize=14)
    for i, (im, lab) in zip(range(1, 11), data):
        plt.subplot(2, 5, i)
        plt.imshow(X=im)
        plt.title(label=lab)
    plt.tight_layout()
    plt.show()

show_images(data=train_data, main_title="train_data")
show_images(data=test_data, main_title="test_data")
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up