本文主要是介绍jetson nx 安装环境之坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本来各种手动安装已经完成到tensorrt又是各种没对应, 而且engine模型在x86上转换完的在arm上也不能使用,先讲一下直接arm安装吧 docker的还没来及试验~~
1. 用sdkmanager安装ai环境
挺省事简单 也很快 安装到第3步可以暂停然后拔出,nvidia 容器及以下没实验过用处
jetpack4.6.2 对应 tensorrt8.2.1
先安装基础系统 - 然后连显示器 -初始化系统设置用户名密码-设置ip连上wifi或网线记住ip
在安装各种sdkcuda等 - 需要联网 之前的用户名密码和ip就有用了- 会弹框输入ip 用户名密码信息
安装的opencv没使用cuda编译
最后cuda cudnn valukan visionworks vpi 等轻松按上
2.自行指定版本安装
各种坑 jetpack4.6.2 安装pytorch 时各种依赖不对 还要先删 有的pip也安装失败
安装opencv4以上并使用cuda 3小时左右,而且opencv不能pip安装需要自行编译然后++和py的都有了
tensorrt 自行安装8.0.3.4 - 官网的版本都不太对应上 7/8 都对应的cuda11
最后官网下tensorrt代码编译安装 wts导engine模型时报错
报错1: libnvmedia.so 没有网上还查不到
3.貌似官网是有docker镜像的
docker是预装的还挺好,但直接用docker跑不知道性能损耗多少,据别人说损耗也没这么大
地址 https://catalog.ngc.nvidia.com/containers
Query里填入jetson就可以选取自己需要的镜像了。
以镜像NVIDIA L4T PyTorch为例:
拉取镜像(可选择需要的pytorch和torchvision版本的镜像):
sudo docker pull nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py3
开启一个容器:
sudo docker run -it --rm --runtime nvidia --network host nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py3
注意,若一个容器需要多次开启,最好上述命令不要带--rm,因为下次开启的时候传到里面的文件会被删除了。个人感觉最好是把文件夹通过-v挂载上去,需要注意的是:挂载的文件夹在外部如何改变,容器里面会相应改变;在容器里面对挂载的文件夹做改变,外部也会相应改变。这个就是docker基础了相信都会.
命令:
sudo docker run -it --rm --runtime nvidia --network host -v /home/xx:/location/in/container nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py
或
sudo docker run -it -name xx --runtime nvidia --network host -v /home/xx:/location/in/container nvcr.io/nvidia/l4t-pytorch:r32.5.0-pth1.7-py
最好还是起个名字~~
然后安装opencv-4.1.1, 注意opencv不能pip安装
(1). updating the packages:
apt update
apt install -y build-essential cmake git libgtk2.0-dev pkg-config libswscale-dev libtbb2 libtbb-dev
apt install -y python-dev python3-dev python-numpy python3-numpy
apt install -y curl
(2). install video & image formats:
apt install -y libjpeg-dev libpng-dev libtiff-dev libjasper-dev
apt install -y libavcodec-dev libavformat-dev
apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp libdc1394-22-dev
///注意这一步也很闹心了,直接arm安装的时候各种装不了其实已经有新版本了,还要在删了很烦
(3). download opencv & contribs modules:
curl -L https://github.com/opencv/opencv/archive/4.1.1.zip -o opencv-4.1.1.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -o opencv_contrib-4.1.1.zip
(4). unzipping packages:
apt-get install unzip
unzip opencv-4.1.1.zip
unzip opencv_contrib-4.1.1.zip
cd opencv-4.1.1/
(5). create directory:
apt-get install mkdir
mkdir release
cd release
(6). build opencv using Cmake:
cmake -D WITH_CUDA=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D BUILD_opencv_python2=ON \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4( 注意之间可能又会少点什么~ -j4或j几可以不要,要不错误很乱看不见都 )
make install
完事
docker的 大伙谁用过也交流一下哈~~ 还有dockerfile欢迎分享哦...
3.推理环境配置、Tensorrt加速
临时把这个加上, 应该也有需要注意的地方
/TensorRT-xxx/targets/x86_64-linux-gnu/lib 输出到你的 usr/aarch或x86下
rt <py包在rt的python里>
pip3 install tensorrt-*-cp3x-none-linux_x86_64.whl
uuf <uuf目录>
pip3 install uff-0.6.9-py2.py3-none-any.whl
graphsurgeon <graphsurgeon目录>
pip3 install graphsurgeon-0.4.5-py2.py3-none-any.whl
验证一下
import tensorrt
print(tensorrt.__version__)
#
生wts什么的过程不在描述
#1#
如果因为版本不对应可能会出现的问题:/home/tensorrtx/yolov5/yololayer.h(54): error: member function declared with "override" does not override a base class member
#2#
cd 到tensorrtx/yolov5/路径下 ,vim改yololayer.h中的类别数目(这个超级关键,不改会报错!!!)
vi yololayer.h
然后编译 - 编译可能遇到的问题:
编译过程可能会遇到的问题:/home/tensorrtx/yolov5/yolov5.cpp:63: nvinfer1::ICudaEngine* build_engine(unsigned int, nvinfer1::IBuilder*, nvinfer1::IBuilderConfig*, nvinfer1::DataType, float&, float&, std::string&): Assertion u psample11' failed.
解决方法:
修改下tensorrtx/yolov5/路径下的cmakelist
原版:
tensorrt
. #include_directories(/usr/include/x86_64-linux-gnu/)
. #link_directories(/usr/lib/x86_64-linux-gnu/)
改进如下:
把include,lib路径换成自己的
tensorrt
. #include_directories(/usr/include/aarch64-linux-gnu/)
. #link_directories(/usr/lib/aarch64-linux-gnu/)
改好在生成 新版本的tensorrtx指令都是不一样的!~~ ./yolov5 -s
#3#
生成engine可能遇到的问题:yolov5: /home/tensorrtx/yolov5/yolov5.cpp:396: void APIToModel(unsigned int, nvinfer1::IHostMemory**): Assertion ``engine != nullptr' failed. Aborted (core dumped)
查了下都是说类别要改,确实如果yololayer.h里的class不改会报错
但是我yololayer.h里的class num 已经改2类了。类别也改了,也报错,那就是训练的时候出错了!
解决方法
我是train.py的时候没有对应。一个weights是yolov5s.pt, cfg确实yolov5x.yaml
修改下triain.py看下是否出错了。重新训练后解决!!
还有个要注意的 就是wts也需要在你用的机器上生成,这个也不能通用86和arm上哈.
最后测试.... ./yolov5 -d ../images #-d 后面是你测试图片的路径
#4#
这个还是个大坑啊~~ 哪哪找不到问题~~ 还特地去老外那提了个bug, 在百度搜不到 要去google
[utils.cpp::checkMemLimit::380] Error Code 2: Internal Error (Assertion upperBound != 0 failed. Unknown embedded device detected. Please update the table with the entry: {{1794, 6, 16}, 12660},)
老外给我的回复啊
what variant of Jetson Xavier NX are you running? Is it Jetson Xavier NX 16GB? If so, I think you need to upgrade your version of JetPack / TensorRT
可能还要冲装了 我去~~ 我就在纳闷 大伙用nx 都是jetpack什么版本啊 ~~ 真的没人遇到吗?
最终安装完成 jetpack 4.6.2真是大坑啊
jetpack 5.0.1 以后都行了 ,不过cuda虽然可以用 , 但jtop里显示未安装....
4.gstreamer和ffmpeg
选#gstreamer sdkmanager里就有不说了,
#ffmpeg 安装及启动cuda 编码 , 也不是太麻烦,时间也好久 .... 不过都弄好了 也不错 巨快 好用
5.开发环境docker
之前用rog,想直接上ubuntu 结果显卡怎么都冲突都黑屏~~~
就在win10上装docker了 ,这样也挺好的也习惯了
只不过win10的docker 需要迁移wsl2 ext4文件也导出换地方 删镜像大小也不变还要手动压缩一下比较烦~~~
-------
这是gpu 下面说下所有xxxpu吧
APU -- Accelerated Processing Unit, 加速处理器,AMD公司推出加速图像处理芯片产品。
BPU -- Brain Processing Unit, 地平线公司主导的嵌入式处理器架构。自动驾驶
CPU -- Central Processing Unit 中央处理器, 目前PC core的主流产品。
DPU -- Deep learning Processing Unit, 深度学习处理器,最早由国内深鉴科技提出;另说有Dataflow Processing Unit 数据流处理器, Wave Computing 公司提出的AI架构;Data storage Processing Unit,深圳大普微的智能固态硬盘处理器。
FPU -- Floating Processing Unit 浮点计算单元,通用处理器中的浮点运算模块。
GPU -- Graphics Processing Unit, 图形处理器,采用多线程SIMD架构,为图形处理而生。
HPU -- Holographics Processing Unit 全息图像处理器, 微软出品的全息计算芯片与设备。
IPU -- Intelligence Processing Unit, Deep Mind投资的Graphcore公司出品的AI处理器产品。
MPU/MCU -- Microprocessor/Micro controller Unit, 微处理器/微控制器,一般用于低计算应用的RISC计算机体系架构产品,如ARM-M系列处理器。
NPU -- Neural Network Processing Unit,神经网络处理器,是基于神经网络算法与加速的新型处理器总称,如中科院计算所/寒武纪公司出品的diannao系列。
RPU -- Radio Processing Unit, 无线电处理器, Imagination Technologies 公司推出的集合集Wifi/蓝牙/FM/处理器为单片的处理器。
TPU -- Tensor Processing Unit 张量处理器, Google 公司推出的加速人工智能算法的专用处理器。目前一代TPU面向Inference,二代面向训练。另外,
VPU -- Vector Processing Unit 矢量处理器,Intel收购的Movidius公司推出的图像处理与人工智能的专用芯片的加速计算核心。
WPU -- Wearable Processing Unit, 可穿戴处理器,Ineda Systems公司推出的可穿戴片上系统产品,包含GPU/MIPS CPU等IP。
XPU -- 百度与Xilinx公司在2017年Hotchips大会上发布的FPGA智能云加速,含256核。
ZPU -- Zylin Processing Unit, 由挪威Zylin 公司推出的一款32位开源处理器。
---
whaosoft aiot http://143ai.com
未完待续....
这篇关于jetson nx 安装环境之坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!