cars196数据集按照类别Label进行划分

本文介绍如何将Stanford汽车数据集的16185张图片按类别Label进行归类,利用Python代码读取'cars_annos.mat'文件中的图片名称和类别信息,创建相应目录并移动图片至对应类别下。
部署运行你感兴趣的模型镜像

数据集下载地址:
https://ai.stanford.edu/~jkrause/cars/car_dataset.html
数据集中一共包含16185张不同型号的汽车图片,当用于细分类任务时,训练集中有8144张图片,测试集为8041张图片。当用于度量学习任务时,通常前98类作为训练集,后98类作为测试集。

需求: 将数据集按照类别Label进行归类,方便后续使用。

官网中有两个版本的数据集,旧版本中没有测试集的标注,根据我们的需求,我们要下载的是新版本(Update那一行)的图片和标注。在这里插入图片描述
待移动的图片位于/car_ims/
在这里插入图片描述
图片的label等属性位于cars_annos.mat文件中。

想要实现的效果为根据图片Label对数据集中的图片进行归类:
在这里插入图片描述

代码:

import scipy.io
import os
import re
import shutil

source = './'
target = './cars196/'
data = scipy.io.loadmat('cars_annos.mat')
class_names = data['class_names']
annotations = data['annotations']
#print(annotations)

for i in range(annotations.shape[1]):
    name = str(annotations[0, i][0])[2:-2]#提取出图片名字
    image_path = os.path.join(source, name)
    print(image_path)
    clas = int(annotations[0, i][5])#提取出图片的类别属性
    class_name = str(class_names[0, clas-1][0]).replace(' ', '_')
    class_name = class_name.replace('/', '')#避免路径出错
    target_path = os.path.join(target, class_name)
    if not os.path.isdir(target_path):
        os.mkdir(target_path)
    print(target_path)
    shutil.copy(image_path, target_path)

# print(class_names.shape)
# print(class_names[0, 0][0])
# print(class_names[0, 0])
#
#
# for j in range(class_names.shape[1]):
#     class_name = str(class_names[0, j][0]).replace(' ', '_')
#     print(class_name)

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

