yolo切分数据集和图片

import os
import random
import shutil
def checkFile(path): #获取label的全部绝对路径存入列表
    listSaveLabel = []
    for i in os.listdir(path):
        listSaveLabel.append(path+"\\"+i)
    return listSaveLabel

def splitList(lst,ratio): #将列表按比例切分出来数据
    split_idx1 = int(len(lst) * ratio[0] / sum(ratio))
    split_idx2 = split_idx1 + int(len(lst) * ratio[1] / sum(ratio))
    return lst[:split_idx1], lst[split_idx1:split_idx2], lst[split_idx2:]

def saveLabel(saveLabelPath,train,val,test): #将切分出来的数据集进行数据划分
    trainPath = saveLabelPath+"//train"
    testPath = saveLabelPath+"//test"
    valPath = saveLabelPath+"//val"

    if not os.path.exists(testPath):
        os.makedirs(testPath)
    if not os.path.exists(trainPath):
        os.makedirs(trainPath)
    if not os.path.exists(valPath):
        os.makedirs(valPath)

    for trainFile in train:
        if os.path.isfile(trainFile):
            
### YOLO算法下的人脸识别数据集 对于YOLO算法的应用场景之一——人脸识别,存在多种公开可用的数据集可以用于训练模型。以下是几个常见的、适合YOLO算法的人脸识别数据集: #### 1. WIDER FACE 数据集 WIDER FACE 是一个人脸检测领域广泛使用的基准数据集[^1]。它包含了超过40,000张图像,覆盖了各种复杂背景光照条件下的脸部样本。该数据集的特点在于其多样性挑战性,非常适合用来测试改进基于YOLO的目标检测模型。 #### 2. FDDB (Face Detection Data Set and Benchmark) FDDB 提供了一个椭圆标注形式的脸部位置信息集合[^2]。虽然原始标注不是矩形框的形式,但是可以通过转换工具将其转化为适合YOLO输入的标准格式(如COCO或VOC)。此数据集主要用于评估不同方法在自然条件下对面孔定位的能力。 #### 3. CelebA Dataset CelebA 是一个大规模名人面部属性数据集,包含约20万张高质量图片以及详细的元数据描述。尽管主要设计目的是为了研究人脸属性预测任务,但它同样也可以作为良好的资源来增强YOLO模型对人体特征的理解能力。 #### 数据预处理与格式转换 无论选择哪个具体的数据源,在实际应用之前都需要完成一系列准备工作: - **标签标准化**: 将来自不同来源的ground truth bounding boxes统一调整成YOLO所需的txt文件结构。 - **划分训练验证集**: 使用专门脚本来随机分割整个数据库为training set validation set两部分以便后续实验操作更加科学合理。 ```python import os from sklearn.model_selection import train_test_split def split_dataset(image_dir, label_dir, test_size=0.2): images = [os.path.join(image_dir, f) for f in os.listdir(image_dir)] labels = [os.path.join(label_dir, f.replace('.jpg', '.txt')) for f in os.listdir(image_dir)] X_train, X_val, y_train, y_val = train_test_split(images, labels, test_size=test_size) with open('train.txt', 'w') as f: f.write("\n".join(X_train)) with open('val.txt', 'w') as f: f.write("\n".join(X_val)) split_dataset('/path/to/images', '/path/to/labels') ``` 上述代码片段展示了如何利用Python库`sklearn`中的函数实现自动化的数据切分过程,并保存结果到对应的`.txt`列表当中去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝士是只猫

开源使得世界变得更美丽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值