five

animals with attributes 50种动物类别的标签图像数据集

收藏
帕依提提2024-03-04 收录
下载链接:
https://www.payititi.com/opendatasets/show-26416.html
下载链接
链接失效反馈
官方服务:
资源简介:
它由50种动物类别的37322张图像组成,每张图像均具有预先提取的特征表示。这些类与Osherson的经典类/属性矩阵[3,4]对齐,从而为每个类提供85个数字属性值。使用共享属性,可以在不同的类之间传递信息。 图像数据是在2016年从公共资源(例如Flickr)收集的。在此过程中,我们确保只包括获得免费使用和重新分发许可的图像,请参阅单个许可文件的档案。 用于零样本学习的数据集,50个动物类别,85个属性 文件介绍: JPEGImages:动物图片,子文件夹名为动物名称 licenses:是些用处不大的文件 class.txt:动物列表,顺序很重要!!! predicates.txt:属性列表,顺序很重要!!! predicate-matrix-binary.txt:每行对应每个动物的属性,每行对应的动物类型参考class.txt文件,每列对应的属性参考predicates.txt文件,二值属性 predicate-matrix-binary.txt:每行对应每个动物的属性,每行对应的动物类型参考class.txt文件,每列对应的属性参考predicates.txt文件,连续属性,用于后续的unseen样本的分类,值为每个属性的置信度,可能在实际应用中需要归一化 testclasses.txt:用于测试的类别 trainclasses.txt:用于训练的类别 在实际的使用中,原数据集中提供的数据可能不是很方便使用,可自行将txt文件转为csv文件更加方便使用,如下: 利用VGG19(在ImageNet数据集上预训练过)对该数据集进行特征提取,选取全连接层的倒数第二层输出作为特征,维度为4096维。 源码如下: # -*- coding: utf-8 -*- from keras.applications.vgg19 import VGG19 from keras.preprocessing import image from keras.applications.vgg19 import preprocess_input from keras.models import Model import os import numpy as np import scipy.io as sio import csv ##获取文件路径列表dir+filename def get_files(): attribute_path = r"C:\Users\ZhouFengtao\OneDrive\Program\balabalaba\data\attribute.csv" path = r"D:\AwA2-data\Animals_with_Attributes2\JPEGImages" class_list = [] class_num = {} class_att = {} image_path = [] image_att = None attribute_file = csv.reader(open(attribute_path)) # get attribute print('get attribute') for row in attribute_file: att = [float(x) for x in row[1:]] class_att[row[0]] = att class_num[row[0]] = 0 for root, dirs, files in os.walk(path): for name in files: animal = str.split(name, '_')[0] if animal not in class_list: class_list.append(animal) class_num[animal] = class_num[animal] + 1 if image_att is None: image_att = class_att[animal] else: image_att = np.row_stack((image_att, class_att[animal])) image_path.append(os.path.join(root, name)) return class_list, class_num, class_att, image_path if __name__ == '__main__': os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0' os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = '0' base_model = VGG19(weights='imagenet', include_top=True) model_fc1 = Model(inputs=base_model.input, outputs=base_model.get_layer('fc1').output) # fc1 layer class_list, class_num, class_att, image_path = get_files() ##获取图片路径列表 print(class_list) print(class_num) print(class_att) fc1s = None atts = None for i, path in enumerate(image_path): print('number ' + str(i) + ' path: ' + path) try: img = image.load_img(path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) fc1 = model_fc1.predict(x) key = str.split(str.split(path, '\\')[-1], '_')[0] att = class_att[key] if fc1s is None: fc1s = fc1 atts = att else: fc1s = np.row_stack((fc1s, fc1)) atts = np.row_stack((atts, att)) except IOError: print('########################Image Error###########################') # save extracted feature sio.savemat('vgg19_feature', {'fc1': fc1s, 'atts': atts}) fw = open("animals_num.txt", 'w+') fw.write(str(class_num)) # 把字典转化为str fw.close() fw = open("animals_sequence.txt", 'w') fw.write(str(class_list)) # 把list转化为str fw.close()

