由于移动嵌入式设备本身硬件的性能的限制,在运行上需要优化检测、去重等算法,保证APP运行流畅。影响人脸检测运行速度因素主要在输入图片大小,神经网络模型选择和训练模型的数据量等。

人脸检测中使用caffe2来训练SSD模型,SSD网络分为两大部分,前半部分采用VGG16的结构去提取特征图谱(feature map),后半部分采用特征金字塔结构,在所级联的6层卷积网络上分别生成多个候选框,同时进行位置回归和物体分类任务,最后再利用非极大值抑制进行输出(Non-Maximum Suppression)。生成模型caffe.model和deploy.prototxt文件后,我们再将caffe2下SSD网络模型转换为NCNN模型。有时caffe训练的模型版本过低不能转换为NCNN模型,可以利用caffe自带的工具将旧版的caffe模型转换为新版的caffe模型后,再将新版本的模型转换为NCNN模型。在Ubuntu上运行ncnn的可执行文件caffe2ncnn,生成NCNN模型需要的param 与bin 文件。最后发布模型时对模型参数进行加密,运行ncnn提供的ncnn2mem可执行文件将param和bin文件进行二进制加密。对于处理器cortex-A7-600MHZ上运行每秒30帧的1080P图片1-10个人脸检测时间在50至300ms。

检测到人脸后通过OpenCV图像处理算法对人脸图片去重,对于不同的应用场景使用不同的去重算法:

1、Traditional Feature,采用传统图像特征(颜色直方图calcHist()和LBP直方图特征)进行比对去重。判断两张人脸的这几个相似度,同时满足大于等于阈值的话,算法认为两张人脸为同一人的从而进行去重。函数中可以设置参数hist_thres, lbp_thres, hog_thres, total_thres,hist_thres表示直方图相似度阈值,LBP相似度阈值,HOG阈值(当前未加入,设为-1)和总的阈值(大于等于前三个之和,设为-1的不统计)。 默认阈值分别为0.85, 0.8, -1, 1.7,大概能去除50%的重复人脸,误去重比较低,可以根据实际情况微调阈值。

2、Motion Match,基于运动匹配的快速去重算法,主要针对静态目标的去重,尤其是去除静态误检。通过帧差法判断前后两帧对应目标区域的像素值差异,如果小于差异阈值则认为这些像素在前后两帧的目标区域没有运动,否则认为有运动,如果运动的像素占帧目标区域全部像素的比例大于差异比率的话,则认为前后两帧对应目标运动了,不做去重。函数中可以设置参数diff_thres, diff_ratio表示像素差异阈值和差异比率。默认阈值分别为25, 0.1,主要去除静态重复目标,可以根据实际情况微调阈值。

3、Big Face Track,基于跟踪的去重算法,主要针对多人流量监控,根据跟踪的ID序列进行去重。当前采用检测置信度作为人脸的质量分数,通过跟踪算法获得每个检测到人脸的ID信息,当前基于匹配的跟踪算法要求检测的频率至少是4fps/s,对于30fps的视频流的话track_freq要设置为不大于30/4=7,表示的是每几帧做一次关键帧检测用于跟踪算法;默认的去重算法在每个新的人脸ID出现的时候上传此人脸,中间通过跟踪序列如果质量分高于之前的则进行更新,在某个人脸ID消失的时候判断人脸序列是否有更新,如果有则上传更新人脸。函数中可以设置参数track_freq, dedup_freq, keep_freq,分别表示跟踪频率,去重频率和保留频率。 dedup_freq则表示可以设置每个人脸ID每出现几次就上传一次,默认为0表示不做手动设置(当前还没启用此项功能);keep_freq用来缓存去重队列中保留的人脸ID序列对应的视频帧,如果超过这个值则进行清理工作(此处后续需要改进,有可能会出现MMZ空间不够的情况),根据系统资源做相应配置。默认值分别为5, 5, 10,去重效果依赖于检测算法和跟踪算法,可以根据实际情况微调阈值。

