106点人脸关键点-通用领域-2D

我要开发同款
匿名用户2024年07月31日
167阅读

技术信息

开源地址
https://modelscope.cn/models/iic/cv_mobilenet_face-2d-keypoints_alignment
授权协议
Apache License 2.0

作品详情

106点人脸关键点检测模型

输入一张人脸图像,实现人脸关键点检测,输出图像中人脸的106点关键点坐标和人像姿态角度。

106点人脸关键点

人脸关键点定义

模型描述

该模型主要用于人脸关键点检测和对齐任务,从包含人脸的图片中检测出人脸框、人脸关键点坐标和人脸姿态角。主要借鉴MobileNetV1和MobileNetV2的思路(如下图),MobileNetV1速度快,放在浅层用于提取特征图,MobileNetV2速度相对慢但是信息保存好,用于提取深层语义信息,模型参数量少速度快,能良好应用在移动端实时人脸关键点检测场景。

使用方式和范围

使用方式:

  • 输入包含人脸的图片,返回图像中所有的人脸框坐标,人脸关键点坐标,维度(106,2),和人头姿态角度,维度(1,3),分别是pitch,roll,yaw,pipelie支持360度人脸朝向下的检测任务。

目标场景:

  1. 美颜特效:可用于直播、长短视频人像美颜、美妆、卡通画、换脸和特效等场景。
  2. 人脸识别:可用于人脸识别和比对场景。
  3. 人脸3D重建:基于2D人脸关键点的3D人脸重建和虚拟形象。

如何使用

在ModelScope框架上,提供输入图片,即可以通过简单的Pipelie调用来完成人脸关键点检测任务。

推理代码范例

也可以参考示例代码tests/pipelies/testface2d_keypoits.py

# umpy >= 1.20
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks

model_id = 'damo/cv_mobileet_face-2d-keypoits_aligmet'
face_2d_keypoits = pipelie(Tasks.face_2d_keypoits, model=model_id)
output = face_2d_keypoits('https://modelscope.oss-c-beijig.aliyucs.com/test/images/keypoits_detect/test_img_face_2d_keypoits.pg')

# the output cotais poit ad pose
prit(output)

微调代码范例

也可以参考示例代码tests/traiers/easycv/testeasycvtraierface2d_keypoits.py

import glob
import os
import shutil
import tempfile
import uittest

import torch

from modelscope.metaifo import Traiers
from modelscope.msdatasets import MsDataset
from modelscope.traiers import build_traier
from modelscope.utils.costat import DowloadMode, LogKeys, Tasks
from modelscope.utils.logger import get_logger
from modelscope.utils.test_utils import test_level

model_id = 'damo/cv_mobileet_face-2d-keypoits_aligmet'
cfg_optios = {'trai.max_epochs': 2}

temp_file_dir = tempfile.TemporaryDirectory()
tmp_dir = temp_file_dir.ame
if ot os.path.exists(tmp_dir):
    os.makedirs(tmp_dir)

traier_ame = 'easycv'
trai_dataset = MsDataset.load(
    dataset_ame='face_2d_keypoits_dataset',
    amespace='modelscope',
    split='trai',
    dowload_mode=DowloadMode.REUSE_DATASET_IF_EXISTS)
eval_dataset = MsDataset.load(
    dataset_ame='face_2d_keypoits_dataset',
    amespace='modelscope',
    split='trai',
    dowload_mode=DowloadMode.REUSE_DATASET_IF_EXISTS)
kwargs = dict(
    model=model_id,
    trai_dataset=trai_dataset,
    eval_dataset=eval_dataset,
    work_dir=tmp_dir,
    cfg_optios=cfg_optios)
traier = build_traier(traier_ame, kwargs)
traier.trai()


results_files = os.listdir(tmp_dir)
jso_files = glob.glob(os.path.joi(tmp_dir, '*.log.jso'))
temp_file_dir.cleaup()

模型局限性以及可能的偏差

  • 输入图像存在人脸严重残缺或遮挡的情形下,模型会出现点位误检的现象。
  • 输入图像人脸存在较大旋转角度时,模型会出现点位误检的现象。
  • 高度运动模糊的情形下,模型会出现人体或点位误检的现象。
  • 模型训练时主要基于单帧图像,在视频数据上,建议进行帧间点位平滑后处理。

训练数据介绍

训练数据包含公开数据集(COCO,AI Challeger等)、自采人脸图像视频,互联网搜集人脸图像视频等并进行标注作为训练数据。

数据评估及结果

测评指标

模型在自研测试数据集上的评价指标、模型大小、参数量如下:

输入大小 POINTS-ION-NME POSE-ME MFLOPS PARAMS
96x96 0.0981 10.5242 7.456383 0.266427 M

模型效果

人体关键检测结果 人体关键检测结果

引用

@article{howard2017mobileets,
  title={Mobileets: Efficiet covolutioal eural etworks for mobile visio applicatios},
  author={Howard, Adrew G ad Zhu, Meglog ad Che, Bo ad Kaleicheko, Dmitry ad Wag, Weiju ad Weyad, Tobias ad Adreetto, Marco ad Adam, Hartwig},
  joural={arXiv preprit arXiv:1704.04861},
  year={2017}
}

@iproceedigs{sadler2018mobileetv2,
  title={Mobileetv2: Iverted residuals ad liear bottleecks},
  author={Sadler, Mark ad Howard, Adrew ad Zhu, Meglog ad Zhmogiov, Adrey ad Che, Liag-Chieh},
  booktitle={Proceedigs of the IEEE coferece o computer visio ad patter recogitio},
  pages={4510--4520},
  year={2018}
}

功能介绍

106点人脸关键点检测模型 输入一张人脸图像,实现人脸关键点检测,输出图像中人脸的106点关键点坐标和人像姿态角度。 106点人脸关键点 模型描述 该模型主要用于人脸关键点检测和对齐任务,从包含人脸

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论