PaddleClas模型训练/评估:数据准备
作者:互联网
本文档介绍ImageNet1k和flowers102数据准备过程。
数据集 | 训练集大小 | 测试集大小 | 类别数 | 备注 |
---|---|---|---|---|
flowers102 | 1k | 6k | 102 | |
ImageNet1k | 1.2M | 50k | 1000 |
- 数据格式 按照如下结构组织数据,其中
train_list.txt
和val_list.txt
的格式形如:
# 每一行采用"空格"分隔图像路径与标注 # 下面是train_list.txt中的格式样例 train/n01440764/n01440764_10026.JPEG 0 ... # 下面是val_list.txt中的格式样例 val/ILSVRC2012_val_00000001.JPEG 65 ...
Python
########################################################################################################################
# Linux/OS X 系统下声明这是一个 Python 可执行程序; Windows 系统会忽略这个注释.
# !/usr/bin/env python
# 指定 Python 解释器按照 UTF-8 编码读取源代码, 否则源代码中的中文输出时可能会乱码.
# -*- coding: utf-8 -*-
########################################################################################################################
# 加入“绝对引入”新特性:
# 这样就可用import string引入系统标准string.py, 而用from pkg import string来引入当前目录下的string.py.
from __future__ import absolute_import, division, print_function, unicode_literals
########################################################################################################################
# 加载相关类库
import os
import sys
import scipy.io
import numpy as np
########################################################################################################################
# .mat文件数据格式
# imagelabel.mat
# jpg_name 1 2 3 ...
# label 32 12 66 ...
#
# setid.mat
# jpg_name(10 records in a class) 24 6 100 65 32 ...
# label 4 ...
########################################################################################################################
# 自定义生成函数
def generate(file_name, dict_name):
image_path = 'jpg' # jpg 文件夹名称
imagelabels_path = './imagelabels.mat'
imagelabels_data = scipy.io.loadmat(imagelabels_path)
labels = np.array(imagelabels_data['labels'][0])
setid_path = './setid.mat'
setid_data = scipy.io.loadmat(setid_path)
# 设置字典
lv_dict = {'train': np.array(setid_data['trnid'][0]),
'valid': np.array(setid_data['valid'][0]),
'test': np.array(setid_data['tstid'][0])}
# 写入文件
with open("%s.txt" % file_name, "w") as file:
# 遍历
for lv_id in lv_dict[dict_name]:
message = str(image_path) + "/image_" + str(lv_id).zfill(5) + ".jpg " + str(labels[lv_id - 1] - 1)
# print(message)
file.write(message + '\n')
# 提示信息
print(f"{file_name}.txt generate complete!")
########################################################################################################################
# 自调用: 每个模块都有一个__name__属性, 当其值是'__main__'时, 表明该模块自身在运行, 否则是被引入.
if __name__ == '__main__':
# 训练集
generate('train_list', 'train')
# 验证集
generate('val_list', 'valid')
# 测试集
generate('test_list', 'test')
标签:__,############################################################################# 来源: https://blog.csdn.net/liubing8609/article/details/117756031