您的位置:首页 > 其它

UMDFaces数据集csv文件处理工具

2016-12-05 09:25 573 查看

UMDFaces数据集:

该数据集包含367920张人脸,分别类属于8501个事件类别。提供的人脸信息包括,人脸框,人脸姿势,(yaw,pitch,roll),21个关键点,性别信息等。由于图片尺度,方向等的问题,使得该数据集不适合做人脸检测的训练,适合做人脸识别。

数据集下载地址,数据集下载地址

该数据集,主要是使用GoogleScraper从网络爬下的图片,作者使用了DP2MFD model(Deep Pyramid Deformable Parts Model for Face Detection)和AMT(AmazonMechanical Turk)详情参考

数据集csv文件处理工具

数据集中包含了三个文件,Umdfaces_files_bc1,Umdfaces_files_bc2,Umdfaces_files_bc3,文件里面

其中文件夹包含了umdfaces_batch1_ultraface.csv 文件

文件里面包含信息: detection confidences, face bounding boxes, ultraface fiducial points, pose, and gender

[b]如今我们需要解析这个文件,使它生成我们需要的数据:人脸特征点,人脸检测框,人脸姿态,和性别.[/b]

处理代码如下:

void CprocessImg::dataForUMDFace(string file, string dst)
{
ifstream infolder;
infolder.open(file);
if (infolder.fail())
return;
string b;
int np = 0;
getline(infolder, b);
while (getline(infolder, b))
{
if (np % 100 == 0)
cout << "文件正在处理中。。。。:" << np << endl;
np++;
vector<string> result;
//数据排序:
//result[1],表示图片名称
//result[4~7] faceRect;
//result[8~10] 角度
//result[11~73] x,y,v
//result[74~75] 性别
for (int k = 0; k < 76; k++)
{
int a = b.find_first_of(",");
string out = b.substr(0, a);
result.push_back(out);
b = b.substr(a + 1);
}
string fileName = result[1];
int pos = fileName.find_last_of("/");
//      cout << pos << endl;
string folderName = fileName.substr(0, pos); //获取文件夹
string picName = fileName.substr(pos + 1);  //获取文件名
//创建文件夹
string fder = dst + "/" + folderName;
_mkdir(fder.c_str());
//创建人脸框文件
string faceRect_file = dst + "/" + fileName.replace(fileName.find_last_of("."), 4, ".txt");
ofstream out;
out.open(faceRect_file);
out << result[4] << " " << result[5] << " " << result[6] << " " << result[7] << endl;
//创建特征点文件
string faceLandmarks = dst + "/" + fileName.replace(fileName.find_last_of("."), 4, ".pts");
out.close();
ofstream fl;
fl.open(faceLandmarks);
fl << "version: " << 1 << endl;
fl << "n_points: " << 21 << endl;
fl << "{" << endl;
for (int k = 0; k < 21; k++)
{
fl << result[3 * k + 11] << " " << result[3 * k + 12] << endl;
}
fl << "}" << endl;
fl.close();
//创建姿态角文件
string facePos = dst + "/" + fileName.replace(fileName.find_last_of("."), 4, "_pos.txt");
ofstream posOut;
posOut.open(facePos);
posOut << result[8] << " " << result[9] << " " << result[10];
posOut.close();
//创建性别文件
string faceSet = dst + "/" + fileName.replace(fileName.find_last_of("."), 4, "_sex.txt");
ofstream posSet;
posSet.open(faceSet);
posSet << result[74] << " " << result[75];
posSet.close();
}
}


代码验证通过,同时为了方便大家更好的去利用这个数据库,我已经生成可执行文件(win 7版本),有需要的可以在我的资源下载

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UMDFace 数据 csv