文章目录
一、简介
本文主要是自己近期在做毕业设计(连续手语识别)时候写的几个python脚本,用于处理数据集的。记录一下。
二、 重点
本文撰写采用Windows操作系统,如果是Linux记得修改字符串分割方式及目录层数多加一层。
1. 数据集划分训练集与测试集
1.1 数据集为视频帧文件夹(文件夹划分)
trainNum 参数是划分训练集的视频数,即文件夹数,我的划分是9:1,总数是250个视频,那这里就写225。
dirLongNum 参数为你当前原数据集最深的目录层数
举个例子:
F:\data 是我视频帧数据集
000020是我的一个视频类,里面的事每个视频抽帧后的文件夹,要截止到最后一个文件夹
def splitTrainAndTestOnDir(rootFileDir, dstDir, trainNum, dirLongNum): # dirLongNum目录结构最长多少
root_dir = os.walk(rootFileDir)
# 训练集、测试集的路径,脚本测试用
# root_train_dir = "F:/pytest/datat/train/"
root_train_dir = dstDir + "/train/"
# root_test_dir = "F:/pytest/datat/test/"
root_test_dir = dstDir + "/test/"
# 记录训练集个数
trainFileCount = 0
# 记录当前某类文件夹名
lastFileDirName = ""
# 开始遍历
for root, dirs, files in root_dir:
# 组合目录名
nameFile = os.path.join(root)
# 拆分成数组 注意修改
nameArr = nameFile.split("\\")
# 判定,根据文件夹目录关系:F:\newdata2\000000\P01_s1_00_0_color,判定 类 目录是否更换,即是否到了新的一类,如果到了,清零计数
if lastFileDirName != str(nameArr[-2]):
trainFileCount = 0
# 重新赋值
lastFileDirName = str(nameArr[-2])
print(nameArr)
# 训练集的数量
if trainFileCount < trainNum:
# 移动一次,加一
trainFileCount = trainFileCount + 1
# 定义训练集路径
dstTrainPath = r