文 | MESeraph
00 | 序言
- 主要试了两个开源的工程 tensorrt_demos。
- 在nano和NX上测试。
01 | 源码
-
下载源码库 tensorrt_demos,里面包含yolov4的TensorRT Engine生成代码。
-
按Demo 4给的操作执行即可。
期间遇到的问题如下:操作之前请看下面内容,以确有序解决测试过程中遇到的问题。
02 | 安装onnx
注:这玩意真是装到心态爆炸
- 安装onnx前,需要先安装protobuf、cmake。
使用以下命令安装protobuf:
sudo apt-get install protobuf-compiler libprotoc-dev
sudo pip3 install protobuf-3.0.0
因为默认安装的是protobuf 3.0.0,当执行python3 yolo_to_onnx.py --model yolov4-416
会报如下错:
TypeError: 1.0 has type numpy.float32, but expected one of: int, long, float
我们这里只是暂时为了先把onnx安装好。因为使用新版的protobuf是怎么都装不上onnx 1.4.1的!!!!
-
安装onnx
sudo pip3 install onnx==1.4.1
-
移除protobuf 3.0.0版本
使用sudo apt-get remove protobuf-compiler libprotoc-dev
移除protobuf包。
需要注意,仅执行这个命令是卸载不干净protobuf的,如果你再装其他版本protobuf会导致多版本的protobuf存在。
执行如上指令以后还要删除库和头文件、执行文件:(非常重要!!!)
sudo rm /usr/local/bin/protoc
sudo rm -rf /usr/local/include/google
sudo rm /usr/local/lib/libproto*
sudo pip3 uninsall protobuf
- 安装新版protobuf。(我安装的是3.12.3)
解压、编译、安装
tar zxvf protobuf-all-3.12.3.tar.gz
cd protobuf-3.12.3
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig
安装protobuf的python模块
cd ./python
python3 setup.py build
python3 setup.py test
sudo python3 setup.py install
总结:要先安装低版本的protobuf,安装成功onnx后,再更新protobuf版本。
03 | 配置CUDA环境路径
- 编译
~/.bashrc
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source ~/.bashrc