飞道的博客

戴口罩人脸数据集和戴口罩人脸生成方法

584人阅读  评论(0)

戴口罩人脸数据集和戴口罩人脸生成方法


目录

戴口罩人脸数据集和戴口罩人脸生成方法

1.戴口罩人脸数据集

(1)开源数据集-戴口罩人脸数据集

(2)生成戴口罩人脸的数据集

2.戴口罩人脸生成方法

(1)生成戴口罩人脸思路

(2)口罩模板

(3)戴口罩人脸生成Demo

(4)生成戴口罩人脸效果展示

3. 生成戴口罩数据集和源码下载

4. 戴口罩人脸检测和戴口罩识别(含Python Android源码)


目前网上已经开源了很多免费的人脸识别/人脸检测数据集,比如常见的LFW,FDDB,WIDER FACE,300W等,估计加起来都有好几个忆了。但这些人脸数据绝大部分都是不戴口罩的人脸,不能直接用于戴口罩识别中。网上也有少许开源的戴口罩人脸数据集,鄙人花了点时间,整理一下目前常见的戴口罩人脸数据集,以及戴口罩人脸数据的合成/生成方法。

  1. 包含5个数据集:  facemask-train1,  facemask-train2,facemask-train3,  synthetic-train1,synthetic-train2 ,facemask-test ,总共约有50000+的数据:
  2. 生成戴口罩人脸代码: python create_facemask.py

项目数据和生成戴口罩人脸源码下载地址:戴口罩人脸数据集和生成戴口罩人脸数据


1.戴口罩人脸数据集

(1)开源数据集-戴口罩人脸数据集

一些开源的,免费的戴口罩人脸数据集,download下来,发现这些开源的数据比较脏,有挺多也是标注错误的,需求自己清洗一下哦~

数据集 说明
virus-mask-dataset
  • 数据集总共有三类标签:mask 此人佩戴了可预防病毒口罩;nomask 未佩戴口罩;wrongmask 此人佩戴了无预防病毒作用的口罩;
  • 标注方式为:标注人体全头部+肩膀上部
  • 地址:https://github.com/hikariming/virus-mask-dataset
MaskedFace-Net
 Real-World Masked Face Datase

(2)生成戴口罩人脸的数据集

网上绝大部分人脸数据都是不戴口罩的人脸,不能直接用于戴口罩识别中。鉴于此,我们可以考虑自己合成/生成戴口罩的人脸数据,以下是鄙人收藏和整理的戴口罩人脸数据集和合成的数据集,总共约有50000+的数据:

数据集 说明
facemask-train1
  • 从网上收集的戴口罩人脸数据集(如virus-mask-dataset),约7000+张图片,并清洗了部分标注错误的样本
  • 每张图片都被标注了mask(戴口罩)和nomask(未佩戴口罩)的检测框
  • 标注格式为标准的VOC xml格式,可用于人脸检测训练数据使用
  • 已经裁剪了人脸区域,并清洗了部分标注错误的样本;其中mask(戴口罩)人脸有3000+张,nomask(未佩戴口罩)人脸有10000+张,可作为分类训练数据集,
facemask-train2
  • 从网上收集的戴口罩人脸数据集,约3500+张图片,
  • 每张图片都被标注了mask(戴口罩)和nomask(未佩戴口罩)的检测框
  • 标注格式为标准的VOC格式,但标注的人脸框比较大,不建议用于人脸检测训练数据使用
  • 已经裁剪了人脸区域图像,并清洗了部分标注错误的样本;其中mask(戴口罩)人脸有2000+张,nomask(未佩戴口罩)人脸有6000+张,可作为分类训练数据集
facemask-train3
  • 从网上收集的戴口罩人脸数据集,其中mask(戴口罩)人脸有600+张,nomask(未佩戴口罩)人脸有1700+张,可作为分类训练数据集
  • 原始图片都被裁剪为人脸图像了,所以不合适用于人脸检测;可作为分类训练数据集
synthetic-train1
  • 这是合成的戴口罩人脸数据
  • 其中mask(戴口罩)人脸有7000+张,nomask(未佩戴口罩)人脸有7000+张,可作为分类训练数据集
synthetic-train2
  • 这是合成的戴口罩人脸数据
  • 其中mask(戴口罩)人脸有6000+张,nomask(未佩戴口罩)人脸有6000+张,可作为分类训练数据集
facemask-test
  • 这是戴口罩人脸测试集
  • 其中mask(戴口罩)人脸有300+张,nomask(未佩戴口罩)人脸有300+张,用于分类模型测试

2.戴口罩人脸生成方法

(1)生成戴口罩人脸思路

  1. 首先进行人脸检测和人脸关键点检测
  2. 根据人脸关键点,计算脸颊的宽度和鼻梁位置等位置信息,同理,需要计算出口罩模板的大小、方向和位置;
  3. 最后把口罩模板贴在人脸位置上,等到合成的戴口罩人脸图片

一些戴口罩生成代码参考:

GitHub - sevenHsu/FaceMask_CelebA: Simulated masked face with dataset CelebA

给人脸戴上口罩,Python实战项目来了_我爱Python数据挖掘的博客-CSDN博客

我测试了目前网上的生成戴口罩代码,对于已经矫正的人脸,生成效果还是不错的,但如果原始人脸本身就是倾斜(歪头),这时直接使用原始代码,合成的效果就很差了,在此基础上,我做了优化工作

  1. 增加了口罩模板,共有29种不同类型的口罩模板,提供合成口罩数据的多样性
  2. 优化了口罩倾斜角度,使得人脸倾斜(歪头)时,合成的效果也不错
  3. 优化了人脸检测,采用轻量化人脸检测,加速生成速度
原始图片 原始代码生成戴口罩 优化后生成戴口罩
对于已经矫正的人脸,生成效果还是不错的,但如果原始人脸本身就是倾斜(歪头),这时直接使用原始代码,合成的效果就很差了

(2)口罩模板

口罩模板即口罩Mask图像(PNG格式),可以通过Photoshop抠图的方式,把背景去除;目前已经提供了共有29种不同类型的口罩模板,保证了口罩数据的多样性。

(3)戴口罩人脸生成Demo

安装好python相关依赖包


  
  1. pybaseutils
  2. opencv-python==4.5.1.48
  3. face_recognition
  4. tqdm
  5. torch
  6. torchvision

   代码已经自带了测试图片和数据,你也可以更换成自己的人脸数据集:

python create_facemask.py

  
  1. # -*-coding: utf-8 -*-
  2. """
  3. @Author : panjq
  4. @E-mail : pan_jinquan@163.com
  5. @Date : 2022-06-25 22:23:11
  6. @Brief : 生成戴口罩人脸数据集
  7. """
  8. import os
  9. import sys
  10. sys.path.insert( 0, os.getcwd())
  11. sys.path.insert( 0, "libs")
  12. from tqdm import tqdm
  13. from facemask.wearmask import FaceMaskCreator
  14. from pybaseutils import file_utils, image_utils
  15. class FaceMaskDemo( object):
  16. def __init__( self):
  17. self.mask_creator = FaceMaskCreator(detect_face= True, alignment= False)
  18. def create_wear_mask_faces( self, image_dir, out_dir=None, vis=True):
  19. """
  20. 生成戴口罩人脸数据集
  21. :param image_dir: 人脸图片目录
  22. :param out_dir: 生成戴口罩人脸输出目录
  23. :param vis: 是否可视化效果
  24. :return:
  25. """
  26. image_list = file_utils.get_files_lists(image_dir)
  27. for image_path in tqdm(image_list):
  28. image_id = os.path.basename(image_path).split( ".")[ 0]
  29. image = image_utils.read_image(image_path, size=( 512, None), use_rgb= True)
  30. mask, face_rects = self.mask_creator.create_masks(image, mask_type= "random", vis=vis)
  31. if out_dir:
  32. self.mask_creator.save_image(image, mask, face_rects, out_dir, image_id)
  33. if __name__ == '__main__':
  34. image_dir = "./facemask/test_image" # 人脸图片
  35. out_dir = "./output" # 生成戴口罩人脸输出目录
  36. fm = FaceMaskDemo()
  37. fm.create_wear_mask_faces(image_dir, out_dir, vis= True)

(4)生成戴口罩人脸效果展示

原图 合成带口罩图


3. 生成戴口罩数据集和源码下载

下载地址包含内容有:

https://mp.weixin.qq.com/s/4dtC9CeP50M-3nn3xel1Ow

  1. 包含5个数据集:  facemask-train1,  facemask-train2,facemask-train3,  synthetic-train1,synthetic-train2 ,facemask-test ,总共约有50000+的数据:
  2. 生成戴口罩人脸代码: python create_facemask.py


4. 戴口罩人脸检测和戴口罩识别(含Python Android源码)

准备好人脸数据集和戴口罩人脸数据集,下一步就可以开始训练戴口罩识别模型,请参考:

https://panjinquan.blog.csdn.net/article/details/125428609https://panjinquan.blog.csdn.net/article/details/125428609


转载:https://blog.csdn.net/guyuealian/article/details/125069926
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场