fgvc-aircraft-2013b是细粒度图像分类和识别研究中经典的benchmarks,它包含四种类型的标注:

(1)按照manufacturer进行划分,可分为30个类别,例如ATR、Airbus、Antonov、Beechcraft、Boeing。

(2)按照families进行划分,可分为70个类别。

(3)按照variants进行划分,可分为100个类别(一般细粒度图像分类中经常采用的划分标注)

(4)数据集的bounding_box

下面是python实现的fgvc-aircraft-2013b中100类别的训练集和测试后划分代码(供参考)。

我的文件夹目录如下:

其中,images文件夹为存放的10000张飞机图片;

dataset文件夹中包含train、test、trainval、val四个文件夹,分别用来存在划分后的图片。

文件夹30,70,100和bounding_box为上述的4种数据标注文件,分别保存有.txt文件。

# *_*coding: utf-8 *_*
# author --liming--"""
给定train,test,val的txt文件,分别表示图像以文件夹的形式
"""import os
import shutil
from PIL import Image
import argparsepath = '/media/lm/1E7FBDC6EEE168BC/fine_grained_dataset/FGVC_Aircraft/fgvc-aircraft-2013b'image_path = path + '/images/'
save_train_path = path + '/dataset/train/'
save_test_path = path + '/dataset/test/'
save_trainval_path = path + '/dataset/trainval/'
save_val_path = path + '/dataset/val/'
# 读取图像文件夹,获取文件名列表
imgs = os.listdir(image_path)
num = len(imgs)# 读取txt文件
f_test = open(path + '/100/images_variant_test.txt','r')
f_train = open(path + '/100/images_variant_train.txt','r')
f_trainval = open(path + '/100/images_variant_trainval.txt','r')
f_val = open(path + '/100/images_variant_val.txt','r')
test_list = list(f_test)
train_list = list(f_train)
trainval_list = list(f_trainval)
val_list = list(f_val)parser = argparse.ArgumentParser(description='Data Split based on Txt')
parser.add_argument('--dataset',default='test',help='Select which dataset split, test, train, trainval, or val')
args = parser.parse_args()# 判断输入图像属于哪一类
print('==> data processing...')
if args.dataset == 'test':count = 0for i in range(num):aaaaa = len(test_list)bbbbbb = imgs[i][:7]for j in range(len(test_list)):if imgs[i][:7] == test_list[j][:7]:# 获取类别标签label = test_list[j][8:]label = label[:-1]if os.path.isdir(save_test_path + label):shutil.copy(image_path + imgs[i], save_test_path + label + '/' + imgs[i])else:os.makedirs(save_test_path + label)shutil.copy(image_path + imgs[i], save_test_path+label+'/'+imgs[i])count += 1print('第%s张图片属于test类别' % count)print('Finished!!')elif args.dataset == 'train':for i in range(num):for j in range(len(train_list)):if imgs[i][:7] == train_list[j][:7]:print('该图像属于train类别')# 获取类别标签label = train_list[j][8:]label = label[:-1]if os.path.isdir(save_train_path + label):shutil.copy(image_path + imgs[i], save_train_path + label + '/' + imgs[i])else:os.makedirs(save_train_path + label)shutil.copy(image_path + imgs[i], save_train_path+label+'/'+imgs[i])print('Finished!!')elif args.dataset == 'trainval':for i in range(num):for j in range(len(trainval_list)):if imgs[i][:7] == trainval_list[j][:7]:print('该图像属于trainval类别')# 获取类别标签label = trainval_list[j][8:]label = label[:-1]if os.path.isdir(save_trainval_path + label):shutil.copy(image_path + imgs[i], save_trainval_path + label + '/' + imgs[i])else:os.makedirs(save_trainval_path + label)shutil.copy(image_path + imgs[i], save_trainval_path+label+'/'+imgs[i])print('Finished!!')else:for i in range(num):for j in range(len(val_list)):if imgs[i][:7] == val_list[j][:7]:print('该图像属于val类别')# 获取类别标签label = val_list[j][8:]label = label[:-1]if os.path.isdir(save_val_path + label):shutil.copy(image_path + imgs[i], save_val_path + label + '/' + imgs[i])else:os.makedirs(save_val_path + label)shutil.copy(image_path + imgs[i], save_val_path + label + '/' + imgs[i])print('Finished!!')

划分完毕后,由于飞机文件夹名称问题,F-16A/B会保存为F-16A/B;F/A-18会保存为F/A-18,需要将其截取出来,统一文件名即可。

最后的训练集和测试集划分如下:

(1)测试集(100个类别,共3333张图片)

(2)训练集(100个类别,6667张图片)

fgvc-aircraft-2013b飞机细粒度数据训练集和测试集划分python代码相关推荐

  1. iris数据集_sklearn日志(二)训练集和测试集划分

    机器学习算法需要大量的数据,这些数据一部分用于模型训练,另一部分作为测试或验证. 机器学习入坑者:sklearn日志(一)体验官方提供的标准数据集​zhuanlan.zhihu.com sklearn ...

  2. 将数据集分为训练集和测试集(python脚本)

    文章目录 程序: 下面简单介绍一下程序流程 1.引入库 os库 shutil random 2.mk_file函数 3.主函数 程序: 我们在训练卷积神经网络之前,要搭建好数据集,分成训练集和测试集两 ...

  3. 训练集和测试集的标准化中的坑!!!

    问题:数据标准化,应该在训练集和测试集划分前还是后? 答:数据标准化,应该在训练集和测试集划分后,分别对训练集和测试集进行数据标准化处理.不应该是数据标准化后,再进行划分.虽然从模型测试的结果看,可能 ...

  4. python按设定比例划分训练集和测试集代码

    # *_*coding: utf-8 *_* # Author --LiMing--import os import random import shutil import timedef copyF ...

  5. Scikit-learn API:train_test_split函数 将数据分割为训练集和测试集

    函数原型 sklearn.model_selection.train_test_split(*arrays, **options) 函数功能 将数组或矩阵随机的分割成训练集和测试集,注意这里是随机的. ...

  6. [机器学习笔记] 将数据拆分成训练集和测试集的几种方法

    问题描述: 一般情况下, 我们习惯将原始数据中的80% 作为训练集, 20% 作为测试集(当数据量足够大的时候,也可以将10% 作为测试集. 数据量较小时,如果每次都是随机划分训练集,执行多次训练后, ...

  7. python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解

    文章目录 train_test_split()用法 获取数据 划分训练集和测试集 完整代码脚手架 train_test_split()用法 python机器学习中常用 train_test_split ...

  8. 5.sklearn之转换器(划分训练集和测试集、以及标准化、归一化数据会用transform,独热编码也会用到)

    文章目录 1. 什么是转换器? 2. 测试集和训练集 2.1 训练集 .测试集.验证集 2.2 拆分训练集测试集有个问题 2.3 代码 3. 标准化 3.1 上离差标准化代码(举一反三就好了,其他几个 ...

  9. R语言实现数据抽样创建训练集和测试集

    主要参考<数据挖掘:R语言实战>(黄文,王正林编著) 在收集数据过程中,绝大多数情况下,并不采取普查的方式获取总体中所有样本的数据信息,而是以各类抽样方法抽取其中若干代表性样本来进行数据获 ...

最新文章

  1. 编程中的一些小问题记录
  2. CSharpGL(28)得到高精度可定制字形贴图的极简方法
  3. Spring Cloud Netflix—如何加入Hystrix
  4. Ceph 的数据回填和恢复
  5. f2 柱状图滚动 钉钉小程序_钉钉小程序使用阿里的F2图表
  6. sql几种删除语句的联系与区别
  7. 【华为云技术分享】物体检测yolo3算法 学习笔记(1)
  8. gmail导入foxmail
  9. 解除工作压力的四大疗法
  10. 蓝桥杯2015年第六届C/C++省赛C组第二题-立方尾不变
  11. Cisco 证书查询
  12. ies文件 vray_VRayIES灯光
  13. 软件测试自学指南---从入门到精通
  14. Windows 10 企业版LTSCjihuo
  15. SSM用户注册登录案例
  16. Memcached damo
  17. 怎么用计算机连接电视,电脑怎么连接电视当显示屏用
  18. 送 10 本签名书!
  19. 【C语言】[其他] :code, data, idata, xdata, bdata, edata, hdata等,代表的意思
  20. springMVC+阿里云API = 实现发送手机验证码短信

热门文章

  1. JavaScript基础经典面试试题(附答案)
  2. RPA技术这么强,为什么机器人还会让人失望呢?
  3. opencv--字幕-眩光实验
  4. 带你走进缓存世界(2):缓存入门
  5. 关键字data idata xdata code using
  6. Linuxsir:Linux 常用命令之一
  7. 2010中国大学创业富豪榜出炉
  8. 从零开始gis——(1)什么是gis
  9. 爬虫实现爬取牛客网数据结构试题
  10. 【染色体识别】基于matlab形态学染色体计数【含Matlab源码 1066期】