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

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

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

数据集下载地址:
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)

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值