移动端的人脸检测及去重算法实践相关推荐

  1. Centerface:开源实用的边缘设备无锚人脸检测与对齐算法

    点击我爱计算机视觉标星,更快获取CVML新技术 昨天Github上 ywlife 开源了 CenterFace:实用的边缘设备无锚人脸检测与对齐算法,引起了很多52CV群友的关注,开源不到一天,已经1 ...

  2. 人脸检测之MTCNN算法:论文阅读及源码解析

    文章目录 前言 一.MTCNN论文阅读 1.1 论文信息 1.2 论文摘要翻译 1.3 论文核心(三级级联网络) 1.4 论文核心(级联子网络结构) 1.5 损失函数 二.源码解析 2.1 三级级联网 ...

  3. 人脸检测之DSFD算法——论文翻译(DSFD: Dual Shot Face Detector)

    论文:DSFD: Dual Shot Face Detector 原文链接:https://arxiv.org/abs/1810.10220 DSFD是2019年的人脸检测算法,来自腾讯优图实验室 先 ...

  4. Haar、pico、npd、dlib等多种人脸检测特征及算法结果比较

    原文:opencv.pico.npd.dlib.face++等多种人脸检测算法结果比较 NDP检测结果: 结果分析: Pico(Pixel Intensity Comparison-based Obj ...

  5. ubuntu端opencv人脸检测,并实现自动拍照,录视频

    现在在做毕业设计,打算用树莓派做一个监控,实现人脸检测后拍照,并录取一段30S的视频,然后继续进行人脸检测. 本次教程我们由浅入深,先讲解人脸检测部分代码. 注意:如果您有linux上opencv开发 ...

  6. 身份验证错误错误指定的句柄无效_基于 Web 端的人脸识别身份验证「实践」

    作者:沫沫 政采云前端团队 转发链接:https://mp.weixin.qq.com/s/fRDpXixnLIy9c0Uh2tMezQ 前言 近些年来,随着生物识别技术的逐渐成熟,基于深度学习的人脸 ...

  7. 人脸检测三个算法比较

    1. v540 首先实验的是v540,因为qw 说这是最好的版本 发现5k 的人脸大部分检测不到,担心自己出错误,所以实验了casia 发现casia 是可以的,但是540 不可以 2. mtcnnV ...

  8. 基于Adaboost算法的人脸检测分类器!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈锴,Datawhale优秀学习者,中山大学数学系 人脸检测属于计 ...

  9. 大盘点|轻量级人脸检测算法实现,快到没朋友的都在这里了~

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 整理:公众号@OpenCV中文网 本文仅做学术分享,如有侵权,请联系删除. 人脸检测是计算机视觉中的老 ...

最新文章

  1. Java项目:在线课程会员系统(java+Springboot+Maven+JSP+Spring+Mysql+layui)
  2. linux各文件夹的作用域
  3. 蓝牙扫描工具btscanner修复暴力扫描模式
  4. 页面引用CSS和Javascript时,内联和外置的区别
  5. 《中餐厅》弹幕数据分析,我不要你觉得,我只要我觉得!
  6. Linux(CentOS)网络流量实时监控(iftop)
  7. 产品和运营,如何做好转化分析?
  8. 关于chrome不能设置小于12px字体的问题
  9. 宏杉MacroSAN MS3000G2 SPC-1测试性价比第一
  10. 层次分析法(AHP)—以b站up主评价问题为例
  11. 计算机发展简史ppt,计算机发展简史ppt
  12. 555定时器原理及应用(报告)
  13. 大数据自学全套教程,免费分享,赶紧码起来!(纯干货系列)
  14. 巧用头条号及悟空问答引流
  15. element ui 图标样式被覆盖解决
  16. 操作系统形式化验证实践教程(2) - HOL列表与集合
  17. Linux Command—— Wildcard
  18. 【书虫录】富爸爸穷爸爸
  19. [AHOI2014/JSOI2014]骑士游戏
  20. 2019-10-25考试

热门文章

  1. 因果推断笔记——DR :Doubly Robust学习笔记(二十)
  2. NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、Rpython实现、相关应用)
  3. caffe︱cifar-10数据集quick模型的官方案例
  4. Python教程(非常好的教程)
  5. [云计算]两层网络、三层网络的理解
  6. 【JZOJ6227】【20190621】ichi
  7. Vue Cli 3 搭建一个可按需引入组件的组件库架子
  8. Excel如何利用条件格式找出数据区域中最大的几项
  9. 加强大数据应用助推 交通信息服务产业化进程
  10. I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking