【原创】基于TensorFlow2识别人是否配戴眼镜的研究

随着时代的发展,电子产品种类越来越丰富,方便我们日常生活的同时,也造成了越来越多人面临近视问题,为更快速准确地统计人群的戴眼镜率,本文基于TensorFlow2,先运用爬虫爬取到了真实人脸戴眼镜与未戴眼镜的两个图片数据集,将人脸作为ROI(region of interest),在去除模糊图片后通过CNN网络进行了训练,通过对训练的模型进行加载后进行预测,实现了识别人脸是否佩戴眼镜,准确率达到了91%。

1、爬虫获得真实人脸数据集

设计一个图片爬虫程序,用于从互联网上爬取人脸戴眼镜与未戴眼镜图片数据,并对这些数据进行统一处理。分别保存戴眼镜人与未戴眼镜人的图片

 2、数据集加工

     为使数据集更精确,我们将人脸区域作为ROI(region of interest),提取人脸信息如图为截取的戴眼镜与未戴眼镜人的脸部图片,其中戴眼镜与未戴眼镜人脸图片各600张

 

其中采集到一些尺寸特别小的图片被我剔除了,最后保留的数据集当中都是清晰度相对较高的图片

3、构建网络模型

     通过CNN进行训练,由于我卷积层设置较少,且epoch次数仅设置了20,在CPU下的训练时长仅为538s,大大缩短了训练时长。

4、模型使用

     将已经训练好的深度卷积神经网络模型载入内存,这样便可以使用该模型来识别图片中的人有无佩戴眼镜,并判断图片中戴眼镜的人与未戴眼镜的人的数量。首先我将单人照片进行了一次测试,如图所示

如图所示,图中戴眼镜的人脸用红色框准确地框了出来,并在红色框上方用with_glasses(戴着眼镜)标注,图中左上角显示了戴着眼镜与未戴眼镜人的数量,戴着眼镜的数量为1。

       为验证模型对多人图片的识别效果,在此我将我与朋友们的合照做了一次测试,如图所示

 

    从图4-2所示的模型识别结果中可以看出,识别出了3个戴眼镜的人脸与1个未戴眼镜的人脸,3个戴眼镜的人脸通过红色框标出,1个未戴眼镜的人脸通过黄绿色框标出,红色框上标注着with_glasses(戴着眼镜),黄绿色框上标注着without_glasses(未戴眼镜)。由此可见此训练模型在多人同框过程中依旧能达到很好的识别效果。

     为验证模型识别准确率,我随机爬虫爬取了100张人脸清晰图片进行识别,得到结果如表所示

    调用摄像头,读取视频中的每一帧图片,并对图片进行如下处理:

1)将视频中人脸区域进行检测

2)给人脸绘制边界框

3)在显示视频中的左上角标出戴眼镜与未戴眼镜人的数量

4)实现在人脸移动过程中,人脸的边界框也能随之移动

5)按esc键退出程序

     对单人视频流识别结果如图所示,对多人视频流识别结果如图所示

      本文设计并搭建了一个是否佩戴眼镜的图片分类模型,并通过将训练好的模型载入到内存中,识别图片或视频流中的人是否佩戴眼镜,中间经历了收集样本、制作样本、运用CNN训练模型,由于卷积层设置层数较少且epoch只设置了20,训练时间很短,本人用CPU训练时长仅为538s,而识别准确率已经达到了90%以上,无论是识别图片还是视频流,都可多人同框,且不会影响到识别精度。不足之处在于,佩戴细框眼镜易识别失败,图片质量低的也可能会识别失败,后续仍需要改进。

【注】本文原创,如需转载请注明出处

 

 

 

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>