人脸检测实战

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 人脸检测实战

人脸检测算法是在一幅图片或者视频序列中检测出来人脸的位置,给出人脸的具体坐标,一般是矩形坐标,它是人脸关键.、属性、编辑、风格化、识别等模块的基础。

学术界用来衡量人脸检测器性能的benchmark是[Wider_Face1(http://shuovana1213.me/Wider_Face/Wider_Face Results.html),该数据集主要明确了人脸检测器面对的一些挑战,包括scale、pose、occlusion、极端表情的人脸、(带装扮的人脸)以及过度曝光的人脸等。

进入DamoFD的项目主页,DamoFD的modelcard介绍了模型的背景,讲解了DamoFD的算法原理及其GitHub上的开源Repo,也进一步介绍了模型的使用方式和使用范围,包括训练和推理的代码范例、模型使用的目标场景,同时对模型的局限性以及可能性偏差都进行了介绍。

最后还给出了在Wider_Face验证集上的评估结果。同时,该Repo还提供了人脸相关模型,大家可以点击进行体验。

页面右上角提供了demo service的功能,可以上传自己的图片或者使用预先定义好的图片进行测试,即可以体验DamoFD的人脸检测效果。

启动Notebook实例,选择GPU环境,进入实战环节。

首先进行推理的实战。推理的代码包含三个部分:

第一部分是import相关的三个模块(从项目主页直接复制代码运行即可)。第一个模块是调用OpenCV包进行图片的读取和存储,另外还需要调ModelScope内置的两个模块pipeline和test。之后实际的推理过程中只需3行代码。

首先需要实例化人脸检测,pipeline输入有两个参数,分别是明确任务(即face detection)以及modelID(在FD项目主页左上角)。

输入imagePath(URL的image或者绝对路径的imagePath皆可),将imagePath 喂给dection pipeline,得到的result会返回图片中人脸的bondingbox和对应的score值。

接下来进行可视化环节。

可视化仅有6-7行代码。首先是ModelScope两个的module,即draw_face _detection_result和load_image,分别是根据检测方案的位置画检测框以及读取图片。

将读写的URL图片存储到本地,之后根据result结果可以画出带检测框的人脸图片。最后用matplot包进行plot,即可得到检测出的结果——检测框和对应的score值。score值是检测框的置信度,分数越高代表人脸的可能性越大。

下文将进入训练流程。

首先import:OS包主要用于拼接路径;tempfile负责生成临时的文件夹,用于存储训练好的模型;Msdataset函数主要用加载ModelScope上的数据集,ModelScope已提供了很多数据集,人脸检测最权威的数据集是Wider_Face,在主页内搜索数据集并复制其ID即可下载对应数据集。

trainer和build_trainer是ModelScope内置的两个标准化训练流程函数。

snapshot_download会下载对应模型的模型文件,可以在主页中查看。

其中DamoFD_lms.py里面介绍了DamoFD的结构以及训练的参数,可以将参数喂给trainer用于训练网络。模型文件参数是Pytorch_model.pt,是已经训练好的模型,inference阶段可以直接调用该模型。

训练的第一步流程为Msdataset,输入数据集ID,将namespace(在每个数据集的左上角)放到第一个参数的位置,可以自动加载数据集。

本次实战采用了Mini数据集,如果想要使用Wider_Face全集,去掉后缀的mini即可。下载好数据集后,会得到数据集的train_root和val_root,分别是训练集的图片和validation级的图片所在位置。

snapshot_download将DamoFD的模型文件下载到cache_path,得到绝对路径,同时tempfile负责生成文件夹,用于存储最后生成的模型。_cfg_modify_fn可以修改原先的config相关参数,比如将checkpoint的存储间隔设为1,log的print间隔设为10,评价的间隔设为1(每个GPU上的CPU数目,加快dataload的速度)。

实例化一个trainer,进行训练。

cfg_file是下载的DamoFD的模型文件加对应的配置文件,tmp_dir是生成的临时存放模型输出的文件夹,train_root和val_root是训练集和验证集的图片路径,total_epochs是定义好的训练的epoch的数量。

实例化build_trainer,输入两个参数,一个是trainer的pipeline,另一个是预先输入的configfile,执行trainer.train()即可开启训练。

下文将进入模型评估演示。需要使用一个名为easyface的外部GitHub Repo。

easyface围绕DamoFD提供了脚本,包括单图片推理、多图片推理以及评测模型训练和模型微调。本文将介绍图片推理和评测。

首先,仿照上图目录结构建测试集,也可以直接在ModelScope上下载。

因为使用了GitHub的Repo,需要起一个terminal进行clone。

上图为相关代码。其中最后一行import是评测相关用的函数,thresh_num和count_curve是计算voc_ap的超参,pr_curve用于画precision recurve,recurve之后会挨个读取image_directory中的每个image,实例化人脸检测的pipeline,将image输入之后返回result。如果绑定box,则随机初始化5个0作为pred_info。

后续是voc_ap的检测过程,最后打印出score。

如果想要测试自己训练好的模型,可以将模型路径传入ft_path参数,让face detection里的detector module直接load参数,即可进行测试。

复制代码,运行。

编辑切换为居中

最终输出如上图所示。

相关文章
|
缓存 PHP Nacos
nacos常见问题之服务升级后nacos控制台看到都是不可用重启nacos后恢复如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
830 4
|
9月前
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
368 23
|
10月前
|
数据采集 供应链 搜索推荐
商业案例 I AllData数据中台商业版落地实践
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
算法 关系型数据库 MySQL
MySQL高级篇——排序、分组、分页优化
排序优化建议、案例验证、范围查询时索引字段选择、filesort调优、双路排序和单路排序、分组优化、带排序的深分页优化
MySQL高级篇——排序、分组、分页优化
|
JavaScript 前端开发
HTML 表单和输入与按钮的联动方法汇总
在HTML中,通过JavaScript可以轻松实现表单与输入、按钮的互动。本文介绍了基本表单结构,并展示了如何用JS处理按钮点击、表单提交、动态禁用按钮、表单验证以及使用AJAX和jQuery简化代码等技巧,帮助你更好地控制和优化表单功能。
|
数据可视化 Linux 程序员
仅需几步就可快速实现SFTP的免密传输
在程序员的日常工作中,通过FTP/SFTP等工具在服务器之间进行文件的交互是一个基操技能,无论是编码开发过程中的跨系统传输文件,还是生产部署过程中的数据索取,熟练掌握这一技能,可以大大的提高开发效率。当然,现在也有很多终端模拟器提供了可视化的文件传输功能,比如XFTP、WINSCP、MobaXterm、Finalshell等等。
262 2
|
机器学习/深度学习 数据采集 算法
【OpenVI—论文解读系列】ICLR 2023 | 开源轻量人脸检测DamoFD
本文介绍我们被机器学习顶级国际会议ICLR 2023接收的论文 “DamoFD: Digging into Backbone Design on Face Detection" 论文链接:https://openreview.net/pdf?id=NkJOhtNKX91 开源代码:https://github.com/ly19965/EasyFace/tree/master/face_project/face_detection/DamoFD
1247 2
|
监控 容灾 测试技术
如何保障线上产品质量?
如何保障线上产品质量?
465 0
|
机器学习/深度学习 PyTorch 算法框架/工具
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
576 0
|
人工智能 算法 搜索推荐
BIRCH算法全解析:从原理到实战
BIRCH算法全解析:从原理到实战
740 0