因为在之前的数据集上,采用cnn的方法训练效果一直不是很理想,而且原始的数据集也只提供了眼睛部位标准化后的数据和相关的初识数据,缺少我们想得到的人的整张脸等信息。而且对于正在申请的另外一个包含人脸信息的数据集也迟迟没有得到回复,因此我们尝试打算自制数据集进行训练。
数据集制作过程说来也简单:启动笔记本的摄像头,采用之前的clmtrackr.js库实现人脸的检测,并且分割出人眼图像位置,然后将采集到的人眼图像和整张人脸图像以json格式存储下来作为数据使用(同时存储的还有眼睛部位图像大小相对于整副画面的比例信息等),而对应的数据标签则通过眼睛注释着鼠标位置,通过敲击空格键来收集当前的注释屏幕点位信息。完整的数据结构如下所示:
-数据集
-train训练数据
-x0,图像数量以及图像的长宽和维度信息
-x1,将所有三维眼部图像拉伸存储为一维
-x2,同理存储所有的人脸图像
-x3,比例,角度等计算信息
-validation验证数据
-v0,同x0
-v1,同x1
-v2,同x2
-v3,同x3
完成数据集制作后,接下来就是相关的训练工作,网络结构保持之前的结构不变,在收集了100张训练数据的情况下,训练效果如下图所示(输出的loss函数为均方误差)
之后的工作为如何将在python上训练好的model,移植到tensorflow.js上运行,这一部分可以参照队友的博客