移植openface到Hi3559av100开发板

提要:Openface人脸识别的原理与过程请参考:

        https://zhuanlan.zhihu.com/p/24567586
        openface是一个开源库,运行它需要一些第三方库的支持,比如opencv、dlib等

移植步骤:

  1. 安装hi3559av100交叉编译工具链并设置环境变量;
  2. 移植opencv3.4(选用3.4版本是因为3.4以上版本中的opencv_contrib 支持face,便于后续拓展;
  3. 移植dlib-19.13 (需要移植openblas库);
  4. 移植openface( 需要移植boost)。
    (注:cmake最好选用高点的版本,此处选用的是cmake-3.2.2)
    需要用到的库及模型文件:
    链接:https://pan.baidu.com/s/1Oo-FOh9Pak1gS5vXCqhi8A
    提取码:64f7在这里插入图片描述

正文:

  1. 安装3559a交叉编译链
    此步骤请按照hi3559a开发板使用说明文档进行。
  2. 移植opencv3.4;
    从opencv官网下载源码(上面为网盘路径),在目录下新建build文件下,编写编译脚本如下:
 cmake -D CMAKE_BUILD_TYPE=RELEASE  \
          -D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \
          -D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \
           -D CMAKE_INSTALL_PREFIX=/home/nfs_root/opencv_install_3559 \ #安装目录
          -D BUILD_SHARED_LIBS=ON \
          -D CMAKE_CXX_FLAGS=-fPIC \
          -D CMAKE_C_FLAGS=-fPIC \
          -D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
          -D ENABLE_PIC=ON \
          -D WITH_1394=OFF \
          -D WITH_ARAVIS=OFF \
       -D WITH_ARITH_DEC=ON \
        -D WITH_ARITH_ENC=ON \
         -D WITH_CLP=OFF \
         -D WITH_OPENMP=ON \
         -D WITH_TBB=ON \
         -D WITH_GTK=OFF \  # 此项一定要选off,默认不编译图像库,不然依赖的所有库都需要交叉编译,按照此选项编译好后对于linux系统默认不能使用imshow() waitKey()函数。
         -D WITH_CUBLAS=OFF \
         -D WITH_CUDA=OFF \
        -D WITH_CUFFT=OFF \
         -D WITH_FFMPEG=ON \
         -D WITH_GSTREAMER=ON \
         -D WITH_GSTREAMER_0_10=OFF \
         -D WITH_HALIDE=OFF \
          -D WITH_HPX=OFF \
        -D WITH_IMGCODEC_HDR=ON \
         -D WITH_IMGCODEC_PXM=ON \
         -D WITH_IMGCODEC_SUNRASTER=ON \
         -D WITH_INF_ENGINE=OFF \
         -D WITH_IPP=OFF \
        -D WITH_ITT=OFF \
         -D WITH_JASPER=ON \
       -D WITH_JPEG=ON \
       -D WITH_LAPACK=ON \
        -D WITH_LIBREALSENSE=OFF \
        -D WITH_NVCUVID=OFF \
        -D WITH_OPENCL=OFF \
        -D WITH_OPENCLAMDBLAS=OFF \
       -D WITH_OPENCLAMDFFT=OFF \
        -D WITH_OPENCL_SVM=OFF \
        -D WITH_OPENEXR=OFF \
         -D WITH_OPENGL=OFF \
        -D WITH_OPENMP=OFF \
       -D WITH_OPENNNI=OFF \
      -D WITH_OPENNNI2=OFF \
      -D WITH_OPENVX=OFF \
      -D WITH_PNG=OFF \
      -D WITH_PROTOBUF=OFF \
      -D WITH_PTHREADS_PF=ON \
      -D WITH_PVAPI=OFF \
      -D WITH_QT=OFF \
      -D WITH_QUIRC=OFF \
      -D WITH_TBB=OFF \
      -D WITH_TIFF=ON \
      -D WITH_VULKAN=OFF \
      -D WITH_WEBP=ON \
      -D WITH_XIMEA=OFF \
      ..
    
     make -j8
     make install

若一切ok的话就会正常输入lib include bin等目录到安装路径下,将安装路径下的lib目录下的所有文件拷贝到开发板的/usr/lib目录下,编写测试文件进行测试,测试文件Makefile如下:

 CC = aarch64-himix100-linux-g++  -fPIC -std=c++11 -Wall -fopenmp  -Wformat   
 NAME = test   
 FILES = test.c   
 PATH=path #安装的opencv路径 如:/home/nfs_root/opencv_install_3559
 all:$(FILES) 	$(CC) $^ -o $(NAME) -I$(PATH)/include/ -L$(PATH)/lib/  -lopencv_core  -lopencv_imgcodecs -lopencv_imgproc -lopencv_video -lopencv_highgui -lopencv_shape -lopencv_videoio -lopencv_objdetect  -lpthread -lrt -ldl -fpermissive

clean: 	rm -rf $(NAME) *.o

测试可以正常运行后再进行下一步。(请不要使用imshow(),waitKey()函数,否则会报gtk错误)
3 .交叉编译openblas和dilib
1)从网盘下载openblas 进到目录下,打开Makefile.arm64文件进行修改如下:

   ifeq ($(CORE), CORTEXA53)
