您的位置:

Imagenet-1k——完整用于计算机视觉和深度学习的图像数据集

一、Imagenet1K有多少图片


import os

class_list = sorted(os.listdir('imagenet/imagenet_train/'))
img_num = 0

for classname in class_list:
    class_path = os.path.join('imagenet/imagenet_train/', classname)
    img_num += len(os.listdir(class_path))

print("总共有{}张图片".format(img_num))

Imagenet-1k数据集共包含1000个不同的物体类别,每个类别有1000张大小为224x224的彩色图像,因此总共有1000x1000=1000000张图片。这些图片是由Amazon Mechanical Turk的众包工作者标注的。对于每个图像,会有一个平均20次的人工标签结果。

总体而言,Imagenet-1k数据集主要有三个部分组成:训练集(共有1000个文件夹,每个文件夹表示一个物体类别,文件夹内有1000张图像)、验证集(共有50,000张图像,每个物体类别取50张图像)、测试集(共有大约100,000张图像,不公开标签,提交测试结果到Imagenet官方网站获取最终模型评价结果)。

二、Imagenet1k数据集多少G


import os

path = 'imagenet/'

total_size = 0
for root, dirs, files in os.walk(path):
    for file in files:
        total_size += os.path.getsize(os.path.join(root, file))

print("总共需要{}GB的存储空间".format(round(total_size/(1024**3), 2)))

Imagenet-1k数据集总共需要128.69 GB的存储空间。虽然Imagenet-1k数据集对硬盘存储空间要求较高,但是对于计算机视觉、深度学习相关的算法研究,使用Imagenet-1k数据集极其有价值。该数据集的规模是绝大多数学术论文所使用分类数据集得不到比拟的。

三、Imagenet1K数据集多少g


import os

class_list = sorted(os.listdir('imagenet/imagenet_train/'))

class_size_kb = []
for classname in class_list:
    class_path = os.path.join('imagenet/imagenet_train/', classname)
    size = 0
    for root, dirs, files in os.walk(class_path):
        for file in files:
            size += os.path.getsize(os.path.join(root, file))
    class_size_kb.append(round(size/1024, 2))

max_class_size = max(class_size_kb)
min_class_size = min(class_size_kb)
avg_size = round(sum(class_size_kb)/len(class_size_kb), 2)

print("单个类别中最大的图片大小为{}KB,最小为{}KB,平均大小为{}KB".format(max_class_size, min_class_size, avg_size))

在Imagenet-1k数据集中,所有图像数据的大小会因为所表示的物体类别不同而存在较大差异。上述代码计算了Imagenet-1k数据集中每个类别中图像数据的大小,并给出了单个类别中最大的图片大小、最小的图片大小、以及平均图片大小。运行结果显示,单个类别中最大的图片大小为192.35KB,最小为2.72KB,平均大小为878.28KB。

四、Imagenet1K数据集的实用性

1. 作为图像分类的基准数据集

Imagenet-1k数据集是计算机视觉和深度学习领域图像分类模型的基准数据集之一。许多研究工作都是通过在Imagenet-1k数据集上进行实验来证明其新模型的有效性。在Imagenet-1k数据集上训练模型非常需要技术和计算资源,因此该数据集已经成为图像分类准确性的一个标杆。不管是在学术界还是实际应用中,评估图像分类算法和模型的准确性、效率都需要使用Imagenet-1k。

2. 作为深度学习预训练模型的训练数据

Imagenet-1k数据集能够用于较低层级的特征学习和模型预训练。因为Imagenet-1k数据集规模很大,模型训练可以利用该数据集的丰富信息,并将训练的模型作为计算机视觉、图像处理等任务中的预训练模型。根据观察,已经训练好的模型通过迁移到其他计算机视觉任务,能够取得更快的训练速度和更好的降低损失的效果。在实际应用中,Imagenet-1k数据集和预训练模型可以广泛应用于各种视觉任务,例如识别、检测、定位等等。

3. 实际应用案例

除了在学术界中的应用,Imagenet-1k数据集还广泛应用于实际应用中,例如:


import torch
from torchvision import datasets, transforms, models

# define device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# load imagenet-1k pre-trained model
model = models.vgg16(pretrained=True)
model.to(device)

# define transform
transform = transforms.Compose([transforms.Resize(256),
                                transforms.CenterCrop((224, 224)),
                                transforms.ToTensor(),
                                transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                                     std=[0.229, 0.224, 0.225])])

# load test image
img_path = 'test_img/example.jpg'
img = Image.open(img_path).convert('RGB')
img_tensor = transform(img)
img_tensor = img_tensor.unsqueeze(0).to(device)

# predict the class of test image
model.eval()
with torch.no_grad():
    output = model(img_tensor)
    pred = torch.argmax(output, dim=1)
    class_dict = datasets.ImageFolder('imagenet/imagenet_train/').class_to_idx
    pred_name = list(class_dict.keys())[list(class_dict.values()).index(pred.item())]
    print("The prediction result is:", pred_name)

通过加载Imagenet-1k预训练的VGG16模型,然后使用GPU对加载的测试图像进行预测,输出预测结果。可以发现,Imagenet-1k数据集的应用能够使计算机视觉算法得到更好的实际效果,例如对于图像分类、低层级特征学习和模型预训练等。