R329开发板第二步:实机运行分类网络
很荣幸拿到了由矽速科技提供的R329开发板,最近矽速科技提供了Debian系统,所以下面我们就在Debian系统上进行了。
仿真时候用的inception-v3的参数量对于板子来说可能还是太大,所以板子运行还是要换成轻量级的mobilenet吧,享受实时的快乐。
矽速科技提供的 Debian镜像:
链接:https://pan.baidu.com/s/1h-Lf6Y-xnvWUrOW6FSwitQ
提取码:dl7s
矽速科技提供的demo代码:
链接:https://pan.baidu.com/s/1vpPH_pHKQ_w3Z4DTxJTixg
提取码:4tni
一、板卡开箱
(1)首先对R329来一个资源一览:
可以看到:R329 有两个1.5GHZ的经典的A53核心,32KB的L1指令缓存 + 32KB的L1数据缓存,并搭载了Arm China Zhouyi Z1 AIPU,提供了0.25TOPS 的算力。
CPU:Dual-core
- ARM Cortex™-A53@1.5GHz
- 32KB L1 I-cache + 32KB L1 D-cache per core
- 256KB L2 cache
NPU:0.25TOPS@800MHz
- Arm China Zhouyi Z1 AIPU, 1TEC+128mac FF
- 0.25TOPS@800MHz
(2)再放张板子的实物图
和EAIDK310开发板的合影:
二、系统烧录和开发环境配置
(1)系统烧录
此部分可以参考
R329开发板教程之四|Debian系统初体验
软件是用的balenaEtcher,如下图,正在烧录中:
(2)配置串口连接和SSH连接
1、串口连接
使用终端软件配置串口连接,波特率为115200,配置如下:
串口上传文件不方便,因此我们还需要配置一下ssh
2、SSH连接
因为板子没有网口,但是可以通过wifi连接。但学校实验室提供的wifi登录的时候要验证学号啥的,所以怎么配置笔记本和板子在同一个网段成了问题。。。
幸好windows10提供了一个自带的热点功能,用它开个热点,板子再连上这个热点,笔记本和板子就在同一个网段了。
使用 nmtui 指令可以进入可视化的配网界面,选择 Activate a connection , 选择对应的SSID,输入连接密码,确认即可。
再执行这两行代码手工生成ssh秘钥
ssh-keygen -A
systemctl restart ssh
成功使用MobaXterm登陆ssh
其它配置参照:
R329开发板教程之四|Debian系统初体验
三、生成aipu.bin
这一部分可以参照上一篇文章:【周易AIPU 仿真】R329开发板系列一:环境的搭建和PC端仿真
不同的是:run是仿真模式, build会生成AIPU使用的模型文件。
[Common]
mode = build
[Parser]
model_name = mobilenet_v2
detection_postprocess =
model_domain = image_classification
input_model = ./model/mobilenet_v2_frozen.pb
input = input
input_shape = [1, 224, 224, 3]
output = MobilenetV2/Predictions/Softmax
output_dir = ./output/
[AutoQuantizationTool]
quantize_method = SYMMETRIC
quant_precision = int8
ops_per_channel = DepthwiseConv
reverse_rgb = False
label_id_offset = 0
dataset_name =
detection_postprocess =
anchor_generator =
log = False
calibration_data = ./dataset/dataset.npy
calibration_label = ./dataset/label.npy
[GBuilder]
outputs = aipu.bin
target=Z1_0701
运行 aipubuild config/mobilenet_v2_build.cfg 生成aipu.bin
四、虚拟机交叉编译代码
在板子上编译代码估计慢的很,我的虚拟机之前也配置了aarch64-linux-gnu- 的交叉编译链, 所以还是直接在pc上编译吧,在通过ssh传到板子上。
关于CMake使用交叉编译可以参照CMake文档:
https://cmake.org/cmake/help/...
(1)首先交叉编译OpenCV4.5.1,待用;
编译过程可以参考下面这个博文,在文章后面的云盘中也给出了编译好的文件。
https://blog.csdn.net/u010237...
(2) 编写 R329_Mobilenet工程的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.5)
project(R329_Mobilenet)
set(OpenCV_DIR ../opencv4.5.1/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
set(AIPU_LIBS "${CMAKE_SOURCE_DIR}/libaipudrv.so.4")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
aux_source_directory(. src)
add_executable(zhouyi_cam ${src})
target_link_libraries(zhouyi_cam ${OpenCV_LIBS} ${AIPU_LIBS})
(3)编写 R329-arm64.toolchain.cmake 交叉编译配置文件
# set target machine operating system eg. Linux Windows Generic
set(CMAKE_SYSTEM_NAME Linux)
#set target machine architecture
set(CMAKE_SYSTEM_PROCESSOR aarch64)
#set corr
set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGARM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_C_FLAGS "-march=armv8-a")
set(CMAKE_CXX_FLAGS "-std=c++11 -march=armv8-a")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
(4)交叉编译工程
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../R329-arm64.toolchain.cmake ..
make -j4
(5)使用ssh上传到开发板测试效果:
cd zhouyi_test/build
bash run.sh
enjoy it!
关于分类网络的测试就先到这里,等着抽时间再移植检测网络看看效果如何。
最后许愿秋招能有个好offer,QAQ
相关的工程文件放在这里了:
R329工程文件,提取码:bdqf
参考文章:
https://aijishu.com/a/1060000...
https://aijishu.com/a/1060000...
https://aijishu.com/a/1060000...