对于jetson nano 的docker部署jetson-inference等模型

这篇具有很好参考价值的文章主要介绍了对于jetson nano 的docker部署jetson-inference等模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于Nvidia jetson nano来说是一款十分优秀的网络模型部署设备我对于nano来说也是学习了2个星期左右.这也是对我这一阶段做一个复习总结吧!

目录

烧录

 下载jetson-inference

dock镜像部署操作

 跑个例程助助兴

找到函数接口进行调整

我用的是jetson nano a02 版本 是4GB内存大小的

烧录

首先你得获取一张至少是32GB的TF/sd卡去烧录jetson nano的系统镜像 系统镜像的获取是在

网址:JetPack SDK 4.6.1 | NVIDIA Developerhttps://developer.nvidia.com/embedded/jetpack-sdk-461这个网址上

对于jetson nano 的docker部署jetson-inference等模型

框框内就是jetson nano 4GB对应的系统镜像.直接下载就行.用了两个软件,还有另外一个链接软件也是很常用的

1.SDFormatter   (sd卡格式化软件)   2.balena.etcher  (镜像烧录软件)

3.MobaXterm(ssh链接以及文件传输软件)

对于jetson nano 的docker部署jetson-inference等模型对于jetson nano 的docker部署jetson-inference等模型

对于jetson nano 的docker部署jetson-inference等模型

当镜像烧录好之后插入jetson nano 的 SD卡的卡槽

小心插拔这个sd卡槽,切忌用蛮力注意金手指朝上!!

对于jetson nano 的docker部署jetson-inference等模型

然后烧录就完成啦!!!

我建议每个jetson nano都买个风扇这样的话就不会造成跑着跑着东西,nano自动关机啦!!

这样我们配置一下(配置的话我就不细说了基本上是默认滴,改一下语言就行了)

对于jetson nano 的docker部署jetson-inference等模型

每个nano上应该都自动装着jtop ,可以实时监控nano的资源性能等信息(在任意路径下的Terminal输入jtop即可启动)

对于jetson nano 的docker部署jetson-inference等模型

 下载jetson-inference

在github上官网找到,并且选择docker镜像的方法

GitHub - dusty-nv/jetson-inference: Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson. - GitHub - dusty-nv/jetson-inference: Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.https://github.com/dusty-nv/jetson-inference对于jetson nano 的docker部署jetson-inference等模型对于jetson nano 的docker部署jetson-inference等模型

并且在

 对于jetson nano 的docker部署jetson-inference等模型

 选择JetPack 4.6.1的版本对应jetson nano 烧录镜像的版本号

在jetson nano 的Terminal上输入 docker pull dustynv/jetson-inference:r32.7.1

提示没有权限所以我们要到Docker Hubhttps://hub.docker.com/%C2%A0

这里去注册一下自己 的账号

然后在Terminal上登录  docker login --username 账号名

再进行拉取镜像

在拉取镜像的Terminal路径下会生成一个jetson-inference的文件集是容器在宿主机的数据

对于jetson nano 的docker部署jetson-inference等模型

dock镜像部署操作

 跑个例程助助兴

•    docker run --runtime nvidia -it 【容器id】 【命令】

并且我做的是detection任务所以我又创建了一个的detection的文件夹去让容器被映射到.

在终端中输入那么一长串命令,你们得根据自己的地址以及自己的摄像头信息去整

docker run -it --rm --runtime nvidia -v ~/Desktop/AI/jetson-inference/data:/jetson-inference/data -v /dev/video0:/dev/video0 --device /dev/video0 --network host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix -v /etc/enctune.conf:/etc/enctune.conf -v ~/Desktop/AI/detection/data:/jetson-inference/python/training/detection/ssd/data -v ~/Desktop/AI/detection/models:/jetson-inference/python/training/detection/ssd/models -v ~/Desktop/AI/detection:/jetson-inference/python/training/detection/ssd 7a7d343029a2 /bin/bash

 对于jetson nano 的docker部署jetson-inference等模型

这一长串命令 是为了进入容器中,并且要让自己宿主机的文件夹映射到容器中,不然很容易发生找不到文件夹的报错

进入到容器中

 由于我都利用download-models.sh脚本在nano上自己下载好了模型文件,并且获取了onnx推理过的文件对于jetson nano 的docker部署jetson-inference等模型

下载的文件都在jetson-inferernce/data/networks里面,

当然解压过后是在jetson-inferernce/data/networks/SSD-Mobilenet-v2的文件夹中我们可以看到一个.uff文件这个文件和onnx一样是未经过tensorRT推理过的一个.engine文件是经过推理过的工程文件,ssd_coco_labels.txt是对应的txt文件

 对于jetson nano 的docker部署jetson-inference等模型

所以我可以直接调用模型文件对于jetson nano 的docker部署jetson-inference等模型

我先加入我自己映射到的文件夹

