呼市网站优化,网页设计页面图片,崇安网站建设,做的的网站怎样上传简介
2020新冠爆发以来#xff0c;疫情牵动着全国人民的心#xff0c;一线医护工作者在最前线抗击疫情的同时#xff0c;我们也可以看到很多科技行业和人工智能领域的从业者#xff0c;也在贡献着他们的力量。近些天来#xff0c;旷视、商汤、海康、百度都多家科技公司研…简介
2020新冠爆发以来疫情牵动着全国人民的心一线医护工作者在最前线抗击疫情的同时我们也可以看到很多科技行业和人工智能领域的从业者也在贡献着他们的力量。近些天来旷视、商汤、海康、百度都多家科技公司研发出了带有AI人脸检测算法的红外测温、口罩佩戴检测等设备依图、阿里也研发出了通过深度学习来自动诊断新冠肺炎的医疗算法。 优质竞赛项目系列今天要分享的是
图像口罩识别
该项目较为新颖适合作为竞赛课题方向学长非常推荐 更多资料, 项目分享
https://gitee.com/dancheng-senior/postgraduate
效果展示
不多说 先上效果
实现方法
模型介绍
在深度学习时代之前人脸检测一般采用传统的、基于手动设计特征的方法其中最知名的莫过于Viola- Jones算法至今部分手机和数码相机内置的人脸检测算法仍旧采用Viola- Jones算法。然而随着深度学习技术的蓬勃发展基于深度学习的人脸检测算法逐步取代了传统的计算机视觉算法。
在人脸检测最常用的数据集——WIDER Face数据集的评估结果上来看使用深度学习的模型在准确率和召回率上极大的超过了传统算法。下图的青线是Viola- Jones的Precision-Recall图。
下图是众多基于深度学习的人脸检测算法的性能评估PR曲线。可以看到基于深度学习的人脸检测算法的性能大幅超过了VJ算法曲线越靠右越好。近两年来人脸检测算法在WIDER Face的简单测试集easy 部分上可以达到95%召回率下准确率也高达90%作为对比VJ算法在40%召回率下准确率只有75%左右。
其实基于深度学习的人脸检测算法多数都是基于深度学习目标检测算法进行的改进或者说是把通用的目标检测模型为适应人脸检测任务而进行的特定配置。而众多的目标检测模型Faster RCNN、SSD、YOLO中人脸检测算法最常用的是SSD算法例如知名的SSH模型、S3FD模型、RetinaFace算法都是受SSD算法的启发或者基于SSD进行的任务定制化改进 例如将定位层提到更靠前的位置Anchor大小调整、Anchor标签分配规则的调整在SSD基础上加入FPN等。
在我个人看来SSD是最优雅、简洁的目标检测模型因此我们实现的人脸口罩检测模型也是采用SSD的思想限于篇幅原因
在本项目中我们使用的是SSD架构的人脸检测算法相比于普通的人脸检测模型只有人脸一个类别而人脸口罩检测只不过是增加了一个类别变成戴口罩人脸和不戴口罩的人脸两个类别而已。
我们开源的模型是一个非常小的模型输入是260x260大小主干网络只有8层有五个定位和分类层一共只有28个卷积层。而每个卷积层的通道数是32、64、128这三种所有这个模型总的参数量只有101.5万个参数。下图是网络的结构图。
其中上面八个卷积层是主干网络也就是特征提取层下面20层是定位和分类层注意为了方便显示我们没有画出BN层。
训练目标检测模型最重要的合理的设置anchor的大小和宽高比笔者个人在做项目时一般会统计数据集的目标物体的宽高比和大小来设置anchor的大小和宽高比。例如在我们标注的口罩人脸数据集上我们读取了所有人脸的标注信息并计算每个人脸高度与宽度的比值统计得到高度与宽比的分布直方图如下
因为人脸的一般是长方形的而很多图片是比较宽的例如16:9的图片人脸的宽度和高度归一化后有很多图片的高度是宽度的2倍甚至更大。从上图也可以看出归一化后的人脸高宽比集中在1~2.5之间。所以根据数据的分布我们将五个定位层的anchor的宽高比统一设置为10.62, 0.42。转换为高宽比也就是约11.612.4:1
五个定位层的配置信息如下表所示 笔者使用基于Keras实现的目标检测微框架训练的人脸口罩检测模型为了避免一些网友提到的使用手挡住嘴巴就会欺骗部分口罩检测系统的情况我们在数据集中加入了部分嘴巴被手捂住的数据另外我们还在训练的过程中随机的往嘴巴部分粘贴一些其他物体的图片从而避免模型认为只要露出嘴巴的就是没戴口罩没露出嘴巴的就是带口罩这个问题通过这两个规避方法我们很好的解决了这个问题大家可以在aizoo.com体验我们的模型效果。
后处理部分主要就是非最大抑制NMS我们使用了单类的NMS也就是戴口罩人脸和不戴口罩人脸两个类别一起做NMS从而提高速度。
获取数据集
人脸口罩数据集下载
下载人脸口罩数据集的目的是利用OpenCV进行模型训练这里采用口罩数据集的正负比列为1:3即500张戴口罩的人脸图片和1500张不戴口罩的人脸图片。
数据集获取联系博主获取
解压之后将压缩包中的mask文件自行选择文件夹放置以便之后的操作。
如下
上面带口罩的人脸图像我们命名为正样本相反没带口罩的数据集合命名为负样本 如下 由于数据集解压后样本图像命名是乱序的我们要进行重命名上面两幅图是已经处理好的 下面给出示例代码
#对数据集重命名#coding:utf-8import ospath E:\\facemask\\mask\\have_mask #人脸口罩数据集正样本的路径filelist os.listdir(path)count1000 #开始文件名1000.jpgfor file in filelist: Olddiros.path.join(path,file) if os.path.isdir(Olddir): continuefilenameos.path.splitext(file)[0] filetypeos.path.splitext(file)[1]Newdiros.path.join(path,str(count)filetype) os.rename(Olddir,Newdir)count1#对数据集重命名#coding:utf-8import ospath E:\\facemask\\mask\\no_mask #人脸口罩数据集的路径filelist os.listdir(path)count10000 #开始文件名1000.jpgfor file in filelist: Olddiros.path.join(path,file) if os.path.isdir(Olddir): continuefilenameos.path.splitext(file)[0] filetypeos.path.splitext(file)[1]Newdiros.path.join(path,str(count)filetype) os.rename(Olddir,Newdir)count1
最后 更多资料, 项目分享
https://gitee.com/dancheng-senior/postgraduate