文章转载于: 阿chai带你学AI
作者:阿chai
Tengine框架在最近\支持了GPU上通过CUDA或TensorRT加速,那么今天阿chai就带着大家看看我们如何在NVIDIA的嵌入式设备中使用Tengine框架。今天的算法完全在嵌入式上进行,请小伙伴们自行学习有关LInux下开发的相关知识。
Tengine的架构如下图所示。
之前我们已经介绍过tengine的安装方式以及算法模型的使用过程,相关书名请移步Tengine的入门教程。下面分别介绍Tengine在GPU是通过CUDA与TensorRT做加速的测试,小伙伴根据自己的需求去选择。
Tengine CUDA
如果是在不知道自己的版本,可以输入如下命令:
# XXXX为查询的内容dpkg -l | grep xxxx
首先安装相关依赖:
sudo apt-get install cmake make g++ git
clone新的Tengien Lite Demo:
git clone -b tengine-lite https://github.com/OAID/Tengine.git Tengine-Lite
设置NVCC的环境变量,NVCC的位置一般情况下在这:
export CUDACXX=/usr/local/cuda/bin/nvcc
建立编译文件夹并进入:
mkdir -p build-linux-cudacd build-linux-cuda
cmake参数的文件路径一定要设置成自己的,如果不知道在哪里,可以根据下方阿chai的路径进行寻找。
cmake -DTENGINE_ENABLE_CUDABACKEND=ON \ -DCUDA_INCLUDE_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/include \ -DCUDA_LIBARAY_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/lib ..
编译:
make -j4make install
测试用的程序文件在如下路径中,为tm\_classification\_cuda
Tengine-Lite/build-linux-cuda/examples/
测试以MobileNet V1为例,测试的图片与模型可在如下链接中下载:
链接: https://pan.baidu.com/s/1Izm0RlLJvwTIkhfQ_NXg5Q 密码: faan
将模型预测师图片下载好导入嵌入式设备中并记住路径,输入如下命令进行测试,模型与图片的路径以自己设置的为准。
./tm_classification_cuda -m mobilenet_v1.tmfile -i dog.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10
我们可以看到如下结果:
Tengine plugin allocator CUDA is registered.tengine-lite library version: 1.2-devmodel file : mobilenet_v1.tmfileimage file : dog.jpgimg_h, img_w, scale[3], mean[3] : 224 224 , 0.017 0.017 0.017, 104.0 116.7 122.7Repeat 10 times, thread 1, avg time 35.95 ms, max_time 100.85 ms, min_time 19.96 ms--------------------------------------22.900383, 53720.012611, 24818.909063, 24918.323162, 25014.298100, 174--------------------------------------
同样我们可以输入如下命令测试纯CPU的推理速度:
./tm_classification -m mobilenet_v1.tmfile -i dog.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10
CPU的推理速度是远远慢于CUDA加速的GPU推理。
Tengine TensorRT
如果是在不知道自己的版本,可以输入如下命令:
# XXXX为查询的内容dpkg -l | grep xxxx
首先安装相关依赖:
sudo apt-get install cmake make g++ git
clone新的Tengien Lite Demo:
git clone -b tengine-lite https://github.com/OAID/Tengine.git Tengine-Lite
设置NVCC的环境变量,NVCC的位置一般情况下在这:
export CUDACXX=/usr/local/cuda/bin/nvcc
建立编译文件夹并进入:
mkdir -p build-linux-trtcd build-linux-trt
cmake参数的比CUDA的要多一些,千万不要弄错。如果不知道在哪里,可以根据下方阿chai的路径进行寻找。
cmake -DTENGINE_ENABLE_TENSORRT=ON \ -DTENSORRT_INCLUDE_DIR=/usr/include/aarch64-linux-gnu \ -DTENSORRT_LIBRARY_DIR=/usr/lib/aarch64-linux-gnu \ -DCUDA_INCLUDE_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/include \ -DCUDA_LIBARAY_DIR=/usr/local/cuda-10.0/targets/aarch64-linux/lib ..
编译:
make -j4make install
测试用的程序文件在如下路径中,为tm\_classification\_trt
Tengine-Lite/build-linux-cuda/examples/
测试以MobileNet V1为例,测试的模型可在如下链接中下载:
链接: https://pan.baidu.com/s/1Izm0RlLJvwTIkhfQ_NXg5Q 密码: faan
将模型预测师图片下载好导入嵌入式设备中并记住路径,输入如下命令进行测试,模型与图片的路径以自己设置的为准。
./tm_classification_trt -m mobilenet_v1.tmfile -i cat.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10
我们可以看到如下结果:
Tengine plugin allocator TRT is registered.tengine-lite library version: 1.2-devTengine: Try using inference precision TF32 failed, rollback.model file : mobilenet_v1.tmfileimage file : cat.jpgimg_h, img_w, scale[3], mean[3] : 224 224 , 0.017 0.017 0.017, 104.0 116.7 122.7Repeat 1 times, thread 1, avg time 2.91 ms, max_time 2.91 ms, min_time 2.91 ms--------------------------------------8.574147, 2827.880117, 2777.812574, 2787.286457, 2636.357487, 281--------------------------------------
同样我们可以输入如下命令测试纯CPU的推理速度:
./tm_classification -m mobilenet_v1.tmfile -i cat.jpg -g 224,224 -s 0.017,0.017,0.017 -w 104.007,116.669,122.679 -r 10
CPU的推理速度是远远慢于CUDA加速的GPU推理。
- The End -
推荐阅读
更多嵌入式AI技术相关内容请关注嵌入式AI专栏。