正文:
1.为什么要有标签
获取了数据以后,虽然已经有了数据,但是对于监督型的训练学习任务而言,还需要有标签,标签就是正确答案(在人脸检测中即人脸/非人脸的标签)。利用正确答案可以做以下两件事。- 计算损失函数的损失值
- 计算正确率、召回率等性能指标
2.标签生成
对于分类任务,通常用独热编码来表示标签。比如说,对于手写数字识别任务,用下面表示,即利用数组数字1的所在下标位来区分。正确答案 | 独热编码 |
---|---|
0 | [1,0,0,0,0,0,0,0,0,0] |
1 | [0,1,0,0,0,0,0,0,0,0] |
… | … |
9 | [0,0,0,0,0,0,0,0,0,1] |
仿造上面的编码方式,在人脸检测的任务中,可以用 [1,0] 来表示非人脸,而用 [0,1] 来表示人脸。
在保存人脸以及非人脸的时候,需要生成一个图片名来保存所截取的图片。图片名可以根据数据集原有的图片名再加上一些特殊的标志组合而成,从而避免重复。标签的生成就是利用图片名来生成人脸和非人脸标签。下面是两张人脸和非人脸的图片名以及各自的解释,在生成人脸时,用 ‘face+序号’ 进行特殊表示;在生成非人脸时,用 ‘no_face+序号’ 进行特殊表示。
下图是一张生成标签的流程图,通过图片名这个唯一的标识就可以生成标签。
为了在获取批量的图片以及标签上能够更加方便,这里将图片名也写入文件,同时将对应的标签写入文件,这样在使用时可以通过读取文件获取图片以及对应的标签。
需要注意的一点是在利用 [图片名] 的文件时,需要将图片所在的根目录和 图片名文件读取得到的 [图片名] 进行组合才能进行对图片进行读取(也就是绝对路径)。具体见下面程序样例。
import os
images = []
with open(图片名文件) as obj:
for l in obj.readlines():
images.append(l.strip('\n'))
root_path = 图片所在目录
for i in range(len(images)):
all_path = os.path.join(root_path, images[i])
读取...
3.处理好的数据标签分享
下面是我在前几篇文章中获取的人脸/非人脸所对应的图片名以及标签,有需要的可以自行下载。人脸数据集标签
密码:fbfxg9
结语:
如果对你有帮助,就给我一个赞吧,如何有问题,可以在评论区进行讨论。
上一篇:[基于tensorflow的人脸检测] 基于神经网络的人脸检测3——WIDER FACE数据集处理
下一篇:[基于tensorflow的人脸检测] 基于神经网络的人脸检测5——神经网络的搭建