SeetaFaceEngine安装和测试

2023-10-27

一.介绍

必须安装好opencv。
SeetaFace人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块,
即:人脸检测模块SeetaFace Detection、面部特征点定位模块SeetaFace Alignment以及人脸特征提取与比对模块 SeetaFace Identification。
主要功能:
1.人脸检测模块(SeetaFace Detection): 采用了一种结合传统人造特征与多层感知机(MLP)的级联结构,在FDDB上达到了84.4%的召回率(100个误检时),并可在单个i7 CPU上实时处理VGA分辨率的图像。
2.面部特征点定位模块(SeetaFace Alignment): 通过级联多个深度模型(栈式自编码网络)来回归5个关键特征点(两眼中心、鼻尖和两个嘴角)的位置,在AFLW数据库上达到state-of-the-art的精度,定位速度在单个i7 CPU上超过200fps。
3.人脸识别模块(SeetaFace Identification): 采用一个9层的卷积神经网络(CNN)来提取人脸特征,在LFW数据库上达到97.1%的精度(注:采用SeetaFace人脸检测和SeetaFace面部特征点定位作为前端进行全自动识别的情况下),特征提取速度为每图120ms(在单个i7 CPU上)。

二.前提

ubuntu14.04
opencv3.1.0

三.下载解压和安装cmake3.1

(1)下载解压
https://github.com/seetaface/SeetaFaceEngine
下载好后,解压到用户目录

unzip SeetaFaceEngine.zip #注意自己的版本

(2)安装升级cmake3.1

