本文首发于集体博客 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/pytorchcd pytorchgit checkout v1.4git submodule syncgit submodule update --init --recursivegit submodule update --remote third_party/protobuf
配置环境变量
export NO_CUDA=1 #不实用cudaexport NO_DISTRIBUTED=1 #不反对分布式export NO_MKLDNN=1 #不反对MKLDNNexport 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 distpip3 install ./torch-1.4.0a0+72e1771-cp36-cp36m-linux_aarch64.whl
编译torchvision
先装置编译依赖
sudo apt-get install libjpeg-dev libavcodec-dev libavformat-dev libswscale-devpip3 install pillow
从gitbub clone 代码
git clone https://github.com/pytorch/vision.gitcd visiongit checkout v0.5
开始编译
#打包成whlpython setup.py bdist_wheel
装置
cd distpip3 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.zipwget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.3.0.zipunzip opencv-3.3.0.zipunzip opencv_contrib.zipcd opencv-3.3.0
配置cmake
mkdir buildcd buildcmake -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 packagesudo make install
软件包下载
因为是在开发板上编译,PyTorch破费了大略4个小时,OpenCV也须要1个小时。我把编译好的包上传到了github,有须要的能够间接下载:
- OpenCV-3.3.0
- PyTorch-1.4.0-python3.6