student/CUB_birds_200_2011
收藏Hugging Face2022-04-18 更新2024-03-04 收录
下载链接:
https://hf-mirror.com/datasets/student/CUB_birds_200_2011
下载链接
链接失效反馈官方服务:
资源简介:
CUB200-2011数据集介绍:
该数据集由加州理工学院再2010年提出的细粒度数据集,也是目前细粒度分类识别研究的基准图像数据集。
该数据集共有11788张鸟类图像,包含200类鸟类子类,其中训练数据集有5994张图像,测试集有5794张图像,每张图像均提供了图像类标记信息,图像中鸟的bounding box,鸟的关键part信息,以及鸟类的属性信息,数据集如下图所示。
下载的数据集中,包含了如下文件:
bounding_boxes.txt;classes.txt;image_class_labels.txt; images.txt; train_test_split.txt.
其中,bounding_boxes.txt为图像中鸟类的边界框信息;classes.txt为鸟类的类别信息,共有200类; image_class_labels.txt为图像标签和所属类别标签信息;images.txt为图像的标签和图像路径信息;train_test_split.txt为训练集和测试集划分。
本博客主要是根据train_test_split.txt文件和images.txt文件将原始下载的CUB200-2011数据集划分为训练集和测试集。在深度学习Pytorch框架下采用ImageFolder和DataLoader读取数据集较为方便。相关的python代码如下:
(1) CUB200-2011训练集和测试集划分代码
# *_*coding: utf-8 *_*
# author --liming--
"""
读取images.txt文件,获得每个图像的标签
读取train_test_split.txt文件,获取每个图像的train, test标签.其中1为训练,0为测试.
"""
import os
import shutil
import numpy as np
import config
import time
time_start = time.time()
# 文件路径
path_images = config.path + 'images.txt'
path_split = config.path + 'train_test_split.txt'
trian_save_path = config.path + 'dataset/train/'
test_save_path = config.path + 'dataset/test/'
# 读取images.txt文件
images = []
with open(path_images,'r') as f:
for line in f:
images.append(list(line.strip('\n').split(',')))
# 读取train_test_split.txt文件
split = []
with open(path_split, 'r') as f_:
for line in f_:
split.append(list(line.strip('\n').split(',')))
# 划分
num = len(images) # 图像的总个数
for k in range(num):
file_name = images[k][0].split(' ')[1].split('/')[0]
aaa = int(split[k][0][-1])
if int(split[k][0][-1]) == 1: # 划分到训练集
#判断文件夹是否存在
if os.path.isdir(trian_save_path + file_name):
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], trian_save_path+file_name+'/'+images[k][0].split(' ')[1].split('/')[1])
else:
os.makedirs(trian_save_path + file_name)
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], trian_save_path + file_name + '/' + images[k][0].split(' ')[1].split('/')[1])
print('%s处理完毕!' % images[k][0].split(' ')[1].split('/')[1])
else:
#判断文件夹是否存在
if os.path.isdir(test_save_path + file_name):
aaaa = config.path + 'images/' + images[k][0].split(' ')[1]
bbbb = test_save_path+file_name+'/'+images[k][0].split(' ')[1]
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], test_save_path+file_name+'/'+images[k][0].split(' ')[1].split('/')[1])
else:
os.makedirs(test_save_path + file_name)
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], test_save_path + file_name + '/' + images[k][0].split(' ')[1].split('/')[1])
print('%s处理完毕!' % images[k][0].split(' ')[1].split('/')[1])
time_end = time.time()
print('CUB200训练集和测试集划分完毕, 耗时%s!!' % (time_end - time_start))
config文件
# *_*coding: utf-8 *_*
# author --liming--
path = '/media/lm/C3F680DFF08EB695/细粒度数据集/birds/CUB200/CUB_200_2011/'
ROOT_TRAIN = path + 'images/train/'
ROOT_TEST = path + 'images/test/'
BATCH_SIZE = 16
(2) 利用Pytorch方式读取数据
# *_*coding: utf-8 *_*
# author --liming--
"""
用于已下载数据集的转换,便于pytorch的读取
"""
import torch
import torchvision
import config
from torchvision import datasets, transforms
data_transform = transforms.Compose([
transforms.Resize(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
def train_data_load():
# 训练集
root_train = config.ROOT_TRAIN
train_dataset = torchvision.datasets.ImageFolder(root_train,
transform=data_transform)
CLASS = train_dataset.class_to_idx
print('训练数据label与文件名的关系:', CLASS)
train_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=config.BATCH_SIZE,
shuffle=True)
return CLASS, train_loader
def test_data_load():
# 测试集
root_test = config.ROOT_TEST
test_dataset = torchvision.datasets.ImageFolder(root_test,
transform=data_transform)
CLASS = test_dataset.class_to_idx
print('测试数据label与文件名的关系:',CLASS)
test_loader = torch.utils.data.DataLoader(test_dataset,
batch_size=config.BATCH_SIZE,
shuffle=True)
return CLASS, test_loader
if __name__ == '__main___':
train_data_load()
test_data_load()
CUB200-2011数据集介绍:
该数据集是加州理工学院于2010年提出的细粒度视觉数据集,亦是当前细粒度分类识别研究领域的基准图像数据集。
该数据集总计包含11788张鸟类图像,涵盖200个鸟类子类。其中训练集含5994张图像,测试集含5794张图像。每张图像均附带类别标签、鸟类边界框(bounding box)、鸟类关键部件标注以及鸟类属性信息,数据集示例如下图所示。
下载得到的原始数据集包含以下文件:bounding_boxes.txt、classes.txt、image_class_labels.txt、images.txt及train_test_split.txt。
其中,bounding_boxes.txt存储图像中鸟类的边界框标注信息;classes.txt记录鸟类类别信息,共计200个类别;image_class_labels.txt包含图像标签与对应类别标签的映射关系;images.txt存储图像标签与图像路径的对应信息;train_test_split.txt用于划分训练集与测试集。
本博文主要基于train_test_split.txt与images.txt文件,对原始下载的CUB200-2011数据集进行训练集与测试集划分。在深度学习框架PyTorch中,使用ImageFolder与DataLoader读取数据集较为便捷,相关Python代码如下:
(1) CUB200-2011训练集和测试集划分代码
# *_*coding: utf-8 *_*
# author --liming--
"""
读取images.txt文件,获得每个图像的标签
读取train_test_split.txt文件,获取每个图像的train, test标签.其中1为训练,0为测试.
"""
import os
import shutil
import numpy as np
import config
import time
time_start = time.time()
# 文件路径
path_images = config.path + 'images.txt'
path_split = config.path + 'train_test_split.txt'
trian_save_path = config.path + 'dataset/train/'
test_save_path = config.path + 'dataset/test/'
# 读取images.txt文件
images = []
with open(path_images,'r') as f:
for line in f:
images.append(list(line.strip('
').split(',')))
# 读取train_test_split.txt文件
split = []
with open(path_split, 'r') as f_:
for line in f_:
split.append(list(line.strip('
').split(',')))
# 划分
num = len(images) # 图像的总个数
for k in range(num):
file_name = images[k][0].split(' ')[1].split('/')[0]
aaa = int(split[k][0][-1])
if int(split[k][0][-1]) == 1: # 划分到训练集
#判断文件夹是否存在
if os.path.isdir(trian_save_path + file_name):
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], trian_save_path+file_name+'/'+images[k][0].split(' ')[1].split('/')[1])
else:
os.makedirs(trian_save_path + file_name)
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], trian_save_path + file_name + '/' + images[k][0].split(' ')[1].split('/')[1])
print('%s处理完毕!' % images[k][0].split(' ')[1].split('/')[1])
else:
#判断文件夹是否存在
if os.path.isdir(test_save_path + file_name):
aaaa = config.path + 'images/' + images[k][0].split(' ')[1]
bbbb = test_save_path+file_name+'/'+images[k][0].split(' ')[1]
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], test_save_path+file_name+'/'+images[k][0].split(' ')[1].split('/')[1])
else:
os.makedirs(test_save_path + file_name)
shutil.copy(config.path + 'images/' + images[k][0].split(' ')[1], test_save_path + file_name + '/' + images[k][0].split(' ')[1].split('/')[1])
print('%s处理完毕!' % images[k][0].split(' ')[1].split('/')[1])
time_end = time.time()
print('CUB200训练集和测试集划分完毕, 耗时%s!!' % (time_end - time_start))
config文件
# *_*coding: utf-8 *_*
# author --liming--
path = '/media/lm/C3F680DFF08EB695/细粒度数据集/birds/CUB200/CUB_200_2011/'
ROOT_TRAIN = path + 'images/train/'
ROOT_TEST = path + 'images/test/'
BATCH_SIZE = 16
(2) 利用PyTorch方式读取数据
# *_*coding: utf-8 *_*
# author --liming--
"""
用于已下载数据集的转换,便于pytorch的读取
"""
import torch
import torchvision
import config
from torchvision import datasets, transforms
data_transform = transforms.Compose([
transforms.Resize(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.225, 0.225])
])
def train_data_load():
# 训练集
root_train = config.ROOT_TRAIN
train_dataset = torchvision.datasets.ImageFolder(root_train,
transform=data_transform)
CLASS = train_dataset.class_to_idx
print('训练数据label与文件名的关系:', CLASS)
train_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=config.BATCH_SIZE,
shuffle=True)
return CLASS, train_loader
def test_data_load():
# 测试集
root_test = config.ROOT_TEST
test_dataset = torchvision.datasets.ImageFolder(root_test,
transform=data_transform)
CLASS = test_dataset.class_to_idx
print('测试数据label与文件名的关系:',CLASS)
test_loader = torch.utils.data.DataLoader(test_dataset,
batch_size=config.BATCH_SIZE,
shuffle=True)
return CLASS, test_loader
if __name__ == '__main___':
train_data_load()
test_data_load()
提供机构:
student
原始信息汇总
CUB200-2011数据集概述
数据集基本信息
- 发布机构:加州理工学院
- 发布时间:2010年
- 数据集大小:11788张鸟类图像
- 类别数:200类鸟类子类
- 数据划分:训练集包含5994张图像,测试集包含5794张图像
- 图像信息:每张图像均提供了图像类标记信息、鸟的bounding box、鸟的关键part信息及鸟类的属性信息
数据集文件组成
- bounding_boxes.txt:图像中鸟类的边界框信息
- classes.txt:鸟类的类别信息(共200类)
- image_class_labels.txt:图像标签和所属类别标签信息
- images.txt:图像的标签和图像路径信息
- train_test_split.txt:训练集和测试集划分信息
数据集处理与读取
- 数据集划分:通过
train_test_split.txt和images.txt文件,使用Python代码将数据集划分为训练集和测试集。 - 数据读取:在Pytorch框架下,使用
ImageFolder和DataLoader读取数据集,通过定义数据转换(如transforms.Compose)来预处理图像数据。
数据集使用示例
- 训练集和测试集划分代码:提供了一个Python脚本,用于根据
train_test_split.txt和images.txt文件自动划分数据集。 - Pytorch读取数据:展示了如何使用Pytorch的
ImageFolder和DataLoader来加载和处理数据集,包括数据转换和批量加载。
搜集汇总
数据集介绍

