openFace 人脸识别框架测试

openface  人脸识别框架  但个人感觉精度还是很一般

openface的githup文档地址:http://cmusatyalab.github.io/openface/

openface的安装:

官方推荐用docker来安装openface,这样方便快速不用自己去安装那么多依赖库:

docker pull bamos/openface
docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash

也就两行代码的事情,如果自己一步步去安装的话,估计很花时间。

参考路径:http://cmusatyalab.github.io/openface/setup/

Demo简单分析:

openface的网页提供了四个demo:

第一:实时视频定位人物

具体demo位置在github clone下来的 demos/web 目录里,通过启用:

docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash -l -c ‘/root/openface/demos/web/start-servers.sh‘

来启动这个web服务,但是最新版的无法远程访问,原因是加了安全机制了,官方也提供了两种解决方法:

1)设置google浏览器的访问

用该命令启动谷歌浏览器 --unsafely-treat-insecure-origin-as-secure="example.com" ,还需要包含--user-data-dir = / test / only / profile / dir来为标志创建新的测试配置文件。

2)客户端安装ncat作为代理

export SERVER_IP=192.168.99.100 ncat --sh-exec "ncat $SERVER_IP 8000" -l 8000 --keep-open & ncat --sh-exec "ncat $SERVER_IP 9000" -l 9000 --keep-open &

具体运用查看:http://cmusatyalab.github.io/openface/demo-1-web/ 和ncat的官网

这里讲都是从linux系统来说的,我没有试验成功!

=======================================================

第二:人脸比较 Comparing two images

这个需要自己去看py代码了,不难,只是需要自己根据阈值去判断是否是同一张图片:

进入容器:

docker attach 89dfcc6
cd  /root/openface/
./demos/compare.py images/examples/{lennon*,clapton*}

阈值是0.99,阈值的确定是一件技术活,当然要自己训练多,有相应的直觉

阈值在0.99以上的可以确定为同一张图片,否则不是

这里不多说,多看代码,多训练数据,多调参,你会更有直觉去做好一件事。

===========================================================================

第三:训练分类

这个训练结果有点让我失望,一方面可能是训练图片太少了,另一方面的就是图片的预处理上出现比例失调的情况影响了训练结果

1)快速安装

因为这里涉及到docker 数据卷的问题,需要挂载一个目录到本地,所以重新启动一个容器:

docker run –v /app/ml_data/:/root/openface/data/mydata/  -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash

/app/ml_data 是本地数据;/root/openface/data/mydata 是容器里目录

2)准备数据

train_img 是放置训练的图片 others 是放置验证的图片aligned_imgage 是放置经过预处理,剪裁大小的图片generated_charaters 是放置训练后的特征数据然后我们看看图片集train_img 目录下的两个目录huge 和 yangyang 分别放如下图片

yangyang的

others图片

3)开始训练,训练集先设置huge和yangyang分别10张图片作为训练

3.1 预处理图片和分类

./util/align-dlib.py data/mydata/train_img/ align outerEyesAndNose data/mydata/aligned_images/ --size 64

也可以启用多线程处理

for N in {1..8}; do ./util/align-dlib.py data/mydata/train_img/ align outerEyesAndNose data/mydata/aligned_images/  -size 96 & done

3.2 提取特征

./batch-represent/main.lua -outDir data/mydata/generated_charaters/ -data data/mydata/aligned_images/

3.3 训练图片

./demos/classifier.py train data/mydata/generated_charaters/ 

#将会产生data/mydata/generated_charaters/ classifier.pkl的新文件名。这个文件有你将用来识别新面部的 SVM 模型

4)验证训练结果

./demos/classifier.py infer data/mydata/generated_charaters/classifier.pkl /root/openface/data/mydata/others/{hu,other,yang}*

结果如何:

我们可以看到结果:杨洋的预测基本比较准,可是other02.jpg 和other03.jpg预测成胡歌的概率在0.89以上,确实有问题。什么原因这样呢?来看一下预处理的图片也及是aligned_imgage目录里的图片:

