0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Jetson Orin Nano纳米刷机介绍

OpenCV学堂 来源:OpenCV学院 作者:忧郁的鱼 2023-04-01 09:55 次阅读

Jetson Orin Nano 介绍

NVIDIA Jetson Orin Nano 系列模组以最小的 Jetson 外形提供高达 40 TOPS 的 AI 算力,功耗在 7W 至 15W 之间,算力相当于是 NVIDIA Jetson Nano 的 80 倍。Jetson Orin Nano 提供 8GB 和 4GB两个版本,其中开发套件是8GB版本。

可以广泛应用于智能机器人开发、智能无人机开发、智能相机开发。从Jetson Orin Nano 到最高性能的 Jetson AGX Orin,有六个基于相同架构的不同模块,是端侧与边缘智能的理想开发载板。

显示器接口是DP的,必须买个DP转HDMI转接头才可以接到HDMI支持的显示器,最重要的这款支持WIFI了。以前的Jetson Nano是USB供电就可以了,这个是配有专门的电源线,19V电源输入,没办法算力强悍肯定得多耗电,相对来说还是低功耗。

JetPack5.1镜像制作

安装JetPack5.1之前先准备好一个microSD卡,最少是64G推荐128G的,因为Jetpack5.1安装程序烧录完成已经是20G,再安装一些其它第三方库比如pytorch、torchvision、pyqt5或者QT什么的,就没有多少应用程序开发与部署可用空间了。准备好microSD卡之后,就先下载镜像文件

必须NVIDIA的账号登录之后才可以下载。JetPack5.1已经预安装好了

- CUDA11.4.19
- cuDNN8.6.0
- TensorRT8.5.2
- OpenCV4.5.4
还有其他的一些支持工具软件。下载好Jetpack5.1镜像包之后,先下载SD卡格式化软件,格式化SD卡。截图如下:

0785c386-cfe7-11ed-bfe3-dac502259ad0.png

然后下载镜像制作软件

安装好之后选择镜像文件与SD卡,然后开始制作,显示如下:

07a3b558-cfe7-11ed-bfe3-dac502259ad0.png

07df39ca-cfe7-11ed-bfe3-dac502259ad0.png

烧录完成以后插到Jetson Orin Nano开发板的风扇下方的卡槽中

安装pytorch与torchvision

安装好了Jetpack5.1之后,我才发现英伟达官方还没有正式发布适配的pytorch版本跟torchvision版本,

意思是用pytorch1.14版本,以此类推torchvision选择0.15.1版本。然后从这里直接下载1.14适配jetpack的版本文件,

下载好之后,别着急安装pytroch,先通过下面的命令行安装好依赖:

sudo apt-get -y install autoconf bc build-essential g++-8 gcc-8 clang-8 lld-8 gettext-base gfortran-8 iputils-ping libbz2-dev libc++-dev libcgal-dev libffi-dev libfreetype6-dev libhdf5-dev libjpeg-dev liblzma-dev libncurses5-dev libncursesw5-dev libpng-dev libreadline-dev libssl-dev libsqlite3-dev libxml2-dev libxslt-dev locales moreutils openssl python-openssl rsync scons python3-pip libopenblas-dev;
国内安装经常会有网络无法连接发生各种错误,没事多执行几次命令行肯定可以安装成功的(我的个人经验)。 安装好pytorch相关依赖之后,安装pytorch就很简单:
pip3 install torch-1.14.0a0+44dac51c.nv23.02-cp38-cp38-linux_aarch64.whl
安装好pytorch之后,使用下面的命令行从源码安装torchvision 0.15.1版本,先安装依赖,然后下载安装包,最后从源码编译安装,大概十分钟左右就好,相关命令行如下:
sudo apt install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install --upgrade pillow
wget https://github.com/pytorch/vision/archive/refs/tags/v0.15.1.zip
unzip v0.15.1.zip
cd vision-0.15.1
export BUILD_VERSION=0.15.1
python3 setup.py install --user
同样不行就执行几次,肯定会成功安装的,我安装与运行的截图如下:

082588e4-cfe7-11ed-bfe3-dac502259ad0.png

都安装好了用pip3 list查一下,然后我发现pip list显示没有TensorRT,但是我查一下已经有了,只是缺少python包支持,我记得jetpack4.x刷机之后就自动有了,这个怎么没有了,我晕!不过没关系,执行下面的命令行安装python TensorRT支持,执行完之后肯定有了!

084cbdb0-cfe7-11ed-bfe3-dac502259ad0.png

最终验证测试如下:

08704b54-cfe7-11ed-bfe3-dac502259ad0.png

说明一切准备工作就绪了。

说明一下,安装过程中要求输入提示的都输入 y

ONNX2ENGINE

我发现我在TensorRT8.4上面转换的engine文件无法在TensorRT8.5上面成功加载,所以我直接把YOLOv8n的ONNX格式模型文件直接拷贝到Jetson Orin Nano上,然后通过命令行重新生成engine文件:

cd /usr/src/tensorrt/bin
./trtexec --onnx= --saveEngine=
相关截图如下:

088a4234-cfe7-11ed-bfe3-dac502259ad0.png

089e8334-cfe7-11ed-bfe3-dac502259ad0.png

08ad26dc-cfe7-11ed-bfe3-dac502259ad0.png

这个时间大概在五分钟左右,需要等一下才可以转换好。

YOLOv8对象检测演示

在此之前,我已经写好了YOLOv8 + TensorRT的测试程序,所以我直接把程序拷贝过来,然后用新生成的yolov8n.engine开启YOLOv8对象检测推理,测试视频运行如下:

08c11016-cfe7-11ed-bfe3-dac502259ad0.png

09065f36-cfe7-11ed-bfe3-dac502259ad0.png

这里程序中FPS计算包含了前后处理,因为两个视频的分辨率不同,导致前后处理的耗时不同,对象我之前在Jetson Nano上的推理速度,我只能说太厉害了,因为我之前Python版本tensorRT的推理这个程序在Jetson Nano一跑过一会就要卡死的感觉,特别慢!相关的测试源码如下:

  1importtensorrtastrt
  2fromtorchvisionimporttransforms
  3importtorchast
  4fromcollectionsimportOrderedDict,namedtuple
  5importcv2ascv
  6importtime
  7importnumpyasnp
  8
  9img_transform=transforms.Compose([transforms.ToTensor(),
 10transforms.Resize((640,640))
 11])
 12
 13defload_classes():
 14withopen("classes.txt","r")asf:
 15class_list=[cname.strip()forcnameinf.readlines()]
 16returnclass_list
 17
 18
 19defformat_yolov8(frame):
 20row,col,_=frame.shape
 21_max=max(col,row)
 22result=np.zeros((_max,_max,3),np.uint8)
 23result[0:row,0:col]=frame
 24result=cv.cvtColor(result,cv.COLOR_BGR2RGB)
 25returnresult
 26
 27defwrap_detection(input_image,output_data):
 28class_ids=[]
 29confidences=[]
 30boxes=[]
 31out_data=output_data.T
 32rows=out_data.shape[0]
 33
 34image_width,image_height,_=input_image.shape
 35
 36x_factor=image_width/640.0
 37y_factor=image_height/640.0
 38
 39forrinrange(rows):
 40row=out_data[r]
 41classes_scores=row[4:]
 42class_id=np.argmax(classes_scores)
 43if(classes_scores[class_id]>.25):
 44class_ids.append(class_id)
 45confidences.append(classes_scores[class_id])
 46x,y,w,h=row[0].item(),row[1].item(),row[2].item(),row[3].item()
 47left=int((x-0.5*w)*x_factor)
 48top=int((y-0.5*h)*y_factor)
 49width=int(w*x_factor)
 50height=int(h*y_factor)
 51box=np.array([left,top,width,height])
 52boxes.append(box)
 53
 54indexes=cv.dnn.NMSBoxes(boxes,confidences,0.25,0.25)
 55
 56result_class_ids=[]
 57result_confidences=[]
 58result_boxes=[]
 59
 60foriinindexes:
 61result_confidences.append(confidences[i])
 62result_class_ids.append(class_ids[i])
 63result_boxes.append(boxes[i])
 64
 65returnresult_class_ids,result_confidences,result_boxes
 66defgpu_trt_demo():
 67class_list=load_classes()
 68device=t.device('cuda:0')
 69Binding=namedtuple('Binding',('name','dtype','shape','data','ptr'))
 70logger=trt.Logger(trt.Logger.INFO)
 71withopen("yolov8n.engine",'rb')asf,trt.Runtime(logger)asruntime:
 72model=runtime.deserialize_cuda_engine(f.read())
 73bindings=OrderedDict()
 74forindexinrange(model.num_bindings):
 75name=model.get_binding_name(index)
 76dtype=trt.nptype(model.get_binding_dtype(index))
 77shape=model.get_binding_shape(index)
 78data=t.from_numpy(np.empty(shape,dtype=np.dtype(dtype))).to(device)
 79bindings[name]=Binding(name,dtype,shape,data,int(data.data_ptr()))
 80binding_addrs=OrderedDict((n,d.ptr)forn,dinbindings.items())
 81context=model.create_execution_context()
 82
 83capture=cv.VideoCapture("test.mp4")
 84colors=[(255,255,0),(0,255,0),(0,255,255),(255,0,0)]
 85whileTrue:
 86_,frame=capture.read()
 87ifframeisNone:
 88print("Endofstream")
 89break
 90fh,fw,fc=frame.shape
 91start=time.time()
 92image=format_yolov8(frame)
 93x_input=img_transform(image).view(1,3,640,640).to(device)
 94binding_addrs['images']=int(x_input.data_ptr())
 95context.execute_v2(list(binding_addrs.values()))
 96out_prob=bindings['output0'].data.cpu().numpy()
 97end=time.time()
 98
 99class_ids,confidences,boxes=wrap_detection(image,np.squeeze(out_prob,0))
100for(classid,confidence,box)inzip(class_ids,confidences,boxes):
101ifbox[2]>fw*0.67:
102continue
103color=colors[int(classid)%len(colors)]
104cv.rectangle(frame,box,color,2)
105cv.rectangle(frame,(box[0],box[1]-20),(box[0]+box[2],box[1]),color,-1)
106cv.putText(frame,class_list[classid]+""+("%.2f"%confidence),(box[0],box[1]-10),cv.FONT_HERSHEY_SIMPLEX,.5,(0,0,0))
107
108inf_end=end-start
109fps=1/inf_end
110fps_label="FPS:%.2f"%fps
111cv.putText(frame,fps_label,(10,25),cv.FONT_HERSHEY_SIMPLEX,1,(0,0,255),2)
112cv.imshow("YOLOv8+TensorRT8.5.xObjectDetection",frame)
113cc=cv.waitKey(1)
114ifcc==27:
115break
116cv.waitKey(0)
117cv.destroyAllWindows()
118
119
120if__name__=="__main__":
121gpu_trt_demo()

总结:

Jetson Orin Nano从系统烧录到安装好pytorch、torchvision、部署运行YOLOv8推理演示程序基本没有什么坑,唯一需要注意的是numpy别用1.24的最新版本。Jetson Orin Nano算力相比Jetson Nano感觉是一个天上一个地下。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 显示器
    +关注

    关注

    21

    文章

    4737

    浏览量

    137866
  • HDMI
    +关注

    关注

    32

    文章

    1488

    浏览量

    149744
  • 智能机器人
    +关注

    关注

    17

    文章

    825

    浏览量

    81329
  • USB供电
    +关注

    关注

    0

    文章

    28

    浏览量

    14797

原文标题:Jetson Orin Nano刷机与YOLOv8部署演示

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    英伟达推出Jetson Orin Nano模组最高40TOPS性能,为机器人和边缘AI提供强动力

    了6个基于Orin的生产模组,可以支持各种边缘AI和机器人应用。   据NVIDIA嵌入式与边缘计算副总裁Deepu Talla介绍,全新的Jetson Orin
    的头像 发表于 09-21 09:44 6745次阅读

    可适配NVIDIA Jetson Orin NX和Orin Nano的工业级准系统,研华EPC-R7300助力产品开发

    2023 年, 工业嵌入式AI解决方案供应商研华科技发布工业准系统 EPC-R7300,该产品适用于NVIDIA®Jetson Orin™NX及JetsonOrin™Nano模块。利用强大
    发表于 04-26 16:47 803次阅读
    可适配NVIDIA <b class='flag-5'>Jetson</b> <b class='flag-5'>Orin</b> NX和<b class='flag-5'>Orin</b> <b class='flag-5'>Nano</b>的工业级准系统,研华EPC-R7300助力产品开发

    jetson nano开发板

    有大侠使用过jetson nano开发板吗?做了一块扩展板,有些问题,请教下。
    发表于 08-20 10:54

    Jetson Nano B01 从零入门笔记系列(一)基本组装与启动问题 精选资料推荐

    Jetson Nano B01 从零入门笔记系列(一)基本组装与启动问题1、基本组件构成与补充2、组装过程3、TF卡及启动教程要点原专业离板子类型的东西差的比较远,参加个四轴避障比
    发表于 07-20 08:07

    Jetson Nano简介

    目录1.Jetson Nano简介2. Jetson Nano环境配置2.1 开箱配件介绍2.2 烧录系统2.3 开机和基本设置2.4 开发
    发表于 07-26 07:44

    Jetson Nano具有哪些优势?Jetson Nano怎么安装?

    Jetson Nano具有哪些优势?Jetson Nano怎么安装?
    发表于 09-28 06:29

    Jetson Nano电源适配器有何功能

    NVIDIA Jetson Nano 电源适配器 (供电)1. Jetson Nano 供电Jetson
    发表于 12-27 07:03

    Jetson Nano是什么?有何作用

    Jetson Nano是一款小型,功能强大的计算机,适用于嵌入式应用程序和AI IoT这几天开始第一次使用Jetson Nano,也踩了一些坑,下面给大家分享一下,少走弯路如果您没有用
    发表于 01-12 06:43

    NVIDIA推出全新Jetson Orin Nano系统级模组

    NVIDIA 推出全新Jetson Orin Nano 系统级模组,扩充了NVIDIA Jetson产品阵容。全新Jetson
    的头像 发表于 09-22 09:54 964次阅读

    研扬同步在GTC中宣布NVIDIA Jetson Orin Nano 边缘计算AI平台BOXER-8621AI上市

    采用NVIDIA Jetson Orin Nano系统模块的BOXER-8621AI (台北,中国台湾,2022年9月22日)专业物联网及人工智能边缘运算平台研发制造大厂—研扬科技,今日
    的头像 发表于 09-27 11:34 1249次阅读
    研扬同步在GTC中宣布NVIDIA <b class='flag-5'>Jetson</b> <b class='flag-5'>Orin</b> <b class='flag-5'>Nano</b> 边缘计算AI平台BOXER-8621AI上市

    Jetson AGX Orin开发者套件转化为任何Jetson Orin模块

    随着 Jetson Orin Nano 在本次 GTC 大会的发布,整个 Jetson Orin 模块阵容现已揭晓。凭借高达 40 TOPS
    的头像 发表于 09-30 11:03 1493次阅读

    使用NVIDIA Jetson Orin Nano解决入门级边缘人工智能挑战

    2022 年 GTC , NVIDIA 宣布 Jetson Orin Nano 系列系统模块( SoM )。它们的 AI 性能是 NVIDIA Jetson
    的头像 发表于 10-11 14:47 1847次阅读
    使用NVIDIA <b class='flag-5'>Jetson</b> <b class='flag-5'>Orin</b> <b class='flag-5'>Nano</b>解决入门级边缘人工智能挑战

    利用开发工具包为所有六个NVIDIA Jetson Orin模块开发

      Orin Nano 模块拥有多达 40 个 AI 性能 TOPS ,为入门级 AI 设定了新标准,正如 Jetson AGX Orin 已经通过 275 个服务器级计算 TOPS
    的头像 发表于 10-12 09:16 1301次阅读
    利用开发工具包为所有六个NVIDIA <b class='flag-5'>Jetson</b> <b class='flag-5'>Orin</b>模块开发

    NVIDIA Jetson Orin Nano的性能基准

    在本次 GTC 大会上,NVIDIA 发布了Jetson Orin Nano系列的系统级模组(SoM)。其 AI 性能是 NVIDIA Jetson
    的头像 发表于 10-12 09:55 2114次阅读

    GTC23 | 使用 NVIDIA Jetson Orin Nano 开发套件开发 AI 机器人及智能视觉系统

    NVIDIA Jetson Orin Nano Developer Kit  为创建入门级 AI 机器人、智能无人机和智能视觉系统设定了一个新标准,同时简化了  NVIDIA Jetson
    的头像 发表于 03-29 03:40 1036次阅读