本数据集包含50个动物类别的37322张图像,每张图像均配有预先提取的特征表示。其类别与Osherson提出的经典类别-属性矩阵[3,4]对齐,为每个类别提供85个数值属性值,可通过共享属性实现跨类别间的信息传递。 图像数据于2016年从Flickr等公共资源采集,采集过程中仅纳入获得免费使用及再分发许可的图像,相关许可文件可参见归档包内的许可文件。 本数据集专为零样本学习(Zero-shot)任务设计,包含50个动物类别与85个属性。各文件说明如下: - JPEGImages:存储动物图像,其子文件夹以对应动物的名称命名 - licenses:许可相关文件(非核心功能文件) - class.txt:动物类别列表,其顺序至关重要!!! - predicates.txt:属性列表,其顺序至关重要!!! - predicate-matrix-binary.txt:包含两类属性矩阵文件:其一为二值属性矩阵,每行对应一个动物类别(类别顺序与class.txt保持一致),每列对应一个属性(属性顺序与predicates.txt保持一致);其二为连续属性矩阵,每行对应一个动物类别(类别顺序与class.txt保持一致),每列对应单个属性的置信度数值,实际应用中可根据需求进行归一化处理,可用于未见类别样本的分类任务 - testclasses.txt:测试阶段所用的类别列表 - trainclasses.txt:训练阶段所用的类别列表 实际使用时,原数据集提供的文本文件格式可能不够便捷,可将其转换为逗号分隔值(CSV)格式以提升易用性。 可使用在ImageNet数据集(ImageNet)上预训练的VGG19(VGG19)模型对本数据集进行特征提取,选取全连接层的倒数第二层输出作为图像特征,特征维度为4096维。 配套源码如下: python # -*- coding: utf-8 -*- from keras.applications.vgg19 import VGG19 from keras.preprocessing import image from keras.applications.vgg19 import preprocess_input from keras.models import Model import os import numpy as np import scipy.io as sio import csv ##获取文件路径列表dir+filename def get_files(): attribute_path = r"C:UsershouFengtaoOneDriveProgramalabalabadataattribute.csv" path = r"D:AwA2-dataAnimals_with_Attributes2JPEGImages" class_list = [] class_num = {} class_att = {} image_path = [] image_att = None attribute_file = csv.reader(open(attribute_path)) # 获取属性 print('正在获取属性') for row in attribute_file: att = [float(x) for x in row[1:]] class_att[row[0]] = att class_num[row[0]] = 0 for root, dirs, files in os.walk(path): for name in files: animal = str.split(name, '_')[0] if animal not in class_list: class_list.append(animal) class_num[animal] = class_num[animal] + 1 if image_att is None: image_att = class_att[animal] else: image_att = np.row_stack((image_att, class_att[animal])) image_path.append(os.path.join(root, name)) return class_list, class_num, class_att, image_path if __name__ == '__main__': os.environ['TF_CPP_MIN_LOG_LEVEL'] = '0' os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = '0' base_model = VGG19(weights='imagenet', include_top=True) model_fc1 = Model(inputs=base_model.input, outputs=base_model.get_layer('fc1').output) # fc1 全连接层 class_list, class_num, class_att, image_path = get_files() ##获取图片路径列表 print(class_list) print(class_num) print(class_att) fc1s = None atts = None for i, path in enumerate(image_path): print('第 ' + str(i) + ' 张图像路径:' + path) try: img = image.load_img(path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) fc1 = model_fc1.predict(x) key = str.split(str.split(path, '\')[-1], '_')[0] att = class_att[key] if fc1s is None: fc1s = fc1 atts = att else: fc1s = np.row_stack((fc1s, fc1)) atts = np.row_stack((atts, att)) except IOError: print('########################图像读取错误###########################') # 保存提取的特征 sio.savemat('vgg19_feature', {'fc1': fc1s, 'atts': atts}) fw = open("animals_num.txt", 'w+') fw.write(str(class_num)) # 将字典转换为字符串 fw.close() fw = open("animals_sequence.txt", 'w') fw.write(str(class_list)) # 将列表转换为字符串 fw.close()
提供机构:
帕依提提
搜集汇总
数据集介绍
main_image_url
背景与挑战
背景概述
该数据集是一个包含50种动物类别、37,322张标签图像的集合,每张图像都有预先提取的特征表示和85个数字属性值,适用于零样本学习任务。数据来源于Flickr等公共资源,确保合法使用和分发。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务