构建方式
CUB200-2011数据集,作为细粒度分类识别研究的基准,由加州理工学院于2010年构建。该数据集通过精心收集与标注,包含了11788张鸟类图像,划分为200个细粒度的鸟类子类别,其中训练集与测试集分别有5994张和5794张图像。每张图像均伴以详细的类标记、边界框、关键部位及属性信息,为细粒度图像识别研究提供了丰富的数据资源。
特点
该数据集显著的特点在于其细粒度分类的深度与广度,不仅类别众多,且每个类别都有详尽的图像特征信息。其标注信息的全面性,为细粒度图像识别与理解提供了重要支撑。此外,数据集的平衡性良好,各类别样本分布均匀,有利于模型的泛化与评估。
使用方法
使用该数据集时,首先需根据train_test_split.txt文件和images.txt文件将数据集划分为训练集与测试集。在深度学习框架Pytorch中,可通过ImageFolder和DataLoader方便地读取数据集。数据加载前,需进行适当的图像预处理,如调整大小、转换为张量、标准化等,以适应模型输入的要求。
背景与挑战
背景概述
CUB200-2011数据集,作为细粒度图像分类领域的重要基准,由加州理工学院于2010年提出。该数据集汇集了11788张鸟类图像,涵盖200个鸟类子类,旨在促进对鸟类细小特征识别的研究。数据集的构建不仅提供了丰富的图像资源,还附有详尽的图像类标记、边界框、关键部位及属性信息,极大地推动了相关领域的学术研究。CUB200-2011数据集凭借其独特的贡献,对细粒度图像分类领域产生了深远的影响。
当前挑战
在构建CUB200-2011数据集的过程中,研究人员面临了诸多挑战。首先,如何准确标注细粒度的图像特征,如鸟类的具体部位,是一大难题。其次,数据集的构建需要解决图像分类的泛化能力,以确保模型能在不同条件下准确识别鸟类。此外,数据集的规模和多样性也是挑战之一,既要确保数据的丰富性,又要避免过度拟合。在应用层面,如何高效地利用该数据集进行模型训练和测试,以及如何优化数据加载流程,也是研究人员必须考虑的问题。
常用场景
经典使用场景
在细粒度图像识别领域,CUB200-2011数据集的经典使用场景是对鸟类图像进行精确的分类与识别,尤其是区分不同鸟类的细微特征。该数据集提供了丰富的图像标注信息,包括边界框、关键部位和属性信息,为深度学习模型的训练和评估提供了重要支撑。
实际应用
在实际应用中,CUB200-2011数据集的应用场景包括生物多样性监测、生态学研究以及智能鸟巢监测系统等。通过该数据集训练的模型能够辅助研究人员对野外鸟类进行自动识别,从而提高生态研究的效率和准确性。
衍生相关工作
基于CUB200-2011数据集,学术界衍生出了大量相关工作,包括但不限于改进的图像识别算法、特征提取方法以及数据增强技术。这些研究进一步推动了细粒度图像识别技术的发展,并在计算机视觉领域产生了广泛的影响。
以上内容由遇见数据集搜集并总结生成



