java人脸对比开源_人脸跟踪开源项目

https://github.com/xiangdeyizhang/FaceTrack_ncnn_HyperFT

https://github.com/qaz734913414/Ncnn_FaceTrack

Ncnn_FaceTrack

基于mtcnn人脸检测+onet人脸跟踪,在i7-9700k的cpu检测速度可高达250fps

开发环境

win7

vs2015

开源框架

引用

这是一个移动端快速视频多人脸跟踪的开源项目,这个项目是基于mtcnn人脸检测加上最简单的模板匹配进行人脸跟踪的,算法简单但效果显著,移动端速度可以达到150帧以上,该项目的特点是可实现多人脸跟踪。

代码算法解析

HyperFT项目的多人脸跟踪算法分三大部分:

第一部分是初始化,通过mtcnn的人脸检测找出第一帧的人脸位置然后将其结果对人脸跟踪进行初始化;

第二部分是更新,利用模板匹配进行人脸目标位置的初步预判,再结合mtcnn中的onet来对人脸位置进行更加精细的定位,最后通过mtcnn中的rnet的置信度来判断跟踪是否为人脸,防止当有手从面前慢慢挥过去的话,框会跟着手走而无法跟踪到真正的人脸;

第三部分是定时检测,通过在更新的部分中加入一个定时器来做定时人脸检测,从而判断中途是否有新人脸的加入,本项目在定时人脸检测中使用了一个trick就是将已跟踪的人脸所在位置利用蒙版遮蔽起来,避免了人脸检测的重复检测,减少其计算量,从而提高了检测速度。

算法改进的思路(加入五个关键点的跟踪)

1、在HyperFT项目中的Face类中仅定义了人脸矩形的变量,如若需要加入五个关键点的跟踪则需要在Face类中需要定义一个Bbox类faceBbox,这样Face即能保存人脸位置又能保存人脸关键点。

2、在原来的doingLandmark_onet函数的基础上重载函数,将传入的std::vector< cv::Point > &pts改为传入Bbox& faceBbox。

3、在tracking函数中修改doingLandmark_onet函数的调用

4、通过人脸跟踪中Face类中的faceBbox即可获得人脸的位置及其五个人脸关键点(main.cpp)

相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值