WiderFace数据集用于训练人脸检测模型

下载链接: http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/

该数据集可用于进行人脸检测模型的训练


如果做训练,可以点击网页中的

(国内还是百度吧,会快一些)


这个下载下来是按文件夹分好的,全都是图片。对于训练,还少label的信息,点这个下载:


Label的部分下下来后会发现,测试、训练、验证的信息被分开存放。有mat和txt两个版本。如果txt直接通过windows自带的记事本打开会发现各种数据被拧在了一起。
但是你用MatLab打开txt之后会发现格式不太一样,如下:


类似这种按行分割好的文档。可以在这里全选-复制-新建txt-粘贴。这时候就可以查看readme.txt的说明(在label那个压缩包里,被和数据打包在了一起)
发现数据分别的意义如下:

File name
Number of bounding box
x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose

也就是第一行是文件夹,文件名
第二行是图中人脸的数量
再下面是人脸信息的参数。
x1, y1, w, h, 代表人脸框的位置(检测算法一般都要画个框框把人脸圈出来)
blur:是模糊度,分三档:0,清晰;1:一般般;2:人鬼难分
express:表达(什么鬼也没弄明白,反正我训这个用不着)
illumination:曝光,分正常和过曝
occlusion:遮挡,分三档。0,无遮挡;1,小遮挡;2,大遮挡;
invalid:(没弄明白)
pose:(疑似姿态?分典型和非典型姿态)

那么这里我需要的数据就是人脸框的坐标位置,作为我的目标label。我需要知道某张图片里有多少张人脸,每张人脸分别在什么位置。
这就需要写一个脚本来让图片和这些数据配对。然后就坐下码了一个(FILEDIR根据自己实际情况修改啊):


    
    
  1. import re
  2. import linecache
  3. import os
  4. # 本程序用于将widerface数据集中label部分分离出来并且重新保存
  5. FILEDIR = “E:\Python_Files\TryWiderFace\Dataset\labels\\”
  6. file = open(FILEDIR+ ‘wider_face_train_bbx_gt.txt’, ‘r’)
  7. def count_lines(file):
  8. lines_quantity = 0
  9. while True:
  10. buffer = file.read( 1024 * 8192)
  11. if not buffer:
  12. break
  13. lines_quantity += buffer.count( ‘\n’)
  14. file.close()
  15. return lines_quantity
  16. lines = count_lines(file)
  17. for i in range(lines):
  18. line = linecache.getline(FILEDIR+ ‘wider_face_train_bbx_gt.txt’,i)
  19. if re.search( ‘jpg’, line):
  20. position = line.index( ‘/’)
  21. file_name = line[position + 1: -5]
  22. folder_name = line[:position]
  23. print(file_name)
  24. i += 1
  25. face_count = int(linecache.getline(FILEDIR+ ‘wider_face_train_bbx_gt.txt’, i))
  26. for j in range(face_count):
  27. box_line = linecache.getline(FILEDIR + ‘wider_face_train_bbx_gt.txt’, i+j+ 1) #x1, y1, w, h, x1,y1 为人脸框左上角的坐标
  28. po_x1 = box_line.index( ’ ‘)
  29. x1 = box_line[:po_x1]
  30. po_y1 = box_line.index( ’ ‘, po_x1 + 1)
  31. y1 = box_line[po_x1:po_y1]
  32. po_w = box_line.index( ’ ‘, po_y1 + 1)
  33. w = box_line[po_y1:po_w]
  34. po_h = box_line.index( ’ ‘, po_w + 1)
  35. h = box_line[po_w:po_h]
  36. coordinates = x1 + y1 + w + h
  37. # print(coordinates)
  38. if not(os.path.exists(FILEDIR + “wider_face_train\\” + folder_name)):
  39. os.makedirs(FILEDIR + “wider_face_train\\” + folder_name)
  40. with open(FILEDIR + “wider_face_train\\”+ folder_name + “\\” + file_name + “.txt”, ‘a’) as f:
  41. f.write(coordinates + “\n”)
  42. i += i + j + 1



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值