CIFAR-100数据集可视化图片

CIFAR数据集地址:http://www.cs.toronto.edu/~kriz/cifar.html

官方下载后的数据集文件是以byte形式存储的图像文件,如果我们想要可视化图片,则需要自行写一个脚本。
以下以CIFAR-100的测试集为例,它的文件名为test,从该文件中提取出10000张 32 × 32 32\times 32 32×32的图片,并保存每张图片的label到img_label.txt

import pickle as p
import numpy as np
from PIL import Image

def load_CIFAR_batch(filename):
    """ load single batch of cifar """
    with open(filename, 'rb')as f:
        datadict = p.load(f, encoding='bytes')
        # 以字典的形式取出数据
        X = datadict[b'data']
        Y = datadict[b'fine_labels']
        X = X.reshape(10000, 3, 32, 32)
        Y = np.array(Y)
        print(Y.shape)
        return X, Y


if __name__ == "__main__":
    imgX, imgY = load_CIFAR_batch("./data/cifar-100-python/test")
    with open('img_label.txt', 'a+') as f:
        for i in range(imgY.shape[0]):
            f.write('img'+str(i)+' '+str(imgY[i])+'\n')

    for i in range(imgX.shape[0]):
        imgs = imgX[i]
        img0 = imgs[0]
        img1 = imgs[1]
        img2 = imgs[2]
        i0 = Image.fromarray(img0)
        i1 = Image.fromarray(img1)
        i2 = Image.fromarray(img2)
        img = Image.merge("RGB",(i0,i1,i2))
        name = "img" + str(i)+".png"
        img.save("./pic1/"+name,"png")
    print("save successfully!")

生成的测试集图片:
在这里插入图片描述
img_label.txt的信息:

img0 49
img1 33
img2 72
...

要对应label的具体类别信息,其label的序号与类别名称的字典序是一致的,类别信息有如下:

beaver, dolphin, otter, seal, whale
aquarium fish, flatfish, ray, shark, trout
orchids, poppies, roses, sunflowers, tulips
bottles, bowls, cans, cups, plates
apples, mushrooms, oranges, pears, sweet peppers
clock, computer keyboard, lamp, telephone, television
bed, chair, couch, table, wardrobe
bee, beetle, butterfly, caterpillar, cockroach
bear, leopard, lion, tiger, wolf
bridge, castle, house, road, skyscraper
cloud, forest, mountain, plain, sea
camel, cattle, chimpanzee, elephant, kangaroo
fox, porcupine, possum, raccoon, skunk
crab, lobster, snail, spider, worm
baby, boy, girl, man, woman
crocodile, dinosaur, lizard, snake, turtle
hamster, mouse, rabbit, shrew, squirrel
maple, oak, palm, pine, willow
bicycle, bus, motorcycle, pickup truck, train
lawn-mower, rocket, streetcar, tank, tractor

将该信息保存到class.txt,对类别名称进行排序并对应label

class_ = []
with open('class.txt', 'r') as f:
    for line in f.readlines():
        sub_class = line.strip().split(',')
        print(sub_class)
        for cl in sub_class:
            class_.append(cl.strip())
class_.sort()
label_to_class = {}
for label, c in enumerate(class_):
    label_to_class[label] = c
with open('label_class.txt', 'w') as f:
    for label, c in enumerate(class_):
        label_to_class[label] = c
        f.write(str(label)+' '+str(c)+'\n')

得到label_class.txt:

0 apples
1 aquarium fish
2 baby
...

遍历CIFAR测试集,对输出对应每张图片的label和class

import PIL.Image as Image
import torch
from torchvision import transforms
import os

imgs_to_label = {}
with open('/home/ws/winycg/dataset/CIFAR-100-test-png/img_label.txt', 'r') as f:
    for line in f.readlines():
        img, label = line.split()[0], line.split()[1]
        imgs_to_label[img] = int(label)

label_to_class = {}
with open('label_class.txt', 'r') as f:
    for line in f.readlines():
        label, class_ = line.split()[0], line.split()[1]
        label_to_class[int(label)] = class_

test_root = 'pic1'
def transform_png(png_name):
    raw_image = Image.open(os.path.join(test_root, png_name))
    clsnet_image = transforms.Compose([
            transforms.ToTensor(),
            transforms.Normalize((0.5071, 0.4867, 0.4408), (0.2675, 0.2565, 0.2761)),
        ])(raw_image)
    clsnet_image = torch.unsqueeze(clsnet_image, 0).cpu()
    return clsnet_image

