zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Ext JS 6开发实例(三) :主界面设计
    Ext JS 6开发实例(二) :使用CMD创建应用程序
    文件夹或者文件比对工具 Beyond Compare
    LIS问题(DP解法)---poj1631(模板)
    hdoj Max Sum Plus Plus(DP)
    A* 算法详解
    hdoj1043 Eight(逆向BFS+打表+康拓展开)
    hdoj2612 Find a way (bfs)
    luoguP3366 [模板] 最小生成树
    luoguP1196(带权并查集)
  • 原文地址:https://www.cnblogs.com/makefile/p/6084784.html
Copyright © 2011-2022 走看看