用于开发,评估和比较学习方法的数据收集 066c695f141f27ea881df8af5a827c99.jpg 7fe25c5c90c4f447fe3fa10adf4232cd.jpg 6739b35e5a470fdb37862fb2bc5251ef.jpg c1adb1337eba00e584e3704af99d291c.jpg cf042dd7addc3894b78063b90016ec03.jpg 1b9471eefb6f3951f127beb69ef5a584.jpg fb1e25b446c8174cc443c366a1d0e38b.jpg 5bbe28f7cf6ee6453caad79db64ba7c0.jpg 5d7514af404266c3f92efcee8662f640.jpg 9e37ae8bf11600a30afcd592d73a4be1.jpg 63f9f7dc8298317284bf7dbf2074b3ba.jpg 356d8576837338e82cf363d2dc7747c0.jpg 45242c276cd516adb93561503a2f6ed7.jpg a67cad73fd03d2d5cef3a81bf78ed0a3.jpg b2de8a56b1fbbee32afbe72d823f8a5a.jpg eafaa5fd38df370046f8b185488e7fa5.jpg f81a39ee4b311be9eb5aac2ba1cbaffd.jpg 2aeb7856890c8dc0e0b311077d386690.jpg 2b96ccd24db32c2c47581afde8d42722.jpg 7a9027a09a9149fd901f97630a052b29.jpg 395e11b1214a0308f6a6e7834cebc379.jpg 508bc40d51bc31a77507595e528155e9.jpg 7457b846fc17229e61aea790bab3c88a.jpg b9ea06b2cdf8e72dca0f415d1525d7d5.jpg b52fbc88bc83acea1b0d374ccb460178.jpg b62c7d59cd74dc1bc2eaa1b951cfd0a7.jpg f550965cf9cc6f07184923a32d728e94.jpg ff9974e9177a989100fae4b8c505cad5.jpg 7be124ec367694c948c57d1e09181775.jpg 050aab9a8a91dca8ed1e518ebf42ee0d.jpg 253df8c5a6ed19d8dcf26ea58c40094d.jpg 802716d5a05096b02621ad4eabf57812.jpg 62352815acbebb5bc9eebaf534d8f434.jpg a2fec0c55e7c73d27fac134b9074846e.jpg b8ebfa32f6ba5c7c50b63bc1c0108361.jpg b00473a9f517bbfc5923c95288b40ff2.jpg bec04a0e1662c9c23365eb3a9e12a1d7.jpg cd0e83983e36613ec5b154d2d6ddb0d1.jpg d6086634ce334fe82400a173f0028306.jpg e7299b9187f09e190127873fb0725e1c.jpg f4f7ec6332cab9c706e12fa8aaed4a6c.jpg ff1778ed14e5ac5be5217d410841750d.jpg 1fa59ad4144c5f668e92b8ab6a0043f8.jpg 3b6365d6ab144b660c0b477442782fa5.jpg 6f93c871d9b1469bec963639ea58fe82.jpg 84c8aadbabbeb753042593faffa4e376.jpg 90d9a803b25a78b4dc2dcdf4c85a4b70.jpg 386f1418e664eab461ea243e85c19d3c.jpg 627fcb8c133d1e30c067d31a92a79f02.jpg 766f0049a40eea217328d2975312d3e0.jpg 8189cbaa92299ea536be3ad23ddf1d00.jpg 0967287cbb2b14ed9dc1ec6a1a53b21d.jpg 093
<think>好的,用户需要关于StanfordCars数据集的信息,特别是下载和使用方法。首先,我得确认用户的需求,他们可能在进行机器学习或深度学习项目,需要了解如何获取和处理这个数据集。根据提供的引用内容,用户提到的三个引用都是关于StanfordCars数据集的使用和处理,特别是如何下载、分类训练集和测试集,以及数据处理的代码。 首先,我应该先整理这些引用的信息。引用[1]提到了优快云博客文章,详细介绍了下载和使用方法,这可能包括数据集的官方下载链接和步骤。引用[2]讨论了数据集的形式和处理代码,这对用户处理数据可能有帮助。引用[3]则提到用户自己编写的代码,用于分类测试集和训练集,因为网上找到的版本可能没有预先分好类。 接下来,我需要将这些信息结构化,分步骤回答用户的问题。用户需要下载方法、数据结构和使用步骤。根据引用[1],下载可能需要通过Stanford官网或Kaggle,同时需要注意可能需要注册或申请权限。数据结构方面,引用[2]提到数据集分为训练集和测试集,每个图像有标注信息,比如车型、年份等。使用步骤包括数据下载、解压、处理代码应用,可能还需要划分数据集,如引用[3]中的代码所示。 然后,我需要确保回答符合系统级指令,比如正确使用LaTeX格式,但在这个问题中可能涉及数学公式较少,但如果有提到模型训练中的损失函数等,可能需要用行内公式。不过目前看来,主要信息是关于数据集的使用,所以可能不需要太多数学表达式,但还是要检查是否有必要的地方。 另外,用户要求生成相关问题,我需要考虑用户可能进一步的问题,比如数据预处理的具体方法、数据增强技巧,或者如何在特定框架(如PyTorch或TensorFlow)中加载数据集。此外,可能还会问到数据集的统计信息,如类别数量、图像尺寸分布等。 需要确保回答结构清晰,分步骤说明下载和使用方法,引用提供的资料,并在末尾添加相关问题。同时,引用标识要自然地添加在相关段落末尾,比如在提到下载步骤时引用[1],处理代码时引用[2]和[3]。 最后,检查是否符合中文回答的要求,避免使用Markdown格式,使用户看到的内容简洁明了。同时,确保LaTeX语法正确,尽管在这个回答中可能用不上,但如果有任何数学表达式出现,要正确格式化。</think>### Stanford Cars数据集下载及使用指南 #### 一、数据集下载步骤 1. **官方渠道** 访问Stanford Cars官网([链接](https://ai.stanford.edu/~jkrause/cars/car_dataset.html))直接下载压缩包,包含: - `cars_train.tgz`(训练集) - `cars_test.tgz`(测试集) - `car_devkit.tgz`(标注文件)[^1] 2. **第三方平台** 通过Kaggle搜索"Stanford Cars Dataset"获取已整理版本,支持直接在线加载或API下载。 --- #### 二、数据结构说明 - **图像文件**:共16,185张车辆图片(8,144训练集/8,041测试集) - **标注信息**: - 车辆类别196类,如`BMW M3 2012`) - 边界框坐标(格式:`xmin, ymin, xmax, ymax`) - 车辆部件掩膜(可选) - **元数据文件**: - `cars_meta.mat`:类别标签 - `cars_train_annos.mat`:训练集标注 - `cars_test_annos.mat`:测试集标注[^2] --- #### 三、使用流程示例(PyTorch) ```python import scipy.io as sio from PIL import Image # 加载标注文件 train_annos = sio.loadmat('devkit/cars_train_annos.mat') meta = sio.loadmat('devkit/cars_meta.mat') # 构建数据加载器 class CarsDataset(Dataset): def __init__(self, img_dir, annotations): self.img_dir = img_dir self.annotations = annotations def __getitem__(self, idx): img_name = f"{idx:05d}.jpg" # 图片命名格式为00001.jpg img_path = os.path.join(self.img_dir, img_name) image = Image.open(img_path) label = self.annotations['annotations'][0][idx][4] # 第5列为类别标签 return image, label[0][0] ``` --- #### 四、关键注意事项 1. **测试集标签处理** 官方测试集未直接提供标签,需通过`cars_test_annos_withlabels.mat`补充(需单独申请)[^3] 2. **数据增强建议** - 随机裁剪(尺寸不小于原图50%) - 颜色抖动(对比度±0.2,饱和度±0.2) - 标准化参数:`mean=[0.485, 0.456, 0.406]`, `std=[0.229, 0.224, 0.225]` ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值