将数据划分为训练数据及测试数据(div_train_val.py 解析)

原创 2016年06月01日 10:17:42

将LFW数据划分为face,non-face两个图像数据文件,在此基础上,提取训练数据及测试数据。

训练数据,在face文件中提取一部分,在non-face文件中提取一部分。

测试数据,在face文件中提取一部分,在non-face文件中提取一部分。

使用 div_train_val.py ,能得到训练数据及测试数据,其文件内容为,图像的路径及标注。

# -*- coding: utf-8 -*-
"""
Created on Mon Jun  8 14:15:21 2015
@brief: 用与划分训练数据,train.list 和 val.list
@author: Riwei Chen <Riwei.Chen@outlook.com>
"""
import  os
def div_database(filepath,savepath,top_num=1000,equal_num=False,full_path=False):
    '''
    @brief: 提取webface人脸数据
    @param : filepath 文件路径
    @param : top_num=1000,表示提取的类别数目,face,non-face -> top_num= 2
    @param : equal_num 是否强制每个人都相同
    '''
    dirlists=os.listdir(filepath)  #crop_images(存放图像文件)文件下的目录
    dict_id_num={}  #定义一个存放子目录长度的元组
    for subdir in dirlists:
        dict_id_num[subdir]=len(os.listdir(os.path.join(filepath,subdir)))  #存储每个子目录下文件的长度(例如face 子目录里面所包含的图像数量)
    #sorted(dict_id_num.items, key=lambda dict_id_num:dict_id_num[1])
    sorted_num_id=sorted([(v, k) for k, v in dict_id_num.items()], reverse=True) #排序,["face",length] -> [length,"face"]
    select_ids=sorted_num_id[0:top_num]
    if equal_num == True:
        trainfile=save_path+'train_'+str(top_num)+'_equal.list'
        testfile=save_path+'val_'+str(top_num)+'_qeual.list'
    else:  #新建训练文件及测试文件
        trainfile=save_path+'train_'+str(top_num)+'.list'
        testfile=save_path+'val_'+str(top_num)+'.list'
    fid_train=open(trainfile,'w') 
    fid_test=open(testfile,'w')
    pid=0
    pre = ""
    if full_path ==True:
        pre = data_path
    #将数据划分为训练数据及测试数据,face 中选取一部分划分为训练数据,另一部分划分为测试数据;non-face中选取一部分划分为训练数据,另一部分划分为测试数据
    for  select_id in select_ids:
        subdir=select_id[1]
        filenamelist=os.listdir(os.path.join(filepath,subdir))  #获取图像文件名
        num=1
        for filename in filenamelist :
            #print select_ids[top_num-1]
            if equal_num==True and num>select_ids[top_num-1][0]:
                break
            if num%10!=0:
                fid_train.write(os.path.join(pre,subdir,filename)+'\t'+str(pid)+'\n')  #保存图像路径及其标注
            else:
                fid_test.write(os.path.join(pre,subdir,filename)+'\t'+str(pid)+'\n')
            num=num+1
        pid=pid+1
    fid_train.close()
    fid_test.close()

if __name__=='__main__':
    data_path = '/home/zhuangni/code/FaceDetection/ReprocessData/alfw/crop_images'
    save_path = '/home/zhuangni/code/FaceDetection/Data/aflw/'
    div_database(data_path,save_path, top_num=2, equal_num=False,full_path =True)



版权声明:本文为博主原创文章,未经博主允许不得转载。

将数据集切分成“训练-测试数据集”和交叉验证

如何将数据集划分为测试数据集和训练数据集? 把数据集分为两部分:分别用于训练和测试 sklearn提供一个将数据集切分成训练集和测试集的函数。 from sklearn.crose_validatio...
  • Chloezhao
  • Chloezhao
  • 2016年12月07日 11:05
  • 5381

caffe中train_val.prototxt文件和deploy.prototxt文件区别和转换--caffe学习(14)

先放出二者的完整例子文件,然后分析: train_val.prototxt文件如下:name: "CaffeNet" layer { name: "data" type: "Data" top: "...
  • u014381600
  • u014381600
  • 2017年01月10日 21:43
  • 4240

神经网络1.训练和测试(train&test)以及相关关系解释--神经网络开篇

现实生活中计算机是没法像人类一样的认识事物的,所以人类一直致力于这方面的研究。前辈们已经开发了许多的方法以实现计算机识别的能力,比如SVM等。但是目前来说最火且具有最高识别度的还是深度学习。有许许多多...
  • qq_20259459
  • qq_20259459
  • 2016年12月29日 21:18
  • 2133

处理生成VOC的数据格式的test.txt train.txt trainval.txt val.txt 和SSD的imdb数据格式以及ssd的训练

VOC的数据格式就是在VOC文件夹下:准备三个文件夹 1、 Annotations里面放标注好的xml文件使用的这个工具, 参考http://blog.csdn.net/jesse_mx/articl...
  • Bankeey
  • Bankeey
  • 2017年08月02日 20:11
  • 1435

将数据集切分成“训练-测试数据集”和交叉验证

如何将数据集划分为测试数据集和训练数据集? 把数据集分为两部分:分别用于训练和测试 sklearn提供一个将数据集切分成训练集和测试集的函数。 from sklearn.crose_validatio...
  • Chloezhao
  • Chloezhao
  • 2016年12月07日 11:05
  • 5381

关于机器学习的训练数据、验证数据和测试数据的形象比喻

机器学习最明显的一个特点是需要大量的数据。特别对监督学习来说,就是需要大量的带标签数据(labeled data)。 很多入门的朋友很快就会遇见模型训练和测试这两个阶段,进而也就了解到带标签数据...
  • chenhaifeng2016
  • chenhaifeng2016
  • 2017年06月24日 12:49
  • 877

sklearn之训练数据和测试数据随机选取

我们在分类的时候需要把数据分成两部分,一部分是训练数据一部分是测试数据。sklearn可以随机的按照设置的比例选取训练数据和测试数据并且样本和标签是对应的分组。 实验代码如下:#!/usr/bin/...
  • baidu_15113429
  • baidu_15113429
  • 2017年05月23日 16:05
  • 897

caffe初探之-caffe使用Siamese Network 训练网minst数据集

1.获取数据集 cd caffe ./data/mnist/get_mnist.sh2.创建两个数据集 cd caffe ./examples/siamese/create_mnist_siamese...
  • xingchengmeng
  • xingchengmeng
  • 2017年02月28日 09:52
  • 679

caffe 练习2 用自己的数据集在ImageNet 测试------by 香蕉麦乐迪

这一节我们使用我们自己的数据集在ImageNet结构上面测试。 我们的数据集是10个类别,每个类别有100个train图片,30个test图片。我们自己数据集图片的下载地址: 我们跟着caffe官网的...
  • sloanqin
  • sloanqin
  • 2015年10月21日 13:58
  • 5001

【Python那些事儿】准备数据——训练集和测试集

准备工作在把数据用于机器学习的算法之前,必须认真准备数据。提供类别分布一致的训练集和测试集对于成功的分类模型是十分重要的。继续使用iris数据集,把80%的记录归入训练集,剩下的20%作为测试集。操作...
  • duxu24
  • duxu24
  • 2017年06月30日 21:12
  • 2617
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将数据划分为训练数据及测试数据(div_train_val.py 解析)
举报原因:
原因补充:

(最多只允许输入30个字)