ShapeNet:超实时人脸特征点检测与形状拟合开源库
点击我爱计算机视觉标星,更快获取CVML新技术
近日,来自德国亚琛工业大学的研究人员开源了形状拟合库ShapeNet,其可以实现超实时的人脸特征点检测,也可以用在其他任何需要形状拟合的应用场景。
开源地址:
https://github.com/justusschock/shapenet
ShapeNet库使用Python实现,不仅开源了预训练模型,而且对开发者来说可以很方便地使用其进行任何其他形状拟合任务的训练,只需要简单配置参数即可,这是该库最值得参考的地方。
在对应论文《Super-realtime facial landmark detection and shape fitting by deep regression of shape model parameters》中,作者描述了其算法原理,今天就跟大家一起来学习下作者的设计思想。
作者信息:
什么是形状拟合?
看下面这张图:
上图展示了对人脸、红外人脸、猫脸、医学图像器官形状拟合的例子。
相信大家对于人脸特征点检测并不陌生,其有时候也被称为人脸对齐(或者人脸配准),即定位人脸中特定位置的点,所有这些点组合在一起就描述了人脸的形状。
推广之,任何特定目标形状的描述,都可以通过形状拟合算法完成。
这很显然是一个非常有用的研究方向,比如基于人脸特征点检测的视频特效已成为各大直播平台的标配,在医学图像领域,通过形状拟合确定器官的位置,可以在放化疗手术中对人体器官进行低剂量照射保护,在机器视觉中零部件形状拟合也可以帮助进行缺陷检测等。
在计算机视觉的历史上,这是一个经典问题,大名鼎鼎的ASM、AAM、CLM都是为了解决这一问题。
目前在该领域,基于“特征提取”+“回归坐标”的方法是主流。
该文提出的ShapeNet算法也是深度学习回归的方法,其最大的优势是速度快,在上图中文字说明跑在GTX 2080 Ti上可以达到410fps,即2.4ms一帧。注意这是Python的实现,这样的速度,系统IO估计也比较占时间。
ShapeNet算法原理
算法原理比较简单,作者把形状拟合的坐标回归问题,转化为坐标PCA压缩后系数与形状整体仿射变换系数的回归问题,请看下图:
上图中显示的是预测的过程,CNN提取的特征进行回归得到PCA压缩系数和整体仿射变换系数,然后PCA压缩系数乘以PCA特征向量得到人脸形状,并进行包含平移、旋转、缩放的仿射变换即得到了最终的特征点位置坐标。
在训练的时候对形状进行PCA压缩和仿射变换归一化,记录下PCA的特征向量、每个形状的PCA系数和这些仿射变换的系数,后两者用于作为深度学习系统的回归的标签。
该算法使用了形状中特征点的位置坐标信息其实是高度冗余的特性,通过PCA压缩大大降低了需要预测的数据量。
作者使用的特征提取网络各层的说明,共9层:
实验结果
既然用到了PCA压缩,就不可避免涉及到压缩比例的问题,这直接决定了回归参数个数。
作者在人脸特征点检测数据集上研究了回归参数的数量对最终精度的影响,如下图:
随着参数个数的增加,精度有增加的趋势,但比较50个参数和75个参数的结果曲线,发现75个参数时精度却下降了,这可能和标注数据本身有噪声有关系。PCA压缩丢弃这些信息反而使结果更好。
下图是作者在几个形状拟合数据库上的实验结果Cumulative Error Distribution,包括人脸数据集(300W indoor 、300W outdoor)、红外人脸数据集Thermal、猫脸数据集Cats、医学图像数据集JSRT lungs、PROMISE2。
作者并没有跟其他算法比精度,很多提升精度的tricks没加,作者更加强调该库的简单、通用、高效,GTX 2080Ti 上 410fps。
但CV君以为如果有用C实现的CPU程序开源的话,更具说服力。
该库支持新数据库的训练,相信对很多工业界的朋友应该有很用。
支持CV君的分享,欢迎点下文末的“好看”~
代码地址:
https://github.com/justusschock/shapenet
官方文档:
https://shapenet.readthedocs.io/en/latest/
论文地址:
https://arxiv.org/abs/1902.03459
加群交流
关注计算机视觉与机器学习技术,欢迎加入52CV群,扫码添加52CV君拉你入群,
(请务必注明:52CV)
喜欢在QQ交流的童鞋,可以加52CV官方QQ群:928997753。
(不会时时在线,如果没能及时通过验证还请见谅)
更多CV技术干货请浏览:
"我爱计算机视觉"干货集锦分类汇总(2019年1月20日)
长按关注我爱计算机视觉
ShapeNet:超实时人脸特征点检测与形状拟合开源库相关推荐
- CPU上跑到 100 fps 的高精度PyTorch人脸特征点检测库
视学算法分享 作者 | cunjian 编译 | CV君 转自 | 我爱计算机视觉 [导读]向大家推荐一款基于PyTorch实现的快速高精度人脸特征点检测库,其在CPU上的运行速度可达100 ...
- 第二篇:基于深度学习的人脸特征点检测 - 数据与方法(转载)
https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-and-algorithm/ 在上一篇博文中,我们了 ...
- 人脸特征点检测(一)
人脸特征点检测(Facial landmark detection),即人脸特征点定位.人脸对齐(Face Alignment),是在人脸检测的基础上进行的,对人脸上的特征点例如嘴角.眼角等进行定位. ...
- PFLD:简单、快速、超高精度人脸特征点检测算法
作者 | 周强(CV君) 来源 | 我爱计算机视觉(公众号id:aicvml) 60s测试:你是否适合转型人工智能? https://edu.csdn.net/topic/ai30?utm_sourc ...
- Facial Landmark Detection(人脸特征点检测)
原文地址:http://www.learnopencv.com/facial-landmark-detection/#comment-2471797375 作为计算机视觉研究员,我们很早就开始研究人脸 ...
- 人脸特征点检测:SDM
<Supervised Descent Method and its Applications to Face Alignment>论文解读 这篇文章发表于CVPR2013,来自于CMU. ...
- 『深度学习项目四』基于ResNet101人脸特征点检测
相关文章: [深度学习项目一]全连接神经网络实现mnist数字识别 [深度学习项目二]卷积神经网络LeNet实现minst数字识别 [深度学习项目三]ResNet50多分类任务[十二生肖分类] 『深度 ...
- 第四篇:基于深度学习的人脸特征点检测 - 数据预处理
在上一篇博文中,我们整理了300-W.LFPW.HELEN.AFW.IBUG和300-VW这6个数据集,使用Python将特征点绘制在对应的图片上,人工验证了数据集的正确性,最终获得了223034个人 ...
- C++ OpenCV Contrib模块LBF人脸特征点检测
学更好的别人, 做更好的自己. --<微卡智享> 本文长度为3322字,预计阅读9分钟 前言 <OpenCV源码Android端编译,用时三天,我编了个寂寞...>文中介绍了编 ...
最新文章
- android152 笔记 2
- spark scala word2vec 和多层分类感知器在情感分析中的实际应用
- android 关于多任务下载问题
- Spark精华问答 | spark的组件构成有哪些?
- SpringCloud实战小贴士:版本依赖关系
- c语言 存储,c语言存储类
- 删除linux分区后grub,删除Ubuntu分区后GRUB救援问题!
- 拓端tecdat|R语言分位数回归Quantile Regression分析租房价格
- Julia的Dates库是重要和必要的补充!
- 韩顺平 零基础30天学会Java 学习笔记
- Redis可视化客户端管理及监控工具TreeNMS
- 如何使用IBM SPSS Statistics进行描述性分析
- 传奇衣服、翅膀、武器、怪物、NPC等外观代码计算方法与公式
- 判断三点方向(顺时针或逆时针)
- Python--发送邮件和钉钉消息
- Vue通过nginx转发后dist文件页面样式丢失
- Altium Designer绘制电路原理图——PCB图
- python2/3 opencv的fitline函数
- 力扣-进店却未进行过交易的顾客
- 斐波那契数列(剑指offer 10-I)