cd python/training/detection/ssd

 然后我们去github上查看官方文档与官方例程jetson-inference/docs at master · dusty-nv/jetson-inference · GitHubHello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson. - jetson-inference/docs at master · dusty-nv/jetson-inferencehttps://github.com/dusty-nv/jetson-inference/tree/master/docs

对于jetson nano 的docker部署jetson-inference等模型

 由于我这次做的都是detection的模型所以我打开了detectnet-example-2.md的文档

对于jetson nano 的docker部署jetson-inference等模型

 直接拷贝官方例程(但是注意一下你得改一下摄像头的参数哦!!!)  

直接输入 python3 example.py运行就行了

对于jetson nano 的docker部署jetson-inference等模型对于jetson nano 的docker部署jetson-inference等模型

这个就是MobileNetV2的网络  跑出来的,但是只有24帧,我也测过mobilenetV1,有40多帧数

找到函数接口进行调整

但是这些都是根据我们到例程,我们怎么做开发呢???本人熟练使用opencv,所以我想用opencv的操作去读取去整这些图像

 所以我又苦逼的去查官网文档的函数参数去咯!!!

对于jetson nano 的docker部署jetson-inference等模型

点击这个detectNet 然后就跳转到函数解析的地址了

对于jetson nano 的docker部署jetson-inference等模型

 那么我就可以看到这个函数的参数和输出了,找了我2天的时间,我也是个新手,英文读的也是有点麻烦,终于找到了这个  

detections = net.Detect(img)

的输出

 对于jetson nano 的docker部署jetson-inference等模型

 磨磨蹭蹭终于做好了修改,顺便加了一个框哈哈哈哈!那么这个阶段性成果就到这啦!

import cv2
import jetson.inference
import jetson.utils
from jetson.inference import detectNet
from jetson.utils import videoSource, videoOutput, logUsage, cudaFont
import numpy as np
import time
import sys
import random
# width=1280
# height=720
# dispW=width
# dispH=height
# flip=2

#以下是使用nano板载摄像头
#camSet='nvarguscamerasrc !  video/x-raw(memory:NVMM), width=3264, height=2464, format=NV12, framerate=21/1 ! nvvidconv flip-method='+str(flip)+' ! video/x-raw, width='+str(dispW)+', height='+str(dispH)+', format=BGRx ! videoconvert ! video/x-raw, format=BGR ! videobalance  contrast=1.5 brightness=-.3 saturation=1.2 ! appsink  '
#cam1=cv2.VideoCapture(camSet)

#此处我们使用的usb摄像头
cam1=cv2.VideoCapture('/dev/video0')
#cam1.set(cv2.CAP_PROP_FRAME_WIDTH,dispW)
#cam1.set(cv2.CAP_PROP_FRAME_HEIGHT,dispH)

#添加自己训练的模型,预训练后面加数组,添加自己的模型标签!!
#net=jetson.inference.imageNet('alexnet',['--model=/home/nano/jetson-inference/python/training/classification/myModel/resnet18.onnx','--input_blob=input_0','--output_blob=output_0','--labels=/home/nano/jetson-inference/myTrain/labels.txt'])

#=======#
#       #
#       #
#=======#
def plot_one_box(x, img, color=None, label=None, line_thickness=None):
    # Plots one bounding box on image img
    tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1  # line/font thickness
    color = color or [random.randint(0, 255) for _ in range(3)]
    c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3]))
    cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA)
    if label:

        tf = max(tl - 1, 1)  # font thickness
        t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
        c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3
        cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA)  # filled
        cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)



#=========配置=========#
net = detectNet("ssd-mobilenet-v2", threshold=0.5)  #网络配置
font=cv2.FONT_HERSHEY_SIMPLEX  #字体设置
timeMark=time.time()
fpsFilter=0
cls_num= 100
colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(cls_num)]
#======================#

#以下是opencv处理
while True:
    _,frame=cam1.read()
    img=cv2.cvtColor(frame,cv2.COLOR_BGR2RGBA).astype(np.float32)
    img=jetson.utils.cudaFromNumpy(img)
    detections = net.Detect(img)
    if len(detections)>0:
        for detection in detections:
            lab_id = detection.ClassID
            label = '%s %.2f' % (net.GetClassDesc(lab_id), detection.Confidence)
            x1y1x2y2 = [detection.Left,detection.Top,detection.Right,detection.Width]

            plot_one_box(x1y1x2y2,frame,color = colors[lab_id],label = label)


    dt=time.time()-timeMark
    fps=1/dt
    fpsFilter=.95*fpsFilter +.05*fps
    timeMark=time.time()
    cv2.putText(frame, str(round(fpsFilter, 1)) + ' fps ', (0, 30), font, 1, (0, 0, 255), 2)
    cv2.imshow('recCam',frame)     ###记住重新绘制函数名字要一样!!!!别瞎动这两个函数,不然直接死机
    cv2.moveWindow('recCam',0,0)   ###记住重新绘制函数名字要一样!!!!
    if cv2.waitKey(1)==ord('q'):
        break
cam1.release()
cv2.destroyAllWindows()

对于jetson nano 的docker部署jetson-inference等模型

 下一阶段那么就是得做自己训练的网络再进行直接识别和开机启动与复制sd卡文章来源地址https://www.toymoban.com/news/detail-450759.html

到了这里,关于对于jetson nano 的docker部署jetson-inference等模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jetson nano部署Yolov5目标检测 + Tensor RT加速(超级详细版)

    在工作或学习中我们需要进行部署,下面这篇文章是我亲自部署jetson nano之后做出的总结,包括自己遇到一些报错和踩坑,希望对你们有所帮助 : ) 读卡器 SD卡  小螺丝刀 网线(更改语言需要网络) 烧录镜像就是要把SD卡里的东西给完全清除,好比我们电脑重装系统一样,

    2024年02月13日
    浏览(27)
  • 【AI】在NVIDIA Jetson Orin Nano上使用tensorrtx部署yolov8

    本人下载的yolov8n.pt yolov8n-cls.pt:用于分类 yolov8n-pose.pt:用于姿势识别 yolov8n-seg.pt:用于对象分割 yolov8n-v8loader.pt:专用于人员检测器??? yolov8n.pt:用于对象检测 1)测试图片

    2024年02月06日
    浏览(34)
  • Jetson Nano部署YOLOv5与Tensorrtx加速——(自己走一遍全过程记录)

    搞了一下Jetson nano和YOLOv5,网上的资料大多重复也有许多的坑,在配置过程中摸爬滚打了好几天,出坑后决定写下这份教程供自己备忘。 事先声明,这篇文章的许多内容本身并不是原创,而是将配置过程中的文献进行了搜集整理,但是所有步骤都1:1复刻我的配置过程,包括其

    2024年02月03日
    浏览(32)
  • 【Nvidia Jetson Xavier NX/AGX/NANO】上用docker跑pytorch等cv推理应用

    在jetson上使用docker跑opencv和pytorch其实主要是要找对镜像,docker官方的hub里并没有适合的能直接跑的镜像,但是nvidia自己提供了L4T的pytorch和ML镜像。 单独pytorch的镜像: https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch 整合了opencv,pytorch,tensorflow的ML镜像: https://catalog.ngc.n

    2024年02月12日
    浏览(28)
  • jetson nano GPIO控制说明

    GPIO(General Purpose Input Output)通用输入输出。有时候我们会简称为“IO口”。GPIO口在智能硬件开发中是一个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。Jetson TX1、TX2、AGX Xavier和

    2024年02月16日
    浏览(33)
  • 【nano系列】jetson nano 迁移系统、制作SD卡启动扩展内存(二)

    我的SD卡在nano中显示的名称为 /dev/sda1 ,不同于其他文章 的 /dev/mmcblk1p1。 Micro SD卡是一种极细小的快闪存储器卡,其格式源自SanDisk创造,原本这种记忆卡称为T-Flash,及后改称为Trans Flash。TF卡是Micro SD卡的旧称呼,两者没有区别。 nano编辑器无需图形界面,操作比vim更方便 下

    2023年04月19日
    浏览(26)
  • jetson nano装opencv4.1.1

    一:下载opencv4.1.1及其相关的安装包,修改一下 可以去官网下载(opencv4和opencv-contrib的版本要对应): opencv4.1.1: https://github.com/opencv/opencv/tags?after=4.3.0 opencv-contrib-4.1.1: https://github.com/opencv/opencv_contrib/tags?after=3.4.12 也可以去这里下载:https://download.csdn.net/download/weixin_45235219/87

    2024年02月05日
    浏览(37)
  • 在 Jetson Nano 上安装 ncnn 深度学习框架。

    本页面将指导您在 Jetson Nano 上安装腾讯的 ncnn 框架。由于 ncnn 框架面向移动设备(例如 Android 手机),因此它不支持 CUDA。然而,大多数 Android 手机使用 Vulkan API 对其 GPU 进行低级访问。 ncnn 框架可以使用 Vulkan 例程来加速深度学习模型的卷积。 Jetson Nano 具有 ncnn 将使用的

    2024年02月11日
    浏览(27)
  • 自己制作智能语音机器人(基于jetson nano)

    如上图,主要采用jetson上编写python代码实现,支持离线语音唤醒、在线语音识别、大模型智能文档、在线语音合成。 所需硬件如下: jetson nano:linux 科大讯飞麦克风硬件:AIUI R818麦克阵列开发套件+6麦阵列,支持离线语音唤醒 USB免驱声卡+喇叭 所需软件如下: 科大讯飞在线语

    2024年02月15日
    浏览(77)
  • Jetson nano裸机介绍及 Opencv的环境配置

    本人比较痴迷于硬件方向,最近得到老师的支持,从老师手里借到一块Nvidia Jetson nano 的板子(狂喜),下文简述nano。刚拿到板子经过已经完成点灯的操作,老师指示点完灯可以配置opencv的环境,前往图像处理的指示海洋。而配置opencv的过程曲折而痛苦,这里主要总结并分享

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包