CCOMMON_OPT += -march=armv8-a -mtune=cortex-a53 -O3
FCOMMON_OPT += -march=armv8-a -mtune=cortex-a53 -O3
#CCOMMON_OPT += -mcpu=cortex-a73.cortex-a53   --ftree-vectorize -ftree-vectorizer-verbose=1 
#FCOMMON_OPT += -mcpu=cortex-a73.cortex-a53    -mfpu=neon -ftree-vectorize -ftree-vectorizer-verbose=1

然后新建编译脚本build.sh 内容如下:

#!/bin/bash
#/setp:1
#CCOMMON_OPT += -march=armv8-a -mtune=cortex-a53 -O3
#FCOMMON_OPT += -march=armv8-a -mtune=cortex-a53 -O3

make TARGET=CORTEXA53 HOSTCC=gcc CC=aarch64-himix100-linux-gcc CROSS=1 CROSS_SUFFIX=aarch64-himix100-linux-gcc BINARY=64 NO_LAPACKE=1 NO_SHARED=0
make PREFIX=/home/nfs_root/opencv_install_3559 install  # 此目录为刚才安装opencv的目录,请务必保持一致

2) 编译dlib
下载好dlib后进入目录新建build目录,并新建编译脚本如下:

    cmake   -D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++  \
    -D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc\
    -D CMAKE_BUILD_TYPE=RELEASE \
   	-D CMAKE_INSTALL_PREFIX=/home/nfs_root/opencv_install_3559 \
  	-D BUILD_SHARED_LIBS=ON \
  	-D CMAKE_CXX_FLAGS=-fPIC \
  	-D CMAKE_C_FLAGS=-fPIC \
  	-D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
    -D DLIB_USE_LAPACK=ON \
  	..
 	make -j4
 	make install
  1. 交叉编译openface
    1) 编译boost 解压进入到目录下:

    修改bootstrap.sh文件指定交叉编译器路径
      PREFIX=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/
    执行bootstrap.sh 脚本文件: ./bootstrap.sh
     修改生成的project-config.jam 文件
     using gcc : arm : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ ; 
    
    ./b2 --without-python --prefix=./out  --build-dir=./build  variant=release stage
    
    ./b2 install --prefix=/home/nfs_root/opencv_install_3559
    

    2) 编译openface
    git clone https://github.com/TadasBaltrusaitis/OpenFace.git 下载源代码
    新建build目录,新建编译脚本内容如下:

export PATH="/home/nfs_root/opencv_install_3559/bin:$PATH"
export LD_LIBRARY_PATH="/home/nfs_root/opencv_install_3559/lib:$LD_LIBRARY_PATH"
export LD_INCLUDE_PATH="/home/nfs_root/opencv_install_3559/include:$LD_INCLUDE_PATH"
export PKG_CONFIG_PATH="/home/nfs_root/opencv_install_3559/lib/pkgconfig"
export OpenBLAS_HOME="/home/nfs_root/opencv_install_3559"

cmake   -D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++  \
          	-D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc\
         	-D CMAKE_BUILD_TYPE=RELEASE \
         	-D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
          	-D CMAKE_INSTALL_PREFIX=/home/nfs_root/opencv_install_3559 \
         	-D CMAKE_C_FLAGS+=-O3 \
         	-D CMAKE_CXX_FLAGS+=-O3 \
         	-D CMAKE_CXX_FLAG+=-mcpu=cortex-a73.cortex-a53 \
         	-D CMAKE_C_FLAGS+=-mcpu=cortex-a73.cortex-a53 \
         	-D CMAKE_CXX_FLAG=-fPIC \
         	-D CMAKE_C_FLAGS=-fPIC \
          ..
  	make -j4
    make install

编译完成后就可以将安装目录下的所有文件拷贝到开发板的相应目录下进行测试,运行时将云盘中cen_patches_*_of.dat四个文件拷贝到 (默认安装路径) etc/OpenFace/model/patch_experts下,然后将生成的bin目录下的可执行文件拷贝到etc/OpenFace目录下进行运行查看效果。
在这里插入图片描述
遗憾的事在3559A上运行处理一幅图片需要将近600ms。

dilib 库也有提供人脸特征点检测的方法,请参考其他文章,dilib的模型可以云盘下载:shape_predictor_68_face_landmarks.dat

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
终端调用openface可以通过以下步骤实现: 1. 首先,确保你已经在你的系统上安装了openface。你可以从官方网站http://cmusatyalab.github.io/openface/下载openface的代码,并按照官方提供的指南进行安装。 2. 打开终端,并导航到openface的安装目录。 3. 在终端中输入以下命令来调用openface: ``` ./bin/FaceLandmarkVid -f <视频文件路径> -out_dir <输出目录> ``` 这个命令将会使用openface来检测视频中的人脸关键点,并将结果保存到指定的输出目录中。 4. 替换`<视频文件路径>`为你想要处理的视频文件的路径,替换`<输出目录>`为你想要保存结果的目录路径。 5. 执行命令后,openface将会开始处理视频,并将结果保存到指定的输出目录中。 请注意,以上步骤仅适用于在终端中调用openface进行人脸关键点检测。如果你想要进行其他类型的操作,你可能需要查阅openface的文档或者参考相关的教程。 #### 引用[.reference_title] - *1* *2* [将openface部署到网页中识别用户表情](https://blog.csdn.net/Carol_learning/article/details/126533610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenFace学习(1):安装配置及人脸比对](https://blog.csdn.net/hongbin_xu/article/details/80223992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值