Mediapipe在Jetson agx上的安装流程及问题解决方案

文章目录

前言

一、Bazel安装

二、Mediapipe安装

        1.下载mediapipe:

2.安装依赖和编译器

         3.删除非必要模块

         4.修改文件

         5.修改OpenCV和FFMpeg的编译文件

         6. 配置CUDA支持

         7.编译 

         8.问题及解决方案 

三、总结


前言

本文提供了为Jetson AGX配置mediapipe的流程,中间遇到很多问题,目前均已解决,安装流程适用于Jetson Xivar系列,包括nano、nx、agx。


一、Bazel安装

编译安装bazel是安装mediapipe必须要做的一部,由于Jetson设备内核架构采用的是ARM64(aarch64),因此需要从源码编译安装(建议Bazel 4.0.0版本)。


二、Mediapipe安装

1.下载mediapipe

源码在github上可以找到,如果下载速度慢可到国内的gitee上找资源(类似于github的国内版本,资源也比较丰富,下载速度很快),解压后得到名为 mediapipe-master 的安装包文件夹。

2.安装依赖和编译器

sudo apt install -y python3-dev
sudo apt install -y cmake
sudo apt install -y protobuf-compiler

3.删除非必要模块

进入 mediapipe-master 文件夹下,删除不必要的模块和标志。依次执行下列命令行:

sed -i -e "/\"imgcodecs\"/d;/\"calib3d\"/d;/\"features2d\"/d;/\"highgui\"/d;/\"video\"/d;/\"videoio\"/d" third_party/BUILD
sed -i -e "/-ljpeg/d;/-lpng/d;/-ltiff/d;/-lImath/d;/-lIlmImf/d;/-lHalf/d;/-lIex/d;/-lIlmThread/d;/-lrt/d;/-ldc1394/d;/-lavcodec/d;/-lavformat/d;/-lavutil/d;/-lswscale/d;/-lavresample/d" third_party/BUILD

4.修改文件

进入 third_party 文件夹,找到名为 BUILD 的文件,定位到如下位置并增加蓝色字体内容:

“WITH_ITT”: “OFF”,
“WITH_JASPER”: “OFF”,
“WITH_WEBP”: “OFF”,

# 在后面增加以下两句内容:

“ENABLE_NEON”: “OFF”,
“WITH_TENGINE”: “OFF”,

5.修改OpenCV和FFMpeg的编译文件

回到mediapipe-master文件夹下,运行如下代码 

sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/g" third_party/opencv_linux.BUILD
sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/g" third_party/ffmpeg_linux.BUILD

 由于Jetson agx为aarch64的linux系统,因此需要将 third_party/opencv_linux.BUILD 和 third_party/ffmpeg_linux.BUILD 两个文件中所有的 x86_64-linux-gnu 更换为 aarch64-linux-gnu Jetson中,OpenCV和FFMpeg的库都定义在/usr/lib/aarch64-linux-gnu文件夹下。

6. 配置CUDA支持

 (1)首先确认CUPTI、CUDA、CUDNN、NVCC是否正确安装,如下图所示即为正常。 

(2)配置CUDA环境变量,在 /etc/profile 文件中增加如下内容:

export TF_CUDA_PATHS=/usr/local/cuda-10.2,/usr/lib/aarch64-linux-gnu,/usr/include 

(3)为了让bazel找到CUDA,需要在 mediapipe-master 文件夹下的 .bazelrc 文件中增加如下内容 ,

 # This config refers to building with CUDA available.
build:using_cuda --define=using_cuda=true
build:using_cuda --action_env TF_NEED_CUDA=1
build:using_cuda --crosstool_top=@local_config_cuda//crosstool:toolchain

# This config refers to building CUDA op kernels with nvcc.
build:cuda --config=using_cuda
build:cuda --define=using_cuda_nvcc=true

7.编译 

 正式开始编译,时间比较长,中间会有在github上下载安装包的过程,建议“科学上网”,不然会因下载速度过慢导致经常中断。

python3 setup.py gen_protos && python3 setup.py bdist_wheel

编译成功之后,会在 mediapipe-master 文件夹下生成一个名为 dist 的新文件夹 ,里面会有一个编译完成的 .wheel 文件,之后 pip 进行安装就可以。

8.问题及解决方案 

1)问题:缺少any.proto错误

  解决方案:下载最新的 protoc-3.x.x-linux-aarch_64.zip ,解压并将名为 bin 的文件夹和include下的 google 文件夹复制到 mediapipe-master 中。修改 mediapipe-master下的setup.py,

protoc_command = [self._protoc, ‘-I.’, ‘–python_out=.’, source]

#定位上句并修改为如下内容:

protoc_command = [self._protoc, ‘-I.’, ‘-I/usr/local/include’, ‘–python_out=.’, source]

2)问题:return tensor相关的错误

  解决方案:gcc g++ 升级到gcc-8 g++-8, 目前发现gcc-8和g++-8可避免一系列问题,所以强烈建议编译开始前就安装该版本,至于更高的版本是否也可以,没有测试不好下结论。

3)问题:is numpy installed? 问题

  解决方案:运行如下命令可解决:

echo $PYTHON_BIN_PATH
export PYTHON_BIN_PATH=/usr/bin/python3
PYTHON_BIN_PATH -c 'import numpy'

4)问题:Illegal instruction (core dumped) 问题

  解决方案:运行如下命令:

export OPENBLAS_CORETYPE=ARMV8

或者将命令添加到 ~/.bashrc中,再source一下该文件,如下:

source ~/.bashrc

5)问题:aarch64-linux-gnu-gcc 交叉编译报错

  解决方案:aarch64-linux-gnu-gcc 及aarch64-linux-gnu-g++版本升级到aarch64-linux-gnu-gcc-8 和aarch64-linux-gnu-g++-8


三、总结

整体安装流程比较坎坷,遇到的比较大的问题主要是后4个,解决之后基本就能编译成功,另外就是github下载速度难题,导致无数次的编译中断,最后还是选择“科学上网”解决问题。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值