【jetson nano】yolov5环境配置tensorrt部署加速
安装pytorch
Nano上预装的Jetpack版本为4.6.1,Python为3.6.9,CUDA环境为10.2。在PyTorch for Jetson中可以下载不同版本的torch,torch<=1.10.0。
1 安装torch1.8.0
1 2 3 4 5 | # substitute the link URL and wheel filename from the desired torch version above wget https: / / nvidia.box.com / shared / static / p57jwntv436lfrd78inwl7iml6p13fzh.whl - O torch - 1.8 . 0 - cp36 - cp36m - linux_aarch64.whl sudo apt - get install python3 - pip libopenblas - base libopenmpi - dev libomp - dev pip3 install 'Cython<3' pip3 install numpy torch - 1.8 . 0 - cp36 - cp36m - linux_aarch64.whl |
如果安装numpy时报错,可以先更新pip
1 | pip3 install --upgrade pip |
2 编译torchvision0.9.0
1 2 3 4 5 6 | sudo apt - get install libjpeg - dev zlib1g - dev libpython3 - dev libopenblas - dev libavcodec - dev libavformat - dev libswscale - dev git clone - - branch v0. 9.0 https: / / github.com / pytorch / vision torchvision cd torchvision export BUILD_VERSION = 0.9 . 0 # the torchvision version python3 setup.py install - - user cd .. / # attempting to load torchvision from build dir will result in import error |
配置yolov5环境
1 下载yolov5-6.0的代码及权重yolov5s.pt
由于yolov5的最新版本中要安装包ultralytics,总是报错,没有版本,所以选择yolov5-6.0。
2 替换清华镜像源
创建.pip文件夹
1 | mkdir ~ / .pip |
使用vim打开pip.conf配置文件
1 | vim ~ / .pip / pip.conf |
修改pip.conf配置文件
1 2 3 4 | [ global ] index - url = https: / / pypi.tuna.tsinghua.edu.cn / simple [install] trusted - host = https: / / pypi.tuna.tsinghua.edu.cn |
3 安装包
1 | pip3 install - r requirements.txt |
4 运行程序
1 | python3 detect.py |
如果出现了killed程序终止,可以关掉一些不用的程序,或者设置交换分区
设置交换分区
1 安装Jtop监控运行
执行安装命令
1 | sudo pip3 install jetson - stats |
安装完成后,终端运行
1 | sudo jtop |
2 增加Swap分区大小
创建swap文件
1 | sudo fallocate - l 4G swapfile |
锁定文件的root权限,防止普通用户能够访问该文件,以免造成重大的安全隐患:
1 | sudo chmod 600 swapfile |
将文件标记为交换空间
1 | sudo mkswap swapfile |
启用该交换文件
1 | sudo swapon swapfile |
这时,我们可以通过jtop再次查看swp增加了4g,Dsk也少了4g空间。
如果我们重新启动,服务器不会自动保留swap设置,但是dsk的空间已经减少了,我们可以通过以下指令还原
1 | sudo rm - rf swapfile |
我们可以通过将swap文件添加到/etc/fstab文件中来永久保存。备份/etc/fstab文件以防出错:
1 | sudo cp / etc / fstab / etc / fstab.bak |
将swap文件信息添加到/etc/fstab文件的末尾:
1 | echo 'swapfile none swap sw 0 0' | sudo tee - a / etc / fstab |
这样就保留了swap文件。
配置cuda10.2环境
vim打开配置文件
1 | sudo vim ~ / .bashrc |
在此文件中添加以下信息
1 2 3 | export PATH = / usr / local / cuda - 10.2 / bin ${PATH: + :${PATH}} export LD_LIBRARY_PATH = / usr / local / cuda - 10.2 / lib64${LD_LIBRARY_PATH: + :${LD_LIBRARY_PATH}} export CUDA_ROOT = / usr / local / cuda |
更新
1 | source ~ / .bashrc |
此时使用 “nvcc -V” 命令,就可以看到 cuda 的版本号了。
安装tensorrtx
下载yolov5权重和tensorrtx
1 2 | git clone - b v6. 0 https: / / github.com / ultralytics / yolov5.git git clone https: / / github.com / wang - xinyu / tensorrtx.git |
拷贝tensorrtx项目中的gen_wts.py到yolov5项目中,利用gen_wts.py生成.wts权重
1 2 3 4 5 6 | // clone code according to above #Different versions of yolov5 // download https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt cp {tensorrtx}/yolov5/gen_wts.py {ultralytics}/yolov5 cd {ultralytics}/yolov5 python gen_wts.py -w yolov5s.pt -o yolov5s.wts // a file 'yolov5s.wts' will be generated. |
方法1:使用tensorrt c++推理:build tensorrtx/yolov5然后运行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | cd {tensorrtx}/yolov5/ // update CLASS_NUM in yololayer.h if your model is trained on custom dataset mkdir build cd build cp {ultralytics}/yolov5/yolov5s.wts {tensorrtx}/yolov5/build cmake .. make sudo ./yolov5 -s [.wts] [.engine] [n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw] // serialize model to plan file sudo ./yolov5 -d [.engine] [image folder] // deserialize and run inference, the images in [image folder] will be processed. // For example yolov5s sudo ./yolov5 -s yolov5s.wts yolov5s.engine s sudo ./yolov5 -d yolov5s.engine ../samples // For example Custom model with depth_multiple=0.17, width_multiple=0.25 in yolov5.yaml sudo ./yolov5 -s yolov5_custom.wts yolov5.engine c 0.17 0.25 sudo ./yolov5 -d yolov5.engine ../samples |
方法2:使用tensorrt python推理
1 2 3 4 5 6 | // install python-tensorrt, pycuda, etc. // ensure the yolov5s.engine and libmyplugins.so have been built python yolov5_trt.py // Another version of python script, which is using CUDA Python instead of pycuda. python yolov5_trt_cuda_python.py |
参考
2. 在Pi和Jetson nano上运行深度网络,程序被Killed
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理