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

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


目录

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

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相关依赖包

pybaseutils
opencv-python==4.5.1.48
face_recognition
tqdm
torch
torchvision

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

python create_facemask.py
# -*-coding: utf-8 -*-
"""
    @Author : panjq
    @E-mail : pan_jinquan@163.com
    @Date   : 2022-06-25 22:23:11
    @Brief  : 生成戴口罩人脸数据集
"""
import os
import sys

sys.path.insert(0, os.getcwd())
sys.path.insert(0, "libs")
from tqdm import tqdm
from facemask.wearmask import FaceMaskCreator
from pybaseutils import file_utils, image_utils


class FaceMaskDemo(object):
    def __init__(self):
        self.mask_creator = FaceMaskCreator(detect_face=True, alignment=False)

    def create_wear_mask_faces(self, image_dir, out_dir=None, vis=True):
        """
        生成戴口罩人脸数据集
        :param image_dir: 人脸图片目录
        :param out_dir:  生成戴口罩人脸输出目录
        :param vis: 是否可视化效果
        :return:
        """
        image_list = file_utils.get_files_lists(image_dir)
        for image_path in tqdm(image_list):
            image_id = os.path.basename(image_path).split(".")[0]
            image = image_utils.read_image(image_path, size=(512, None), use_rgb=True)
            mask, face_rects = self.mask_creator.create_masks(image, mask_type="random", vis=vis)
            if out_dir:
                self.mask_creator.save_image(image, mask, face_rects, out_dir, image_id)


if __name__ == '__main__':
    image_dir = "./facemask/test_image"  # 人脸图片
    out_dir = "./output"  # 生成戴口罩人脸输出目录
    fm = FaceMaskDemo()
    fm.create_wear_mask_faces(image_dir, out_dir, vis=True)

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

原图合成带口罩图


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

下载地址包含内容有:​​​​​​​戴口罩人脸数据集和生成戴口罩人脸数据

  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

  • 11
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
要训练自己的关键点检测数据集,你可以按照以下步骤进行操作: 1. 收集数据:收集具有关键点标注的图像数据集。你可以通过不同的途径获取数据,例如从公开数据集中下载、自己手动标注或者使用众包平台。 2. 数据预处理:对收集到的图像进行预处理,包括图像缩放、裁剪、旋转等操作,以确保输入图像具有一致的尺寸和方向。 3. 关键点标注:使用合适的工具对图像进行关键点标注。关键点可以是人脸上的特定位置(眼睛、鼻子、嘴巴等),也可以是其他对象上的重要点。 4. 数据增强:为了增加数据集的多样性和泛化能力,可以应用一些数据增强技术,例如随机旋转、平移、缩放、翻转等操作。 5. 划分数据集:将数据集划分为训练集和测试集,通常采用80%的数据作为训练集,20%的数据作为测试集。确保两个数据集中的图像分布和关键点标注都是随机的。 6. 模型选择和训练:选择适当的关键点检测模型,例如基于深度学习的方法(如卷积神经网络、特征金字塔网络等)。使用训练集对模型进行训练,并根据测试集的效果进行调优。 7. 模型评估:使用测试集评估训练好的模型在关键点检测任务上的性能。可以使用指标如平均欧氏距离(Mean Euclidean Distance)等来衡量关键点的准确性。 8. 模型应用:将训练好的模型用于关键点检测任务,可以在新的图像上预测关键点位置,并进行后续的应用,如人脸识别、姿态估计等。 请注意,训练一个准确的关键点检测模型需要大量的数据和计算资源,并且可能需要进行多轮迭代和参数调整才能达到理想的效果。同时,选择合适的算法和模型架构也是关键点检测任务中的重要因素之一。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI吃大瓜

尊重原创,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值