5)第二次,增加测试集到每一个人物的图片为20张,另外删除到一两张预处理变形的图片,结果如何:

我们看到精度是有所提高的,可是远远还不足,我们试着加两张另类的照片:

就是other06.jpg和other07.jpg,来看看训练后的验证结果如何:

很失望的看到 :Predict yangyang with 0.90 confidence

把金三胖预测成杨洋的可靠性为百分之90-------无语了!

当然一张狗的图片是直接报错,说明找不到分类

这个要用到生成环境下的话,还得慎重看看源码,做一个优化;如果做一个门卫的监控识别,每增加一个人,就得提供8张图片作为训练尚可,如果提供20张以上图片确实要疯了;

如果是识别本人是挺好的,可是无法区分入侵者,这就是个问题了。

希望以后会出现一些更好的人脸识别框架

6) 最后建议你把docker容器提交一下

$ docker commit c3f279d17e0a  minsons/common:ouyangNet

如果有github账户,那随便就提交上去吧

docker login #登陆
docker push minsons/common:ouyangNet

========================================================

第四 :空间定位 

就是会在一定空间内区分出不同的人,从技术上来,最大的难处不是识别两个人的不同,而是空间定位。

空间定位是针对陌生人,在库里是没有经过训练的,可是一个人进入空间后被采集了图片,

那么这个人的采集数据跟本人的再次采集的图片之间的距离肯定更加趋近0,更好的识别出不同其他人,问题是如何实时空间3上上定位。

我们可能会考虑到的场景就是:阿里巴巴的无人零售店。

对于一个人在店里的定位和识别就可以根据人在进入零售店扫手机的淘宝账户的同时采集这个人的脸部数据,并实现实时的关联,接着再建立起人与空间的定位,

我个人的思路是:

1,进入关卡,建立淘宝账户与人的定位关联

2,空间定位的关联

3,实时采集人拿东西视觉识别统计(具体有种实现方式及采集媒介协助)

4,关联支付

不同的颜色来区别空间上的不同人

以下是部分官网的翻译:

在这个演示中:

我们首先使用OpenCV来获取,处理和显示摄像头的视频源。
dlib和OpenFace只需几行代码即可轻松获取每个人脸的检测面和嵌入。
嵌入的颜色是通过将框架中的人脸位置映射为0到1之间的数字然后使用matplotlib颜色映射来创建的。
为了将所有的图形保存在一个面板上,我们在与视频相同的OpenCV缓冲区之上绘制球体。
OpenCV只有2D绘图基元,因此我们将3D球面的点等距投影到2D,所以我们可以使用OpenCV的2D绘图基元。
由于来自视频的图像是嘈杂的,嵌入会跳过很多的球体,如果不沮丧。我们使用dlib的对象跟踪器对此进行平滑处理,以跟踪整个视频帧中的脸部平均(减弱)嵌入。
人脸检测和识别会导致“低”的帧率。帧速率可以通过仅对每几帧进行检测和识别来改善,并且使用中间的面部跟踪(这是快速的)来更新面部位置。

在自己电脑上执行:

1,启动项目

2,下载3D模型,点击这里

3,执行 demos/sphere.py 用参数 --networkModel 指向3D模型

因为设备关系没能尝试,有条件的可以试试

参考:http://cmusatyalab.github.io/openface/

githup地址:https://github.com/cmusatyalab/openface

时间: 2024-11-01 11:48:46

openFace 人脸识别框架测试的相关文章

AI人脸识别的测试重点

最常见的 AI应用就是人脸识别,因此这篇文章从人脸识别的架构和核心上,来讲讲测试的重点. 测试之前需要先了解人脸识别的整个流程,红色标识代表的是对应AI架构中的各个阶段 首先是人脸采集. 安装拍照摄像设备之后,需要在动态的场景与复杂的背景中判断是否存在人脸,并分离出这种面像.然后采集到人脸的照片. 因此采集过程是非常重要的,一需要能够采集到内容,二采集的内容能够分离出来是人脸. 而特征提取的原理是,将获取的人脸照片进行色彩矫正.光线调整,五官定位和脸部分割,将人脸的鼻子.眼睛.嘴巴等视为一个个特

