文章前言
最近在学习百度的百度架构师手把手带你零基础实践深度学习课程,为期21天,该课程从基础的知识加案例代码的铺垫,以及作业打卡加实践作业的方式,还有老师的讲解,由浅到深的带你理解深度学习,总体来说还是不错的。另外paddle框架的paddlehub有一些对常用场景已经训练好的模型,可以直接拿来用,方便我们直接的开发。这篇文章给大家介绍一下paddlehub实现人脸的关键点检测,并给人脸图像戴上一个口罩这么一个小demo。
文章目录
paddlehub的安装
安装paddle框架
我们先创建一个虚拟环境,名字随意,我这里起的名字为paddle,python指定版本为3.6,命令如下所示。
conda create -n paddle python=3.6
- 安装paddle之前需要先安装好cuda和cudnn了,如果大家没有安装,则需要先安装这两个加速器,然后再进入到我们的虚拟环境,开始安装paddle,paddle官网地址。
#进入虚拟环境
conda activate paddle
#根据操作系统,python版本以及cuda版本安装paddle。
python -m pip install paddlepaddle-gpu==1.8.4.post107 -i https://mirror.baidu.com/pypi/simple
- 检查paddle是否安装成功,再终端输入以下命令。
import paddle
paddle.fluid.install_check.run_check()
如果出现和下图一样的信息,则说明安装成功。
安装paddlehub
- 输入下面的命令即可安装paddlehub,paddlehub的官网链接为paddlehub官网链接
pip install paddlehub --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple
- 利用pip list或者pip show paddlehub,有paddlehub信息则说明安装成功,如下图所示。
利用paddlehub生成戴口罩的图片
利用paddlehub检测脸部关键点
- paddlehub检测出来的人脸关键点如下所所示,每个数字代表每一个脸部具体的位置。
- 具体图片的关键点的检测图如下所示。
- 下面的函数将口罩将要粘贴的四个关键点给返回出来。
import paddlehub as hub
def get_key_points(img):
# 加载人脸检测模型
face_landmark = hub.Module(name='face_landmark_localization')
# 利用人脸关键点检测模型开始检测人脸图片,并将图片加载到work目录下
result = face_landmark.keypoint_detection(images=[img], batch_size=1, use_gpu=False, output_dir='./work',
visualization=True)
# result[0]['data'][0]为所有检测到的关键点
location = result[0]['data'][0]
# 左眼睛靠下的位置就是2的位置
left = int(location[2][0])
# 右眼考下的位置也就是16的位置
right = int(location[16][0])
# 鼻梁的位置
top = int(location[29][1])
# 下巴的位置
bottom = int(location[9