将wider face数据集的标签修改为MTCNN(Tensorflow版)可用的标签格式

最近在网上看到了一个博主使用MTCNN来进行人脸识别,想要学习一下相关的知识,奈何在P-Net数据集的准备阶段就遭遇了挫折。

原博主博客在此处:MTCNN(Tensorflow)学习记录(生成PNet的人脸数据样本)

wider face的标签格式发生了改变,博主在评论里有提到这一点,比较遗憾的是他没有说明标签发生了怎样的改变。因此我在这里记录一下这个改变,以便将来不用大幅修改数据集分类的代码。

原版数据集标签是这个格式:

0--Parade/0_Parade_marchingband_1_849.jpg 449 330 571 479 

文件的每一行代表一张图片的所有数据根据。空格分隔开来看,第一项是文件的相对路径名,从第二项开始每四项为一个bbox的左上角xy坐标和右下角xy坐标,因此每一行的项数为4*n+1个,构成了一张图片完整的标签。

新版数据集标签则是这个鬼样子:

0--Parade/0_Parade_marchingband_1_849.jpg
1
449 330 122 149 0 0 0 0 0 0

虽然说格式上来看更加便于阅读了,但是他不仅在里面新加了换行,而且每个box还新加了6个维度,这就很气了。现在的标签以图片路径作为开头,直到遇到下一张图片的路径之前每一行都是一个bbox的信息。其次第二行写出了图片包含了多少个bbox,这个数是几下面就有几行bbox信息。再看box的格式,这里的box我用到的信息是前四项,分别表示左上角xy,box的宽度和高度,后面六项包括什么图片质量之类的乱七八糟的信息和我的关系不大,因此不在这里过度展开,有博主专门介绍了其含义,博客链接为:WiderFace数据集用于训练人脸检测模型

最后贴出修改标签的代码。

# 打开在wider face官网上下载的标签,原名叫wider_face_train_bbx_gt.txt
f = open('wider_face_train.txt', 'r')
# 生成新的标签
output = open('new_lable.txt', 'w')
line = f.readline()
while line != '':
    img = ''
    if line[-1] == 'g':
        img += line
        img += ' '
        n = int(f.readline())
        if n != 0:
            while n > 0 :
                box = (f.readline().strip().split(' '))[0:4]
                box[2] = str(int(box[2]) + int(box[0]))
                box[3] = str(int(box[3]) + int(box[1]))
                for b in box:
                    img += b 
                    img += ' '
                n -= 1 
    img += '\n'
    output.write(img)
    line = f.readline().strip()
f.close
output.close
print('Done!')

新的数据集里面有四张图片是没有选框的,在代码里面跑同样会报错,但我的代码会在那种图片下面加一个换行,因此还是很好发现的,将其删除就可以正常使用新的数据集标签了。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值