在CORE3399PROJD4上编译安装pytorch和opencv

48次阅读

共计 2408 个字符,预计需要花费 7 分钟才能阅读完成。

本文首发于集体博客 http://zuyunfei.com/2020/07/1…,欢送浏览最新内容!

最近拿到一块 CORE-3399PRO-JD4 开发板,要在下面部署 AI 利用。这块板子搭载 Rockchip RK3399Pro 处理器,采纳双核 Cortex-A72+ 四核 Cortex-A53 构架,主频高达 1.8GHz,集成四核 Mali-T864 GPU,并内置高性能 NPU,号称性能优异。然而理论过程中,发现发热重大,要应用 NPU 须要把算法移植到 Rockchip 提供的 RKNN-Toolkit 开发套件。依照官网文档把板子刷成了 ubuntu18.4,而后装置了 RKNN,打算把现有模型转换一下,后果发现:

  • 适配的 tensorflow 版本较低(RKNN 1.3 反对 tensorflow 1.10.1),2.0 版本的模型无奈转换。
  • ONNX 版本模型转换失败,应该也是版本不对
  • pytorch 罗唆没有迁徙到板子上,官网例程都跑不起来。

切实没方法,只能先不必 NPU 把利用跑起来试试。这里把编译在 ARM Ubuntu18.04 上编译 pytorch 和 opencv 的过程记录一下。

编译 pytorch

在开发板上编译,须要先装置编译工具链(要联网)。因为开始编译前我曾经折腾这块板子好多天了,上面列出的依赖可能不是全副。

sudo apt-get install libopenblas-dev libblas-dev m4 cmake cython

而后装置 python 依赖,我这里应用的是 python3.6。

pip3 install numpy pyyaml cyphon

从 gitbub 拿下来 pytorch 源码,submodule update 过程必不可少。

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git checkout v1.4
git submodule sync
git submodule update --init --recursive
git submodule update --remote third_party/protobuf

配置环境变量

export NO_CUDA=1          #不实用 cuda
export NO_DISTRIBUTED=1   #不反对分布式
export NO_MKLDNN=1        #不反对 MKLDNN
export MAX_JOBS=4 

须要留神的是 MAX_JOBS 是并行编译的最大线程数。(尽管 CORE-3399PRO-JD4 这块板子是 6 核 CPU,能够反对 6 线程编译,然而它只有 4GB 内存,编译一些简单模块时,GCC 会耗尽内存解体。我的教训是先用 4 线程或 6 线程编译,遇到 GCC 解体,再改回单线程编译,耗内存的模块编译过之后再改回 6 线程编译。)

开始编译

# 打包成 whl,打包胜利后这个文件在 dist 目录外面
python setup.py bdist_wheel

装置编译好的 wheel 包

cd dist
pip3 install ./torch-1.4.0a0+72e1771-cp36-cp36m-linux_aarch64.whl

编译 torchvision

先装置编译依赖

sudo apt-get install libjpeg-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install pillow

从 gitbub clone 代码

git clone https://github.com/pytorch/vision.git
cd vision
git checkout v0.5

开始编译

# 打包成 whl
python setup.py bdist_wheel

装置

cd dist
pip3 install ./torchvision-0.5.0a0+85b8fbf-cp36-cp36m-linux_aarch64.whl

编译 OpenCV

ubuntu 18.04 能够间接用 apt 装置 opencv 3.2,然而咱们之前的一个利用至多须要 3.3 版本,所以也须要从新编译。
首先装置工具链

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

下载 OpenCV 和 opencv_conrib 源码

wget -O opencv-3.3.0.zip https://github.com/opencv/opencv/archive/3.3.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.3.0.zip
unzip opencv-3.3.0.zip
unzip opencv_contrib.zip
cd opencv-3.3.0

配置 cmake

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=OFF \
      -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib-3.3.0/modules \
      -D PYTHON_EXECUTABLE=/usr/bing/python3 \
      -D BUILD_EXAMPLES=ON ..

开始编译

make -j 4

打包和装置

make package
sudo make install

软件包下载

因为是在开发板上编译,PyTorch 破费了大略 4 个小时,OpenCV 也须要 1 个小时。我把编译好的包上传到了 github,有须要的能够间接下载:

  • OpenCV-3.3.0
  • PyTorch-1.4.0-python3.6

正文完
 0