Java服务端人脸识别实战开发优化
最近有合作公司的项目需要服务端人脸识别的开发,于是就用了公司的人脸识别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服务端人脸识别实战开发优化相关推荐
- 虹软人脸识别SDK - Java服务端的那些事
最近有合作公司的项目需要服务端人脸识别的开发,于是就用了公司的人脸识别SDK开发,由于之前对服务端开发介绍的资料比较少,正好这次又做了这个项目,花了几天的开发,这里就简单分享一下个人的见解. ###影 ...
- 人人都能掌握的Java服务端性能优化方案
转载自 人人都能掌握的Java服务端性能优化方案 作为一个Java后端开发,我们写出的大部分代码都决定着用户的使用体验.如果我们的代码性能不好,那么用户在访问我们的网站时就要浪费一些时间等待服务器的响 ...
- java服务端集成极光消息推送--详细开发步骤
1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...
- 有道智云OCR图片识别文字+返回数据处理技巧(实现语言-按键精灵脚本请求识别+java服务端处理数据)
一.[开始] 1.按键精灵android手机脚本 1.1.截取手机上指定范围内的图片,通过api上传到有道智云处理后返回识别后的JSON格式数据. 1.2.代码 Import "ShanHa ...
- 那些年,我们见过的 Java 服务端乱象
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Photo by The Book Tutor @Youtube 文 | 陈昌毅 导读 查尔斯 ...
- java服务端是什么,持续更新~
Java反射机制是什么?Java反射机制是Java语言的一个重要特性.在学习Java反射机制前,大家应该先了解两个概念,编译期和运行期.编译期是指把源码交给编译器 Java反射机制在服务器程序和中间件 ...
- 西安尚学堂Java 服务端入门(资料推荐)
现在互联网上资源丰富,Java 学习并不难.贴个 Java 服务端入门和进阶指南,是给新人入门用的,包括了学习目标.需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到大家. 前言 关于如何获 ...
- 实战:人脸识别实战项目(源码共享)
首先我想问个问题:现在什么工程师最值钱? 毫无疑问,我想超 90% 的都会说:人工智能工程师.也难怪,随着近几年人工智能的发展,已经逐渐渗透到了各个领域,比如:医疗.教育.机械自动化.个性化推荐.信息 ...
- 聊一聊 Java 服务端中的乱象
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:阿里巴巴中间件 查尔斯·狄更斯在<双城记>中写道 ...
最新文章
- 易宝典文章——怎样管理Exchange Server 2013邮箱地址
- python3 多进程 同步
- Windows 10 [ ERROR ] Can not init Myriad device: NC_ERROR Error
- CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
- Segmentation fault到底是何方妖孽
- 00075_BigInteger
- 2017 ICPC沈阳区域赛
- asp.net mvc使用mysql_如何使用MySQL设置ASP.NET MVC 2?
- mysql字段作用_mysql用户表host字段作用
- 同步异步线程进程的一些思考
- 【2019上海网络赛:D】Counting Sequences I(dfs+多重集合排列)
- setupdll在CAB安装过程中的一些处理方法
- java编程导出pdf_java中根据模板生成pdf文件
- 别踩白块儿java代码_Javascript别踩白块儿(钢琴块儿)小游戏实现代码
- 冗余技术----线路冗余与生成树技术及其安全增强
- 计算机开机更新失败怎么办,windows update更新失败怎么办,详细教您windows update更新失败怎么办...
- 部署大宗商品撮合交易平台,实现高效交易与资源信息对接
- Linux(Ubuntu)之top命令
- 计算机模拟专业委员会,中国化工学会过程模拟及仿真专业委员会成立大会召开...
- 阿里云ECS服务器CentOS6.5vnc连接时报错Failed to connect to socket /tmp/dbus-xxxxxxx: Connection refused