人脸识别---闭集测试评价指标CMC曲线(rank)

摘要:本文主要讲解如何得到CMC曲线. CMC曲线就是算一种top-k的击中概率,主要用闭集测试.比如有n个注册样本,现在想测试性能,测试样本依次和n个注册样本算取一个距离,然后排序,看类类样本位于前top-k,最后统计得到CMC曲线.计算CMC曲线的函数代码如下: function accuracy = calrank(distance,rankvalue,info) for k = 1:length(rankvalue) count = 0; for i = 1:size(distance,

人脸识别---开集测试评价指标ROC曲线

摘要:本文主要讲开集测试指标ROC曲线. 开集测试更加符合实际的场景.一般要得到ROC曲线需要准备三个数据集,一个是gallery集,称为注册集,第二个是包含gallery集的ID的probe集,和不包含gallery集的ID的probe集,我们只需要计算类类比对分数和类间比对分数,这是一种1:n的比对方式. 代码如下: function [result,pre_FPR,pre_TPR]=drawROC(scores,labels,axisROC) [sort_scores,idx]=sortr

第三十七节、人脸检测MTCNN和人脸识别Facenet

在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haar分类器),其检测效果也是不错的,但是目前人脸检测的应用场景逐渐从室内演变到室外,从单一限定场景发展到广场.车站.地铁口等场景,人脸检测面临的要求越来越高,比如:人脸尺度多变.数量冗大.姿势多样包括俯拍人脸.戴帽子口罩等的遮挡.表情夸张.化妆伪装.光照条件恶劣.分辨率低甚至连肉眼都较难区分等.在这样复杂的环境下基于Haar特征的人脸检测表现的不尽人意.随着深度学

OpenFace库(Tadas Baltrusaitis)中基于Haar Cascade Classifiers进行人脸检测的测试代码

Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具,它的源码可以从 https://github.com/TadasBaltrusaitis/OpenFace 下载.OpenFace主要包括面部关键点检测(facial landmard detection).头部姿势估计(head pose estimation).面部动作单元识别(facial action unit recognition).人眼视线方向估计(eye gaze estimation). 编译T

人脸识别关键点/五官定位效果分析---点击图片提供下载测试,欢迎提供建议

########################################### 1:安装好了之后,打开手机网络(只是验证网络时间),并不发生数据交互. 2:如果打开黑屏,是由于安卓手机版本太高,需要手动打开摄像头权限. ########################################## 利用神经网络开发的五官定位/人脸识别关键点的开发包,跟踪效果和切合 度还是不错的,但是一定存在很多大牛,希望你们多多分享下你们自己的经 验,大家一起进步. ###############

facenet 进行人脸识别测试

1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:https://github.com/davidsandberg/facenet 2.安装和配置 facenet 我们先将 facenet 源代码下载下来: git clone https://github.com/davidsandberg/facenet.git 在使用 facenet 前,务必安装下列这些库包: 或者直接移动到 facenet 目录下,一键安装 pip install -r

【下载】推荐一款免费的人脸识别SDK

现已进入刷脸的时代,例如,人脸支付.人脸识别的门禁.人流监控等等.如何在Firefly开源板上快速搭建DEMO,并快速产品化?为了让更多产品可以用上人脸识别技术,Firefly推出了一款高性能人脸识别SDK.此SDK的人脸识别的算法,运行效率高,识别精确度高,性能优异,可以直接应用于商业产品. 下文主要讲述如何在Firefly RK3399平台部署并测试OpenFace SDK,Let's GO!      一.Firefly RK3399开源板安装Ubuntu 16.04系统固件      系

atitit.人脸识别的应用场景and使用最佳实践 java .net php

atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url api 法 1 4. 使用法 2 5. 问题解决 2 6. 测试main修改 2 7. 主要的code 2 8. 参考 3 1. 人脸识别的应用场景 图片库清理...不个要保持的图片(有人脸/ngaiz,呵呵)跟个马用的图片分割开... 人物识别::::  不同样的人脸可以识别... 物体识别::: O