最近有合作公司的项目需要服务端人脸识别的开发,于是就用了公司的人脸识别SDK开发,由于之前对服务端开发介绍的资料比较少,正好这次又做了这个项目,花了几天的开发,这里就简单分享一下个人的见解。

影响性能的几个关键点

1、人脸检测

人脸检测接口就是可以把一张图片的人脸照片图, 经过FaceEngine的处理,检测出人人脸框信息。检测模式有两种,image模式和video模式,image模式对于人脸检测准确率比较高,但性能没有video模式高。video模式适用于在视频流模式下,在视频流模式有更快的处理性能和更好的人脸框稳定性。Video模式下,处理一帧图片在10毫秒内,所以在30帧的视频中,可以轻松的对每帧进行人脸检测。

2、特征提取

特征提取是在检测出人脸框的基础上,寻找出该人脸最具特别性的描述,该描述可被传输和保存,在ArcFace2.0中,一个特征占用1032字节,特征提取要花100-150毫秒,所以每帧都做特征提取是不可行的,但借助TrackID,可以做到一张人脸只要提取一次人脸特征。

3、人脸比对

人脸比对即特征比对,对两张人脸照片图分别提取特征,然后进行比较,获取相似度。该比对的时间是微妙级的,但在实际的应用过程中,往往是几千个特征甚至几万个特征进行比对,所以处理时间要成倍的增加。假设处理一个特征需要3微妙,那么在5万的特征库中进行比较,时间就是3*50000=150毫秒

如何应对实时性高的场景

无感是永远的痛
人脸识别经常用在一些实时性比较高的场合,比如门禁这类系统,客户往往要求我们要“无感”通过。这些实时性高的系统,通常利用网络传输视频流,服务器来处理再反馈结果,如果没有在网络,内存,CPU上做足够的优化,往往带来的就是延迟高,响应慢。
光看上面文字,大家可能没什么印象。咱们还是来一张图,一起来直观的感受一下耗时分析

咱们来算算,假设100个设备,每秒钟30帧的照片,每帧100K,那么每秒钟有多少流量?每分钟有多少?每天呢?
按照标准的算法,每个设备每秒钟流量:1*30帧*100KB=3MB
换算到分的话3MB*60秒=16MB/分
1天的话16MB*60分钟*24小时=23040MB/天
100个设备的话23040MB*100=2T/天,也就是每天有T级别流量
哇,这么一算,一般的服务器和网络怎么受得了
老规矩,咱们看图来分析下现状

如上图,照片实时上传到服务器,服务器人脸检测和特征提取,服务器特征比对,排序,结果输出。
全部交给服务器处理,服务器压力太了,让客户端分担点吧 。

优化后...


把人脸检测和特征提取全放客户端,客户端每次上传人脸特征,服务端做特征比对、排序,结果输出。

转载于:https://www.cnblogs.com/KEAIILINN/p/10729819.html

Java服务端人脸识别实战开发优化相关推荐

  1. 虹软人脸识别SDK - Java服务端的那些事

    最近有合作公司的项目需要服务端人脸识别的开发,于是就用了公司的人脸识别SDK开发,由于之前对服务端开发介绍的资料比较少,正好这次又做了这个项目,花了几天的开发,这里就简单分享一下个人的见解. ###影 ...

  2. 人人都能掌握的Java服务端性能优化方案

    转载自 人人都能掌握的Java服务端性能优化方案 作为一个Java后端开发,我们写出的大部分代码都决定着用户的使用体验.如果我们的代码性能不好,那么用户在访问我们的网站时就要浪费一些时间等待服务器的响 ...

  3. java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...

  4. 有道智云OCR图片识别文字+返回数据处理技巧(实现语言-按键精灵脚本请求识别+java服务端处理数据)

    一.[开始] 1.按键精灵android手机脚本 1.1.截取手机上指定范围内的图片,通过api上传到有道智云处理后返回识别后的JSON格式数据. 1.2.代码 Import "ShanHa ...

  5. 那些年,我们见过的 Java 服务端乱象

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Photo by The Book Tutor @Youtube 文 | 陈昌毅 导读 查尔斯 ...

  6. java服务端是什么,持续更新~

    Java反射机制是什么?Java反射机制是Java语言的一个重要特性.在学习Java反射机制前,大家应该先了解两个概念,编译期和运行期.编译期是指把源码交给编译器 Java反射机制在服务器程序和中间件 ...

  7. 西安尚学堂Java 服务端入门(资料推荐)

    现在互联网上资源丰富,Java 学习并不难.贴个 Java 服务端入门和进阶指南,是给新人入门用的,包括了学习目标.需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到大家. 前言 关于如何获 ...

  8. 实战:人脸识别实战项目(源码共享)

    首先我想问个问题:现在什么工程师最值钱? 毫无疑问,我想超 90% 的都会说:人工智能工程师.也难怪,随着近几年人工智能的发展,已经逐渐渗透到了各个领域,比如:医疗.教育.机械自动化.个性化推荐.信息 ...

  9. 聊一聊 Java 服务端中的乱象

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:阿里巴巴中间件 查尔斯·狄更斯在<双城记>中写道 ...

最新文章

  1. 易宝典文章——怎样管理Exchange Server 2013邮箱地址
  2. python3 多进程 同步
  3. Windows 10 [ ERROR ] Can not init Myriad device: NC_ERROR Error
  4. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
  5. Segmentation fault到底是何方妖孽
  6. 00075_BigInteger
  7. 2017 ICPC沈阳区域赛
  8. asp.net mvc使用mysql_如何使用MySQL设置ASP.NET MVC 2?
  9. mysql字段作用_mysql用户表host字段作用
  10. 同步异步线程进程的一些思考
  11. 【2019上海网络赛:D】Counting Sequences I(dfs+多重集合排列)
  12. setupdll在CAB安装过程中的一些处理方法
  13. java编程导出pdf_java中根据模板生成pdf文件
  14. 别踩白块儿java代码_Javascript别踩白块儿(钢琴块儿)小游戏实现代码
  15. 冗余技术----线路冗余与生成树技术及其安全增强
  16. 计算机开机更新失败怎么办,windows update更新失败怎么办,详细教您windows update更新失败怎么办...
  17. 部署大宗商品撮合交易平台,实现高效交易与资源信息对接
  18. Linux(Ubuntu)之top命令
  19. 计算机模拟专业委员会,中国化工学会过程模拟及仿真专业委员会成立大会召开...
  20. 阿里云ECS服务器CentOS6.5vnc连接时报错Failed to connect to socket /tmp/dbus-xxxxxxx: Connection refused

热门文章

  1. JSP中的九个内置对象
  2. linux 下 vi 块编辑
  3. 《WinForm开发系列之控件篇》Item18 FileSystemWatcher(暂无)
  4. 数据库的设计经验(经典)
  5. 畅通工程//最小生成树prim
  6. SDUT OJ 数据结构实验之排序一:一趟快排
  7. 参加51CTO学院软考培训,通过后感想
  8. 解密SSL流量,发现隐藏威胁
  9. 抽象类应用——模板方法模式
  10. MongoDB整理笔记の管理Replica Sets