一、配置好你的Jetson Tx2 NX
1、电脑安装Ubuntu虚拟机18.04,切记一定不要用virtualbox!!!因为vmware可以选usb连接。
2、烧录系统(直接分配100g)
SDKmanager登录不进去就选新版本,我用的2.0.0,烧录的jetpack4.6.4
宿主机可以不要勾选安装
可以先烧录系统os,然后将系统转到固态硬盘上面,然后再烧录sdk包,防止原硬盘空间不足,烧sdk包可以不用跳线帽了,直接开机在里面ifconfig找到ip地址就行
【玩转Jetson TX2 NX】(二)TX2 NX刷机+烧录系统和SDK(详细教程+错误解决)_鲁棒最小二乘支持向量机的博客-优快云博客【玩转Jetson TX2 NX】(三)TX2 NX挂载 M.2 固态硬盘+移动系统(详细教程)-优快云博客
直接nvcc -v,有了cuda信息就说明安装好了
3、装TensorFlow,找对版本,我用的2.7.0版本,注意轮子是aarch64格式的,离线安装靠谱些
官方教程里面的改pip3操作,不改比较好
官方教程的测试,我是测试没通过过,不知道装好了没
【玩转Jetson TX2 NX】(四)TX2 NX安装TensorFlow GPU(详细教程+错误解决)_tx2 安装tensorflow-优快云博客
4、装tensorrt,jetson-inference这个库确实是早上和深夜下载比较合适
摄像头物理颠倒没去弄,网上教程用google net去识别一只鸟测试通过了
【玩转Jetson TX2 NX】(五)TX2 NX TensorRT环境搭建及实时图像识别(详细教程+错误解决)_jetson安装tensorrt_鲁棒最小二乘支持向量机的博客-优快云博客
5、试一下detectnet和YOLOv4
【玩转Jetson TX2 NX】(六)TX2 NX DetectNet+板载摄像头实时检测目标(详细教程)_鲁棒最小二乘支持向量机的博客-优快云博客
【玩转Jetson TX2 NX】(七)TX2 NX YoLoV4环境搭建+板载摄像头实时目标检测(详细教程+错误解决)_jetson tx2 yolo-优快云博客
参考着yolov4,使用命令行运行gpu版本的yolov8
6、装vscode和pycharm
vscode属实用不习惯,不支持3.7以下的python,jetpack自带的python是3.6.9
pycharm教程找不到了,最好有了archiconda再用
【玩转Jetson TX2 NX】(八)TX2 NX Visual Studio Code(VSCode)安装(详细教程)_tx2安装vscode-优快云博客
7、装onnx-tensorrt,也不知道用上了没有,反正是装了
【玩转Jetson TX2 NX】(九)TX2 NX 安装onnx-tensorrt工具(详细教程+错误解决)_jetson安装tensorrt_鲁棒最小二乘支持向量机的博客-优快云博客8
8、装archiconda,玩法就是conda,
装jtop
下载torch的时候,发现jetpack4最多装torch1.10,然后离线转反正是装不上
后续虚拟环境的python3.9中安装yolov8就成功转了2.1.1的torch,但估计是cpu版本的
【玩转Jetson TX2 NX】(十)TX2 NX 安装Archiconda3+创建pytorch环境(详细教程+错误解决)_鲁棒最小二乘支持向量机的博客-优快云博客
9、unet部署,看了一下,没玩
【玩转Jetson TX2 NX】(十一)TX2 NX 基于UNet网络实现显著目标分割(详细教程+错误解决)-优快云博客
二、部署自己的YOLOv8
主要参考两个教程,一个是linux下的tensorrt-alpha,不太一样,因为人家是2070显卡,另一个是jetson nano下的infer,比较接近tx2 nx的部署工作
linux下 yolov8 tensorrt模型部署_韩师兄_的博客-优快云博客
Jetson nano部署YOLOv8_jetson nano yolo_爱听歌的周童鞋的博客-优快云博客
直接来最终结果:
1、首先技术路线选pt转onnx转trt或者engine,这是最简单的,其中只有tensorrt这个软件版本跟着系统和设备跑,那么方便起见pt转onnx就在windows下面做了
2、pt2onnx:注意以下的参数含义
simplify:基于onnxsim,强大的自动优化工具,无论是windows还是linux下都有来自Identity这个模块带来的conv或者bias丢失,直接处理掉了,反正开着就对了
dynamic:不开就是静态,也就是说batchsize固定了,可以指定batch的值,但是后面用的时候就会只能固定用一个batchsize,所以这里不适合我用,但是也可以学一下
开就是动态,动态就需要改yolov8的exporter的代码,原代码会将batch、height、width都动态,而新代码只有batch是动态,不改这个地方,jetson上面转engine就报错,windows倒是不报错,然后trans
其中infer这个模型还需要trans一下输出的维度才能用,不转就报错,转了就成功,而alpha这个模型则不用trans,不然就没有结果
3、onnx2engine:这个必须在nx上面干了
首先要将trtexec添加进环境里面,然后转成trt和engine,其中engine更高效
静态onnx直接转就完事了,动态onnx需要指定一下最小最大最优shape
默认是fp32,设置fp16一般都能提速,设置int8精度损失大,--calib进行校正,还可以int8和fp16进行混合量化,都可以试试,其中int8需要校准数据集,还不会
4、使用engine:
方案一就是infer,实现了单张图/多张图/速度计算/量化部署,但没有实现视频、摄像头、以及前处理后处理时间计算
方案二就是alpha,实现了单张图/视频/前后处理时间,但没有实现摄像头
补充:MAXN模式最厉害
windows下的部署就参考这一篇文章
win10下 yolov8 tensorrt模型部署-优快云博客
摄像头问题已解决: