基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
来源:互联网 发布:在淘宝开童装店 编辑:程序博客网 时间:2024/06/05 22:32
背景
目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu CV、TensorFlow、CNTK 等等,针对 四大平台 百度AI、阿里ET、腾讯AI、科大讯飞AI 做结合。
PS:笔者的主打语言是C#,目前项目主导系统都是基于Net 系列下开发而成的。主要负责公司软件系统架构设计, 鉴于朋友圈中各位技术大牛无私分享,也是鉴于自己再专研时候遇到不少坑,希望把相关研究心得发出,为大家在coding 中减少 麻烦。稍后会把自己开源框架在博客中建立系列教程,插件化模式 自动服务 (都在实际项目中使用)。
选择的理由:四大平台目前 AI 团队算是全世界最牛的一群人,而且资金背景雄厚(AI 很烧钱!),现在四大平台 的AI有一些已经相对成熟,依靠于人家的技术,做自己的应用,应该是中小企业 在物联网行业前进的一个方向吧。
四大平台AI入口
1、百度AI https://ai.baidu.com/customer (百度AI 产品:阿波罗无人驾驶开源平台 )
2、腾讯AI https://ai.qq.com/hr/youtu.shtml(腾讯AI 产品:腾讯觅影)
3、讯飞AI http://startups.xfyun.cn/(讯飞:语音)
4、阿里云ET https://et.aliyun.com/index(阿里:城市大脑)
一、需求
1、目前我们需要通过摄像头 精准的捕获视频监控中人脸(要求精度高)
2、批量捕获人脸进行 人脸识别
3、在人脸矩形框中实时显示人员相关信息
二、技术难点
1、百度人脸识别 只是需要通过Image 图片通过开发接口发送,返回识别人物,所以前提还是要先做到人脸在视频中动态捕捉。
2、视频播放需要高效流畅播放,请求接口的效率是否影响视频监控友好展示。
三、技术选型
1、为了解决 视频中人脸动态捕捉,选用Emgu CV 是开源 框架 Open CV 的Net 版本,可以人脸精准抓取。
emgu CV 官网:http://www.emgu.com/
对于Emgu CV 的详细信息,请百度。
2、百度人脸识别,接口完善,人脸识别精准度高,可以很好的做到人脸识别。
百度人脸识别接口文档:http://ai.baidu.com/docs#/Face-Csharp-SDK/top
四、技术准备
1、到emgu cv 的官网下载 最新的emgu CV 版本,因为版本间差异较大,所以在百度搜索时候,会发现很多文章代码是无法直接copy的。
2、安装emgu cv 的最版本
请仔细查看 solution 文件夹,里面有对应solution 文件,(在windowDeskTop文件夹里面 )选择Emgu.CV.sln打开,就可以看到Emgu.CV.Example(Emgu.CV 的Demo)。
3、我们需要将 FaceDetection(人脸精准查找Demo)和VideoSurveilance(视频动态抓捕实现矩形框)两个Demo 做结合
4、到百度开发者中心注册成为开发者,并且获取开发者。
5、下载百度AI 开发平台 对应的SDK(已经封装过,可以减少开发工作量),或者直接进行Api对接。
五、实现
先上实现效果,相关个人信息如头像、还有姓名和电话都被我处理过了。
1、准备好摄像头,连接没问题就开始敲代码了。
2、在百度人脸库建立自己的人脸素材,这个要求要精准,比较适合就是员工的工牌相片,就是一寸或者两寸的照片那种。
详细方法 百度提供SDK 已经有了,就不多作介绍了。其中 自定义的 Uid(用户id,用于唯一码)、group (人才组)、userInfo(用户信息,作为人脸识别返回信息显示)比较关键。
sdk 下载地址:http://ai.baidu.com/sdk,下载完成将如图中 dll 引用到自己的类库中。
以下方法是我简单改造过了。
我做了一个简单的人脸库添加 工具,可以进行简单人脸库操作
3、选择VideoSurveilance 做改造,上代码。
其中
void ProcessFrame(object sender, EventArgs e) 方法 是关键,里面就是具体操作人脸识别具体应用。
将 FaceDetection 中的相关内容copy 到VideoSurveilance 项目中,其中 haarcascade_frontalface_default.xml 用于 人脸检测,DetectFace.cs 是具体检测人脸方法。
核心代码介绍
获取人脸矩形框,对应的xml 文件要放在根目录下(winform就是 在bin文件夹中)
DetectFace.Detect(image , "haarcascade_frontalface_default.xml", "haarcascade_eye.xml", faces, eyes, out detectionTime);
faces 就是返回的 人脸检测内容, foreach (Rectangle face in faces) 对它进行动态获取人脸,在视频中画出来就可以了
// 调用百度人脸识别接口,该方法 SDK 已经有了,我做了一些简单的封装,就是把截取到的矩形头像发送给百度去识别,这个识别是基于自己在百度建立的人脸库
FaceIdentifyModel MoreIdentifyInfo = FaceAPI.FaceIdentify(rectImage1, tb_Group.Text.Trim(), 1, 1);//人脸识别 一个人的识别效果比较好
完成上述工作,人脸识别就完成了,测试过,只要人脸库中的素材清晰,识别基本在99% 左右。
相关文章:
Build 2017 | 一文看懂微软 Build 2017 大会:让 AI 走向边缘
认识微软Visual Studio Tools for AI
VS Tools for AI全攻略
VS Tools for AI全攻略(2)低配置虚拟机也能玩转深度学习,无需NC/NV系列
原文:http://www.cnblogs.com/linbin524/p/linbin524.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
- 基于Emgu.Cv内置摄像头图片人脸/人手识别
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码
- 利用Emgu.CV实现人脸识别详解 (C#)--附源码
- Emgu.CV 人脸锁定
- C# Emgu 人脸识别(已测试)
- 网络视频监控与人脸识别
- Python基于OpnenCV实现人脸识别
- 基于Caffe的人脸识别实现
- 基于Caffe的人脸识别实现
- 基于PCA实现人脸识别
- 基于百度AI的人脸识别-Python
- 百度人脸识别集成
- KnowU 3.2 基于视频的人脸识别系统
- 基于“视频图像”的人脸识别算法
- 基于“视频图像”的人脸识别算法
- 基于“视频图像”的人脸识别算法
- MVP模式
- 谈谈微服务中的 API 网关(API Gateway)
- 微软为.NET程序员带来了最优的跨平台开发体验-WSL
- IDEA插件JRebel安装配置与破解激活详细教程
- 对于二次型损失函数在minist手写体识别中是否合理的理解
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
- CNAAC开展应用安全标识“年终特惠”活动
- python中文(汉字)转拼音
- bootstrap下拉
- java——==、equlas和null
- linux centos部署nginx前端代码
- 自学python(02)python新手错误自查
- Recycler表格(excelPanel)
- 经典算法 | ford-fulkerson算法和edmonds-karp算法