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
Jetson ARM SeetaFace编译的更多相关文章
-
Genymotion模拟器安装ARM架构编译应用失败解决方案
我们在安装一些应用到Genymotion模拟器会提示:adb: failed to install xx.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: ...
-
人脸识别引擎SeetaFace编译 ubuntu
00.SeetaFace简介 SeetaFace Engine is an open source C++ face recognition engine, which can run on CPU ...
-
PC和ARM平台编译Qt的命令
编译for PC 的Qt过程是: (1)qmake -project (qmake命令,用于创建hello.pro,将所有的文件编译成一个与平台无关的工程文件).(注意:按照前面步骤安装好Qt环境之后 ...
-
ARM MDK 编译产生:RO、RW和ZI DATA说明
1.比如编译一个工程文件,产生如下提示信息: Program Size: Code=18938 RO-data=622 RW-data=124 ZI-data=7724 RO段.RW段和ZI段 要了解 ...
-
STM32中ARM系列编译工具链的编译宏选择(__CC_ARM、__ICCARM__、__GNUC__、__TASKING__)
一 前言 stm32 f103中.关系到一个选择何种编译宏的问题.这里就梳理一下吧. 二 正文 1 在 core_cm3.h 文件中,有如下代码: #if defined ( __CC_ARM ) ...
-
Arm Qt编译Qt例程出错 GLES3/gl3.h: No such file or directory 解决方法
工作环境 PC:Ubuntu18.04QtCreator: 4.8.2交叉编译环境:野火imxull6开发板提供的 5-编译工具链->qt交叉编译工具 在之前博客配置成功的交叉编译环境,编译Qt ...
-
2. Jetson TX2--python3下编译安装opencv3.4
https://cloud.tencent.com/developer/article/1327273 jetpack3.2自带了opencv3.3,但是只提供了python2.7的编译版本,所以也只 ...
-
博创arm板编译内核makefile不兼容问题解决
导致这种结果的是:Make工具对低版本内核的Makefile一些旧的规则兼容不好,我们只需修改对应的Makefile. 改1:: 原始的: 大概在 1503行 / %/: prepa ...
-
jsoncpp linux平台编译和arm移植
下载 http://sourceforge.net/projects/jsoncpp/ 或者 http://download.csdn.net/detail/chinaeran/8631141 Lin ...
随机推荐
-
分享一本Swift好书
http://yuedu.baidu.com/ebook/6f6c3b1ef01dc281e43af000?pn=1&rf=http%3A%2F%2Fyuedu.baidu.com%2Febo ...
-
LightOJ1060 nth Permutation(不重复全排列+逆康托展开)
一年多前遇到差不多的题目http://acm.fafu.edu.cn/problem.php?id=1427. 一开始我还用搜索..后来那时意外找到一个不重复全排列的计算公式:M!/(N1!*N2!* ...
-
JAVA缓存技术之EhCache
最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...
-
contentType,pageEncoding,charset,setCharacterEncoding
contentType,pageEncoding,charset,setCharacterEncoding HTML中的meta标签,以及HTTP Header. -------------字符集.字 ...
-
MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
-
GDB的non-stop模式
线程调试必杀技 - GDB的non-stop模式 作者:破砂锅 开源的GDB被广泛使用在Linux.OSX.Unix和各种嵌入式系统(例如手机),这次它又带给我们一个惊喜. 多线程调试之痛 调试器 ...
-
(转载)oracle 在一个存储过程中调用另一个返回游标的存储过程
原文链接:http://www.jb51.net/article/20160.htm 实际项目当中经常需要在一个存储过程中调用另一个存储过程返回的游标,本文列举了两种情况讲述具体的操作方法. 第一种情 ...
-
.class文件查看
十六进制查看(不仅class文件可以看,其他文件格式也可以) hexdump -C XXX.class #注意C是大写(小写c则输出十进制) 反汇编查看 javap -c XXX.class java ...
-
Flutter Inspector 功能:Toggle Platform,Show Debug Paint,Show Paint Baselines
Flutter Inspector 功能 说明 Toggle Platform 切换操作系统(Android.iOS) Show Debug Paint Show Paint Baselines Wi ...
-
标准C库函数
标准库函数由15个头文件组成 1.math.h 1.1 绝对值函数 1.2 幂函数.开平方函数 1.3 指数函数.对数函数 1.5 三角函数 注意参数范围: 1.6 取整函数.取余函数 2.字符串处理 ...