Jetson ARM SeetaFace编译

SeetaFace简介

SeetaFace依赖于OpenCV,对于Tegra on Ubuntu,Nvidia提供libopencv4tegra并且可以使用Cuda加速。

准备工作

1.阅读OpenCV4Tegra-README.txt,下载对应板子版本的cuda与libopencv4tegra的repo文件
2.打开ubuntu的universe源:
sudo apt-add-repository universe
并且可以换成国内的ubuntu-ports源。
3.下载SeetaFace
git clone https://github.com/seetaface/SeetaFaceEngine.git
下载后在其它主机上解压出FaceIdentification/model/下的rar压缩包
4.下载cmake最新版

下述编译、安装操作在板子上执行

先安装Cuda(可选)

$ sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
$ sudo apt-get update
$ sudo apt-get install cuda-toolkit-<cuda_version>
$ cat << END >> ~/.bashrc
# For 32-bit systems (eg: most ARM systems),Add 32-bit CUDA library & binary paths:
export PATH=/usr/local/cuda-<cuda_version>/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-<cuda_version>/lib:\$LD_LIBRARY_PATH
END
$ source ~/.bashrc

OpenCV for Tegra 安装

$ sudo dpkg -i libopencv4tegra-repo-<distro>_<ocv_version>_<architecture>.deb
$ sudo apt-get update
$ sudo apt-get install libopencv4tegra libopencv4tegra-dev

编译安装cmake

遵循README

编译SeetaFace

过程与前一篇博文一致,需要修改一些地方以支持在ARM下编译(针对2016年11月份版本,之后的版本这些问题可能不复存在):
1.编译器提示找不到-msse4.1
-m打开与硬件相关的一些选项,sse便是针对x86、x86_64进行的优化,在ARM上没有这个选项,需要去掉。
在两个CMakeLists.txt中注释掉 -msse4.1 相关的行。

2.找不到xmmintrin.h
修改 FaceIdentification/src/math_functions.cpp
将 'xmmintrin.h' 替换为 'arm_neon.h',并将x86intrin.h那行注释掉。
此外还需替换掉一些数学运算函数,具体要查阅许多资料。gitbub中pull request中有人提交了补丁,在math_functions 的 添加使用arm neon写的simd_dot函数,直接替换文件即可,点击查看
3.编译时报错: #error You must enable NEON instructions (e.g. -mfloat-abi=softfp -mfpu=neon) to use arm_neon.h
方法:
在CMakeLists.txt的CMAKE_CXX_FLAGS_RELEASE中加上-mfloat-abi=hard -mfpu=neon
注意是硬浮点还是软浮点,float-abi选项有hard、soft、softfp,如果写成了softfp,而硬件支持硬浮点可能导致运行程序时找不到动态链接库的问题。(至于如何查看动态链接库是否是硬浮点,可以运行ldconfig -p|grep xxx来查看输出中是否包含hardsoft字样)
所有以后发现找不到动态链接库,而ldconfig -p能找到、ldd却找不到且设置LD_LIBRARY_PATH也无效的情况下就要考虑CPU架构不同、编译选项不同了。
4./usr/include/c++/4.8/iostream:38:28: fatal error: bits/c++config.h: No such file or directory
一种简单的解决方式:sudo apt-get install gcc-4.8-multilib g++-4.8-multilib

转载于:https://www.cnblogs.com/makefile/p/6084784.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码是调用开源SDk的FaceCore关键代码。附件中有详细的接口调用说明 FaceCore人脸识别开放平台 (SERVICE INTERFACE PLATFORM)是基于人脸检测、比对核心业务技术的服务平台。平台可为外部合作伙伴提供基于高精度人脸识别技术为基础的相关服务,例如Api、人脸识别、数据安全等。作为人脸识别的重要开发途径,FaceCore平台将推动各行各业定制、创新、进化,并最终促成新商业文明生态圈的建立。我们的使命是把人脸识别技术、规范等一系列核心技术基础服务,像水、电、煤一样输送给所有需要的合作伙伴、开发者、社区媒体、安全机构和各行各业。帮助社会各界通过使用此平台获得更丰厚的商业价值。 服务器测试接口: /api/hello/ 服务器测试接口,返回服务器当前时间。 人脸比对、识别接口: /api/facecompare/ 根据参数FaceFeature1,FaceFeature2获取两个人脸的相似度。 /api/facedetectcount/ 根据参数FaceImage,获取图像中的人脸数量。 /api/facedetect/ 根据参数FaceImage,获取图像中的人脸、眼睛位置和特征。 /api/urlfacedetect/ 根据参数Url,获取图像中的人脸、眼睛位置和特征。 人脸存储管理接口: /api/personface/similar/ Method:POST;根据参数Feature人脸特征,返回appkey存储的全部人脸相似度。 /api/personface/getall/ Method:GET;返回appkey存储的全部人脸。 /api/personface/{id} Method:GET;返回指定id人脸详细信息。 /api/personface/ Method:POST;添加一个人脸信息。 /api/personface/ Method:PUT;修改一个人脸信息。 /api/personface/{id} Method:DELETE;删除一个人脸信息。
Jetson TX2是一种强大的嵌入式计算平台,在进行交叉编译时可以简化软件开发的过程。交叉编译是指在一台主机上编写并构建适用于其他不同硬件平台的软件。 要在Jetson TX2上进行交叉编译,首先需要在主机上安装相应的交叉编译工具链。这个工具链包含了用于生成针对Jetson TX2的二进制可执行文件所需的编译器、链接器和其他必要的工具。通常可以从官方网站或开发者社区获得Jetson TX2专用的交叉编译工具链。 安装好交叉编译工具链后,就可以开始编写和构建软件了。首先,在主机上编写源代码或修改现有的代码。接下来,使用交叉编译工具链中的编译器将源代码编译成适用于Jetson TX2的目标二进制文件。可以通过指定适当的目标平台和编译选项来确保生成的二进制文件可以在Jetson TX2上运行。 在编译过程中,可能需要包含Jetson TX2特定的库和头文件。这些库和头文件可以通过Jetson TX2专用的软件开发工具包(SDK)或其他渠道进行获取。确保将这些依赖项正确地配置到编译过程中,以确保生成的二进制文件能够与Jetson TX2上的其他组件正确地交互。 完成编译后,可以将生成的二进制文件将其复制到Jetson TX2上进行测试和部署。在Jetson TX2上设置正确的运行环境,以确保可以正常运行交叉编译的软件。 总之,交叉编译是一种方便而高效的方法,可以在主机上轻松开发和测试适用于嵌入式平台如Jetson TX2的软件。通过使用适当的工具链和依赖项,可以确保生成的二进制文件能够在Jetson TX2上稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值