单人脸的关键点检测

本文介绍了一种基于PyTorch框架的人脸关键点检测方法,采用YOLOFace进行人脸检测及PFLD模型进行关键点定位,实现了高效的单人脸关键点检测。

闲暇之余做了一个简单的单人的脸部关键点检测,使用的pytorch框架,别人训练好的现成模型。其中人脸检测模型是YOLOface5(onnx格式的权重),关键点检测模型是PFLD(能检测98个关键点,是别人在原论文中用MobileOne改了骨干网训练好的,我直接拿来用了。这里感谢AnthonyF333,其训练和pytorch转onnx代码均已给出,地址为GitHub - AnthonyF333/PFLD_GhostOne最终我的项目放到了github上,地址为:https://github.com/luoyoutao/FaceKeyPoints

废话不多说,我直接上代码了(这个代码可以直接运行,不过有些路径参数需要根据自己的实际项目来更改一下)。

首先,导入需要的包:

import cv2
import time
import numpy as np
from PIL import Image, ImageDraw, ImageFont

import torch
import onnxruntime
import torchvision.transforms as transforms

下面是检测的主函数(会调用一些其他函数,在后面):

整体的流程是:

1、设置一些路径参数;

2、加载模型;

3、onnx的预热,即模型第一次预测需要花费大量的时间启动GPU,为了让真实检测时顺畅,先给模型喂一个数据。

检测的流程:

1、将原图复制一份,缩放到640*640。如果直接让输入视频或者摄像头的尺寸为640*640,那么检测就更快,且更方便。

2、送入yolo5face模型,输出shape是(12500, 16),即有12500个box,每个box16个数据,分别是center_x, center_y, w, h, threse, ....。然后将center_x, center_y, w, h转换成x1, y1, x2, y2,即对角线坐标。可能会检测到多个人脸,我这里由于检测单人的,所有直接取检测分数值最大的box,nms函数就简单得多。先sort排序,返回第一个box即可。我参考的这个项目,他是按照多人检测的,你可以根据自己的需求来即可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值