其他分享
首页 > 其他分享> > PaddleClas模型训练/评估:数据准备

PaddleClas模型训练/评估:数据准备

作者:互联网

本文档介绍ImageNet1k和flowers102数据准备过程。

数据集训练集大小测试集大小类别数备注
flowers1021k6k102 
ImageNet1k1.2M50k1000
# 每一行采用"空格"分隔图像路径与标注

# 下面是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