for img in imgs_to_label.keys():
    input = transform_png(img+'.png')
    label = imgs_to_label[img]
    classx = label_to_class[label]
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: CIFAR-100图片是一个被广泛用于图像识别和计算机视觉任务的数据集。该数据集共包含100个类别,每个类别有600张图片,总共有60000张彩色图像。每个图像的大小为32x32像素,分为训练集和测试集两部分。 CIFAR-100图片数据集中的图像类别非常多样化,包括动物、植物、物体、食物等多个领域。每个类别有600张图片,其中500张用于训练,100张用于测试。这样的设置可以有效地用于训练机器学习算法和评估它们的性能。 CIFAR-100图片数据集的广泛应用使得研究人员可以在图像分类、目标检测、图像分割等领域开展各种实验与研究。通过对CIFAR-100数据集的学习和分析,研究人员可以设计出更准确的分类器和目标检测算法,提高计算机对图像的理解能力。 此外,CIFAR-100数据集的特点也使得它成为很多机器学习算法的基准测试数据集。许多研究人员使用CIFAR-100数据集对他们的算法进行评估和比较,以确定算法的性能和效果。 总的来说,CIFAR-100图片是一个有着广泛应用价值的图像数据集,它促进了图像分类、目标检测和计算机视觉等领域的研究和发展。通过对CIFAR-100数据集的研究,我们可以更好地理解和应用计算机对图像的理解能力。 ### 回答2: CIFAR-100是一个广泛用于计算机视觉研究的图像数据集。它包含了100个类别的图像,每个类别都有600个图像样本。这些类别分为20个超类,每个超类包含5个小类。CIFAR-100中的图像是32x32像素大小的彩色图像。 CIFAR-100数据集用于培训和测试计算机视觉算法的性能。研究者可以利用CIFAR-100来开发和评估图像分类、目标检测和语义分割等任务的算法。 CIFAR-100的每个样本都有一个标签,用于指示图像所属的类别。这些类别包括动物、植物、交通工具和日常物品等。例如,动物类别中包含了鸟类、猫类、狗类等不同的动物。而植物类别则包含了不同的花朵和树木。 CIFAR-100的图像多样性丰富,涵盖了各种真实世界中的对象和场景。这些图像具有挑战性,因为它们的分辨率较低、噪声较高,并且存在一定的干扰。因此,研究者需要设计有效的算法来提取和利用这些图像中的特征,以便准确地识别和分类不同的对象。 总之,CIFAR-100是一个重要的图像数据集,用于推动计算机视觉领域的研究和进展。它提供了一个丰富的图像样本集合,可以帮助算法开发者更好地理解和解决真实世界中的图像识别和分类问题。 ### 回答3: CIFAR-100是一个包含100个类别的图像数据集。每个类别包含600张32x32的彩色图像,其中500张用于训练,100张用于测试。这些类别可以分为20个超类别,每个超类别包含5个类别。 CIFAR-100的图像包含各种各样的物体,动物和场景,例如飞机,汽车,鸟类,猫,鹿,狗,青蛙,马,船,卡车,蜜蜂,田野,森林,海滩等等。这些图像是真实世界的图像,因此对图像识别算法的性能和可靠性提出了挑战。 CIFAR-100的目标是为机器学习算法和计算机视觉模型提供一个用于图像分类的测试平台。通过使用CIFAR-100,研究人员可以评估不同算法和模型的性能,并进行模型训练和调优。此外,CIFAR-100还可以用于开展图像分析,特征提取,物体检测,目标跟踪等相关研究。 与CIFAR-10相比,CIFAR-100更加复杂,因为它涵盖了更多的类别和更多的超类别。因此,对CIFAR-100的图像分类要求更高的特征提取和模型设计能力。CIFAR-100也常常被用来作为图像分类算法的比较基准,例如卷积神经网络(CNN)。 总之,CIFAR-100是一个用于图像分类和计算机视觉研究的重要数据集,提供了一个多样化和挑战性的图像样本集合。它对于训练和评估不同的图像处理算法和模型非常有用,并且可以帮助研究人员推动计算机视觉领域的进展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值