【tensorflow 训练验证数据处理】制制作trian和val TXT的文件

开始训练模型之前,需要对收集的图片进行处理。那么第一步 就是制作trian和val TXT的文件。

训练和测试的图片数据集 分别放在 train 和val 两个文件夹下。

数据集,共有五类图片,分别是:flower、guitar、animal、houses和plane。

有了图片数据集后,需要划分为train和val数据集,前者用于训练模型的数据,后者主要用于验证模型。这里提供一个create_labels_files.py脚本,可以直接生成训练train和验证val的数据集txt文件。

在这里插入图片描述

在这里插入图片描述

# -*-coding:utf-8-*-

import os
import os.path


def write_txt(content, filename, mode='w'):
    """保存txt数据
    :param content:需要保存的数据,type->list
    :param filename:文件名
    :param mode:读写模式:'w' or 'a'
    :return: void
    """
    with open(filename, mode) as f:
        for line in content:
            str_line = ""
            for col, data in enumerate(line):
                if not col == len(line) - 1:
                    # 以空格作为分隔符
                    str_line = str_line + str(data) + " "
                else:
                    # 每行最后一个数据用换行符“\n”
                    str_line = str_line + str(data) + "\n"
            f.write(str_line)


def get_files_list(dir):
    '''
    实现遍历dir目录下,所有文件(包含子文件夹的文件)
    :param dir:指定文件夹目录
    :return:包含所有文件的列表->list
    '''
    # parent:父目录, filenames:该目录下所有文件夹,filenames:该目录下的文件名
    files_list = []
    for parent, dirnames, filenames in os.walk(dir):
        for filename in filenames:
            # print("parent is: " + parent)
            # print("filename is: " + filename)
            # print(os.path.join(parent, filename))  # 输出rootdir路径下所有文件(包含子文件)信息
            curr_file = parent.split(os.sep)[-1]
            if curr_file == 'flower':
                labels = 0
            elif curr_file == 'guitar':
                labels = 1
            elif curr_file == 'animal':
                labels = 2
            elif curr_file == 'houses':
                labels = 3
            elif curr_file == 'plane':
                labels = 4
            files_list.append([os.path.join(curr_file, filename), labels])
    return files_list


if __name__ == '__main__':
    train_dir = './dataset/train'
    train_txt = './dataset/train.txt'
    train_data = get_files_list(train_dir)
    write_txt(train_data, train_txt, mode='w')

    val_dir = './dataset/val'
    val_txt = './dataset/val.txt'
    val_data = get_files_list(val_dir)
    write_txt(val_data, val_txt, mode='w')


注意,上面Python代码,已经定义每组图片对应的标签labels:

flower   ->labels=0
guitar   ->labels=1
animal  ->labels=2
houses ->labels=3
plane    ->labels=4

设置好路径,运行

python  create_labels_files.py
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页