cmake --version #如果版本低于3.1,需要升级。14.04的是2.8
apt-get autoremove cmake  #卸载低版本cmake
cd /usr
wget https://cmake.org/files/v3.1/cmake-3.1.3-Linux-i386.tar.gz
tar zxvf cmake-3.1.3-Linux-i386.tar.gz  #解压自己下的版本
ln -s /usr/cmake-3.1.3-Linux-i386/bin/* /usr/bin/  #创建链接

cmake --version#查看升级是否成功

四.编译和测试

1.编译测试FaceDetection

mkdir build #在FaceDetection目录中
cd build
cmake ..
make -j${npoc}
cd ..


#若无问题,进入到测试
./build/facedet_test imagefilePath ./model/seeta_fd_frontal_V1.0.bin  #imagefilePath是640*480图片的路径

如果提示:段错误(核心已转储)
解决办法:1.查看路径有无问题。2.重启。
效果
这里写图片描述
2.编译测试FaceAlignment

mkdir build

编译之前,将FaceDetection中的/include/face_detection.h和/build/libseeta_facedet_lib.so
拷贝到/FaceAlignment/build文件夹下。
然后在FaceAlignment>src>test中face_alignment_test.cpp中

int main(int argc, char** argv)
{
// Initialize face detection model
seeta::FaceDetection detector("./build/seeta_fd_frontal_v1.0.bin"); //修改路径
//修改成这个路径,把seeta_fd_frontal_v1.0.bin放到build中。原版是基于windows的。
detector.SetMinFaceSize(40);
detector.SetScoreThresh(2.f);
detector.SetImagePyramidScaleFactor(0.8f);
detector.SetWindowStep(4, 4);

保存退出。
shell

cd build
cmake ..
make

如果一切正常,
先要拷贝/FaceDetection/build文件夹下的seeta_fd_frontal_v1.0.bin文件到FaceAlignment的build中。
shell

cd ..
./build/fa_test

运行效果,可以提取出特征值。
这里写图片描述
3.编译测试FaceIndentification
shell

mkdir build

(1)添加文件
将libseeta_facedet_lib.so(/FaceDetection/build),libseeta_fa_lib.so(FaceAlignment/build),
seeta_fd_frontal_v1.0.bin(/FaceDetection/model),seeta_fa_v1.1.bin(FaceAlignment/model),添加到FaceIndentification/build中
将face_alignment.h(FaceAlignment/include),face_detection.h(/FaceDetection/include)添加到FaceIndentification/include中

(2)修改文件
打开FaceIdentification/src/test/CMakeLists.txt将文件替换成如下内容

aux_source_directory (. SRC_LIST)
link_directories(${PROJECT_BINARY_DIR})
message(${SRC_LIST})
# add external libraries
find_package(OpenCV REQUIRED)
include_directories(${seeta_facedet_lib_INCLUDE_DIRS} ${seeta_fa_lib_INCLUDE_DIRS})
list(APPEND seeta_fi_lib_required_libs ${OpenCV_LIBS} seeta_facedet_lib seeta_fa_lib)
enable_testing ()
foreach (f ${SRC_LIST})
  string(REGEX REPLACE "[.]cpp" ".bin" BIN ${f})
  add_executable(${BIN} ${f})
  #target_link_libraries(${BIN} viplnet ${OpenCV_LIBS} seeta_facede_lib seeta_fa_lib)
  target_link_libraries(${BIN} viplnet ${seeta_fi_lib_required_libs})
endforeach ()

在 FaceIdentification/src/test/test_face_recognizer.cpp文件中添加如下内容头文件

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

在 FaceIdentification/src/test/test_face_verification.cpp文件中添加如下内容头文件

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

解压 FaceIdentification/model/seeta_fr_v1.0.part1.rar

 sudo apt-get install unrar
unrar seeta_fr_v1.0.part1.rar

(3)编译

mkdir build
cd build
cmake .. 
make  #如出错,请检查文件添加好

(4)运行

./build/src/test/test_face_recognizer.bin #3个单元测试函数
./build/src/test/test_face_verification.bin #比较两个图像相似度

效果:检测的是FaceIdentification/data/test_face_recognizer/images/compare_im下的图片相似度
0.680086

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SeetaFaceEngine安装和测试 的相关文章

  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • 二值图像中骨架上两点之间的最短路径

    我有一个二进制图像 其中包含图像的一个像素宽度骨架 您可能基本上知道 在这个二值图像中 我在骨架上有 1 在其他地方有 0 如何找到骨架上两个非零元素之间的最短距离 路径也应该在骨架本身上 我想使用 A star 算法的 C 实现 我找到了
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 深度估计的准确性 - 立体视觉

    我正在研究立体视觉 我对这个问题的深度估计的准确性感兴趣 这取决于几个因素 例如 适当的立体校准 旋转 平移和失真提取 图像分辨率 相机和镜头质量 失真越小 色彩捕捉正确 两个图像之间的匹配特征 假设我们没有低成本的相机和镜头 没有廉价的网
  • opencv_contrib编译错误:类没有成员

    我必须实现 SURF 算法来进行图像拼接 我在使用列出的库时遇到了问题here https stackoverflow com questions 33560251 opencv 3 0 0 ubuntu 14 04 nonfree non
  • 如何加速 svm.predict?

    我正在编写一个滑动窗口来提取特征并将其输入到 CvSVM 的预测函数中 然而 我偶然发现 svm predict 函数相对较慢 基本上 窗口以固定的步幅长度在图像比例上滑动穿过图像 遍历图像加上提取每个图像特征的速度 窗口大约需要 1000
  • 使用 OpenCV 进行相机校准 - 如何调整棋盘方块大小?

    我正在使用 OpenCV Python 示例开发相机校准程序 来自 OpenCV 教程 http opencv python tutroals readthedocs io en latest py tutorials py calib3d
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre
  • 相机校准:如何正确进行

    我正在尝试使用棋盘格通过众所周知的张氏方法进行校准 然后进行捆绑调整 该方法在 Matlab 和 OpenCV 中都可用 有很多经验指南 但从我个人的经验来看 准确性是相当随机的 它有时可能非常好 但有时也可能非常糟糕 实际上 只需将棋盘放
  • 如何在python 3.8中安装opencv-python

    我在 pycharm 中安装 opencv python 时遇到问题 打开 pycharm 后 我单击 设置 然后单击 项目解释器 单击 并搜索正确的模块 我开始安装 但失败了 Could not find a version that s
  • 如何选择图像插值方法? (Emgu/OpenCV)

    Emgu OpenCV的 net包装器 提供的图像调整大小功能可以使用四种插值方法中的任意一种 http www emgu com wiki files 1 4 0 0 html 596dd03d 301e d3c6 4c53 c42855
  • Alpha 混合可消除图像中的接缝

    我缝合了两张图像 但在最终图像中存在可见的接缝 我正在尝试使用阿尔法混合去除那条接缝 我知道 Alpha 混合是使用cvAddweight 函数 但在此函数参数是两个图像 alpha beta gamma和目的地 我正在服用gamma 0
  • 在 opencv 中一次性将旋转和平移结合起来

    我有一段用于旋转和平移图像的代码 Point2f pt 0 in rows double angle atan trans c trans b 180 M PI Mat r getRotationMatrix2D pt angle 1 0
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem

随机推荐

  • Linux上安装JDK、mysql、tomcat,以及将springboot项目部署到Linux上

    安装jdk 1下载jdk并放入linux系统 2解压 mkdir usr local java 创建文件夹 等下就将jdk解压到这里 tar zxvf jdk 8u181 linux x64 tar gz C usr local java
  • 最新模拟登录12306(破解12306验证码)

    最新模拟登录12306 破解12306验证码 重点 对12306验证码的破解 仅供学习交流 请勿 1 找到验证码的图片信息 2 点开headers查看 不难发现是经过base64加密的图片 但是没有请求的url 3 再查看分析发现 上面的一
  • 时序预测

    时序预测 Matlab实现CNN XGBoost卷积神经网络结合极限梯度提升树时间序列预测 目录 时序预测 Matlab实现CNN XGBoost卷积神经网络结合极限梯度提升树时间序列预测 效果一览 基本描述 程序设计 参考资料 效果一览
  • OL-CC:首个众包形式、人工生成的开源中文对话指令集

    数据是训练大模型必不可少的 燃料 但目前的数据集由不同的机构构建 存储分散 难以整合 高质量数据集的建设成本高昂 当前由于商业竞争等原因 导致数据上形成了各自为战的局面 大家无法将分散的数据整合到一起发挥更大的作用 2 月底 智源研究院发布
  • mycat2.0 分库分表报错 3002 - ERROR-CODE: [MYCAT-3002][ERR_FETCH_METADATA] MetadataManager init fail

    1 安装好mycat2 0之后 执行sql进行分库分表 DROP TABLE sys user CREATE TABLE sys user id bigint 0 NOT NULL AUTO INCREMENT COMMENT id use
  • 程序员在囧途之垃圾创业团队 .

    转载地址 https yq aliyun com articles 48175 utm campaign wenzhang utm medium article utm source QQ qun 2017316 utm content m
  • JMeter —— Jar包性能测试 完整流程教学

    本文只使用简单用例演示项目打包为Jar并上JMeter测试的整个过程 关于高级用法请看官方文档 官方文档链接 http jmeter apache org usermanual 一 下载JMeter 官网链接 https jmeter ap
  • Chisel Tutorial(五)——Bundles与Vecs

    以下内容依据2015 7 10版的Chisel 2 2 Tutorial整理 此处的Bundles Vecs就不翻译了 免得因为翻译不准引起一些误解 童鞋们有没有好的建议 lt
  • SpringBoot+Hutool工具类Excel工具-ExcelUtil实现excel文件的导入导出

    Hutool会用的话极大了简化了操作Excel的过程 提高开发效率 废话少说上代码 excel文件导出 public void downLoadFile UserDto dto HttpServletResponse response St
  • kvm虚拟化简介

    1 KVM介绍 KVM是一个基于Linux内核的虚拟机 它属于完全虚拟化范畴 从Linux 2 6 20开始被包含在Linux内核中 KVM基于x86硬件虚拟化技术 它的运行要求Intel VT x或AMD SVM的支持 一般认为 虚拟机监
  • synchronized原理分析

    Java 高并发专题之synchronized关键字 1 synchronized作为jvm关键字有三个作用域 synchronized作用于实例方法 锁住的当前对象 只有当前对象被锁住 新new出来的对象不会被锁住 synchronize
  • 基于python+MobileNetV2算法模型实现一个图像识别分类系统

    一 目录 算法模型介绍 模型使用训练 模型评估 项目扩展 二 算法模型介绍 图像识别是计算机视觉领域的重要研究方向 它在人脸识别 物体检测 图像分类等领域有着广泛的应用 随着移动设备的普及和计算资源的限制 设计高效的图像识别算法变得尤为重要
  • 代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

    一 代理IP 智能爬虫的引擎 多地区数据采集 代理IP允许企业模拟不同地区的IP地址 轻松实现多地区数据采集 这为企业洞察全球市场需求提供了重要数据支持 规避反爬虫机制 代理IP通过随机切换IP地址 规避了网站的反爬虫机制 确保数据采集的稳
  • 7.31黄金最新行情走势分析及多空交易策略

    近期有哪些消息面影响黄金走势 黄金多空该如何研判 黄金消息面解析 上周有重磅数据美联储加息的消息 黄金受其影响波动比较频繁 总体空间40美金 但这个过程跌宕起伏 收线来看黄金在连续上涨三周后迎来一根小阴十字星线 多头动能有所减弱 上周四加息
  • 【读书笔记】Java NIO (中文版) 读书笔记

    概述 这本书讲解的一般吧 主要是讲解了 缓冲区 通道 选择器 正则表达式 字符集 主要是讲解了api的使用 以及部分系统知识 比较底层了 而且大部分都是代码的源码讲解 或者api使用的讲解 太细致了 学netty之前可以看看这个 或者两者互
  • 协同过滤推荐算法

    一 协同过滤思想简介 二 协同过滤算法原理介绍 三 基于用户的协同过滤算法描述 四 基于物品的协同过滤算法 基于物品的协同过滤算法的优缺点 一 协同过滤思想简介 协同过滤 从字面上理解 包括协同和过滤两个操作 首先我们在外出和朋友吃饭的时候
  • 【操作系统】王道考研 p54-56 文件共享、文件保护、文件系统的层次结构

    文件共享 文件保护 文件系统的层次结构 知识总览 以下是文件共享的内容 基于索引结点的共享方式 硬链接 用一个count来记录在使用这个文件的用户的个数 当用户删除文件 则用户目录的该文件目录项删除 并count 1 当count 0 则系
  • 安装Oracle EE

    前期 进入自己需要设置的目录 创建文件夹 文件夹授权 mkdir xxx chmod o w oracle oradata chmod 777 oracle oradata 安装ORACLE EE 1 查找镜像 docker search
  • 【Java基础】File类 IO流

    个人简介 gt 个人主页 是Lay的主页 gt 学习方向 JAVA后端开发 gt 种一棵树最好的时间是十年前 其次是现在 gt 往期文章 Java基础 面向对象进阶 二 gt 喜欢的话麻烦点点关注喔 你们的支持是我的最大动力 目录 1 Fi
  • SeetaFaceEngine安装和测试

    一 介绍 必须安装好opencv SeetaFace人脸识别引擎包括了搭建一套全自动人脸识别系统所需的三个核心模块 即 人脸检测模块SeetaFace Detection 面部特征点定位模块SeetaFace Alignment以及人脸特征