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版本),有需要的可以在我的资源下载
相关文章推荐
- Nokia短信文件处理工具
- mysqlbinlog:用于处理二进制日志文件的实用工具
- 目录中文件内容处理小工具
- Java处理Excel,csv文件
- Super CSV用于处理CSV文件的Java开源项目
- (原创)关于如何处理EXCEL( CSV)文件 导入数据库的解决方法!!
- .NET处理CSV文件 插件CSVReader
- C#获取csv文件内容对逗号和引号分隔的处理
- 获取csv文件对逗号和引号的处理
- CSV文件的转义处理
- Trac - 常见问题 - 导出的csv格式文件在Excel中处理unix时间戳
- 代码排版和文件处理工具
- vim工具介绍-----用ctags处理c++文件
- 处理CSV文件,一行行读取并存为数组(Domino + C#)
- mysqlbinlog:用于处理二进制日志文件的实用工具
- 处理媒体文件的工具ffmpeg
- 将DataSet数据集导入CSV后缀文件中
- [VB.NET]vb.net里面怎么生成一个CSV文件,并把检索出来的数据集导入CSV
- VBScript的PDF转换工具.9.处理目录和单个文件
- 基于Java的CSV格式文件处理(excel逗号分隔符文件)