基于Jetson Nano嵌入式平台的YOLOV3-tiny模型部署

2023-05-16

1. 嵌入式平台简介

嵌入式是指可以嵌入设备或装置的特殊计算机系统。一般来说,具有数字接口的设备都有嵌入式系统,如手机、车载电脑、智能手表等,而嵌入式人工智能则是使人工智能算法能够在终端设备上运行的技术概念。目前,人工智能算法可以部署在云端和终端。 在终端上运行检测算法有很多优点,比如只传输有价值的信息,而不是原始的大容量视频,可以有效降低后端部署服务器的传输带宽和计算存储量,使系统的整体架构更具可移植性。嵌入式人工智能也面临许多挑战,比如需要综合考虑芯片的各个方面来评价芯片的性能,然后根据神经网络算法来做特殊的处理,实现嵌入式设备的无缝对接。目前,嵌入式人工智能面临着计算能力、功耗和散热三大挑战,这些也是经典嵌入式设备面临的问题。

嵌入式人工智能硬件包括GPU、DSP、ASIC、FPGA和神经元芯片等,需要求更快的指令周期和更低的功耗。多核中央处理器并不适合进行深度学习,因为由于中央处理器对分析大量非结构化数据建立和训练深度学习模型此类任务的能力不足。与中央处理器相比,图形处理器(graphics processor ,GPU)由于可以同时容纳数千个核心,进行并行计算处理大量数据,更适合深度学的训练和测试。NVIDIA的Jetson Nano平台包含性能更高、功能更强大的图形处理器。Jetson Nano平台它是一种高性价比的嵌入式人工智能设备,售价99美元,可以在其上有效地部署基于深度学习理论的各种任务模型。许多常见的人工智能框架如Tensorflow和Pytorch等都可以部署到Jetson Nano平台上,这使得开发人员可以很方便地将模型和框架集成到产品中。Jetson Nano平台可以接上高分辨率的视频传感器,而且可以并行处理多个传感器。Jetson Nano平台硬件是一个四核Cortex-A57CPU,图形处理器是最小的Maxwell架构图形卡,只有128个CUDA单元、4GB LPDDR4内存和16GB存储空间

2. 部署加速

2.1Gstreamer编解码加速 嵌入式平台在执行行人检测任务时,获得的原始图像数据是视频流,但是模型检测时需要图片数据,因此需要视频编解码方法将输入视频解码转换为图片数据格式。 Jetson Nano平台可以连接使用CSI摄像头。Jetson Nano平台开发条件支持IMX219摄像头模块,包括Leopard Imaging的LI_IMX219-MIPI-FF-NANO摄像头模块以及树善派的Camera Modulev2模块,本文将采用树莓派摄像头。采集到的视频流需要进一步操作。本文使用Gstreamer组件对输入的视频流进行编解码以及输出等操作,以降低视频流编解码耗时,减少行人检测的任务延时。

2.2 TensorRT模型加速

TensorRT是NVIDIA公司推出的GIE(GPU Inference Engine)C++库,其主要目的是要提高深度神经网络在其公司硬件产品上的推理速度,主要方式是通过更低精度的运算、神经网络计算结构的调整优化等。

深度学习模型的训练包括两个阶段:前向推理并计算损失函数、后向梯度传播和参数更新。为了获得更准确的网络参数,模型的训练阶段参数精度要求较高,深度神经网络的参数需要使用32位浮点(Floating-point,FP32)计算并存储。模型训练完成后,只需要前向的推理步骤即可完成相关任务。在模型推理阶段,可以适当降低了模型参数的精度,加快模型推理的速度,对模型推理结果影响不大。

一种常用的方法是用半精度浮点(FP16)和8位整数(INT8)代替模型中的单精度值进行运算,用0-1二进制量化网络参数加速部分卷积神经网络模型的计算。Jetson Nano平台支持半精密浮点运算。半精度浮点运算速度是单精度浮点运算速度的两倍。在本节中,将使用半精确模型参数来减少目标检测模型的推理时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Jetson Nano嵌入式平台的YOLOV3-tiny模型部署 的相关文章

  • 【c++】的作用域 (局部域,类域,名字命名空间,文件域)

    这里写目录标题 局部域类域类修饰指针由类限制修饰指向变量的指针由类修饰指向函数的指针 命名空间背景 xff1a 文件域 c 43 43 支持四个域 xff1a 局部域 xff0c 类域 xff0c 名字空间域 xff0c 文件域 局部域 函
  • Java变量名规则

    给大家简单介绍一下java中的变量名规则 和实用的起名工具 记忆变量名起名规则小技巧 变量名开头可用的类型 字下美人 字母 下划线 美元符号 人民币符号 变量名开头后面可用的类型 字下美人数非 字母 下划线 美元符号 人民币符号 数字 非关
  • Linux中的字符串和字节序列处理函数

    花了两天的时间总结了Linux编程时的字符串操作函数和字节序列操作函数 xff0c 以便后续查阅 这些函数大都不会去检查传入的参数是否为NULL xff0c 因此在使用之前要自己做检查 xff0c 否则后果你懂的 一个基本知识点 xff1a
  • extern "c"用法解析

    引言 C 43 43 保留了一部分过程式语言的特点 xff0c 因而它可以定义不属于任何类的全局变量和函数 但是 xff0c C 43 43 毕竟是一种面向对象的程序设计语言 xff0c 为了支持函数的重载 xff0c C 43 43 对全
  • 解决树莓派Unbuntu mate 使用VNC连接灰屏报错“Could not acquire name on session bus”问题

    修改 vnc xstartup 文件 打开 vnc xstartup 文件 1 添加两行 unset SESSION MANAGER unset DBUS SESSION BUS ADDRESS 2 查看桌面环境是什么 xff1a 先查看系
  • python:isinstance用法

    isinstance xff08 object xff0c type xff09 只要object是type类型 xff0c 返回True xff1b 否则返回False 作用 xff1a 来判断一个对象是否是一个已知的类型 其第一个参数
  • windows下开启Qemu串口调试

    1 EDKII 包编译 如果要在 windows 下启用串口信息打印 xff0c 需要在 build 时加 D DEBUG ON SERIAL PORT 选项 需要注意的是 xff0c 在 target txt 中 TARGET 只能是 D
  • 关于深度学习主机的一些选配问题

    作为一个深度学习的初学者 xff0c 你可能会遇到这样的问题 xff1a 我该如何训练我自己或者别人的Model xff1f 我该如何配置一台合适的主机 xff1f 目前有哪几种训练模型的方式 xff1f 接下来 xff0c 我将会对此进行
  • FreeRTOS中两个同等级无阻塞打印任务,只有一个能正常打印

    环境 xff1a STM32CubeMX 43 MDK5 printf重定向用的是官方例子 ifdef GNUC With GCC small printf option LD Linker gt Libraries gt Small pr
  • putty 连接Debian linux 报错Connection refused

    ubuntu默认并没有安装ssh服务 xff0c 如果通过ssh链接ubuntu xff0c 需要自己手动安装ssh server 判断是否安装ssh服务 xff0c 可以通过如下命令进行 xff1a xjj 64 xjj desktop
  • python 使用playsound模块出现编码问题。

    Error 259 for command play sound zhou mp3 wait 驱动程序无法识别指定的命令参数 Error 263 for command close sound zhou mp3 指定的设备未打开 xff0c
  • C/C++ 编程推荐学习顺序和书籍

    自学或者学习C C 43 43 编程不知道怎么办 xff1f 那么恭喜你看到本文 xff0c 本文将会为你提供C C 43 43 编程的学习书籍顺序推荐 xff0c 希望对大家有帮助 xff01 C C 43 43 语言基础入门书籍 xff
  • Android Studio 控制台中文乱码,解决方案都在这里了,完美解决

    前言 Android Studio 如果不进行配置的话 xff0c 运行程序时控制台中文乱码问题会非常严重 xff0c 甚至影响我们对信息的获取和程序的跟踪 通过历年的开发经验 xff0c 在本文中我总结出四点用于解决控制台中文乱码问题的方
  • 【C/C++】中的__FILE__、__LINE__、#line、__func__关键字(预定义宏)

    c 43 43 11预先定义了一些标识符 xff0c 其实也就是宏 现在简单说几个 xff1a 1 FILE 用于指示本行语句所在源文件的文件名 xff0c 如下 xff08 test c xff09 xff1a include lt st
  • 视觉SLAM入门十四讲

    视觉SLAM入门十四讲 写在前面的话什么是视觉SLAM视觉SLAM中所使用的摄像头传感器单目摄像头双目摄像头深度摄像头 经典视觉SLAM框架 写在前面的话 考研期间迷上了SLAM xff0c 买来了高翔 张涛等著的 视觉SLAM十四讲 从理
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • 敏捷开发:做一个合格的Scrum Master

    图片来源于网络 Scrum Master Beauty and Beast 在Scrum敏捷开发中有三种主要的角色 xff1a Product Owner xff08 产品负责人 xff0c 简称 34 PO 34 xff09 Scrum
  • 嵌入式软件:通过串口进行调试的一些思考和实践

    最近的工作还是改那坨代码 维护这摊东西也快要2年了 xff0c 好几次想重构它 xff0c 顺便整理一下 xff0c 不过我还是缺乏那种毅力 在这段时间里我还加了一些功能模块 xff0c 估计如果以后有新人接手这摊东西 xff0c 会抱怨这
  • 串口调试助手没有显示

    用cubeMX生成工程之后 xff0c 笔者写了下面两句话 xff08 向串口发送一个字符串 xff09 xff1a 但是 xff0c 打开调试工具怎么也接受不到数据 xff0c 魔术棒里面的 芯片型号 xff0c 调试 xff08 J L
  • vscode使用gitee

    vscode使用gitee 首先选择文件夹右键用vscode打开 然后打开vscode的终端 xff1a 在终端输入命令 xff1a xff08 每行命令输入完成之后记得敲回车 xff09 xff1a git init然后敲回车就有 xff

随机推荐

  • 深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向

    上半年公司的项目很闲 xff0c 很多人觉得没意思陆续走了 xff0c 我考虑到自己的发展 xff0c 从6月底开始面 xff0c 面到7月底 xff0c 三十家公司 我从不打没准备的仗 xff0c 我是一个喜欢总结经验的人 xff0c 每
  • Git 中submodule的使用,终于有人说明白了

    背景 面对比较复杂的项目 xff0c 我们有可能会将代码根据功能拆解成不同的子模块 主项目对子模块有依赖关系 xff0c 却又并不关心子模块的内部开发流程细节 这种情况下 xff0c 通常不会把所有源码都放在同一个 Git 仓库中 有一种比
  • git 工具GitEye使用

    二 xff1a 签入 右键commit 可以选择需要签入的 xff0c 要加入注释才能签入 一 xff1a 比较
  • ROS笔记十(基于Python、Kinetic):rviz基础——快速配置并渲染点云和摄像机图像数据

    前言 xff1a rviz xff08 ROS visualization xff09 xff1a 用于机器人 传感器和算法的通用3D可视化系统 rviz能够绘制多种类型的数据流 特别是三维的数据 在ROS中所有类型的数据都被关联到一个参考
  • java面试必看书单

    编程之法 https legacy gitbook com book wizardforcel the art of programming by july details 白话经典算法之七大排序 链接 xff1a https pan ba
  • Java基础 - Integer和int的区别

    一 int和Integer的区别 两者的区别主要体现在以下几个方面 xff1a 1 数据类型不同 xff1a int 是基础数据类型 xff0c 而 Integer 是包装数据类型 xff1b 2 默认值不同 xff1a int 的默认值是
  • Lua + GraphicsMagick安装

    Lua 43 GraphicsMagick安装 图片的实时缩放功能是Nginx调用Lua脚本 xff0c Lua脚本在FastDFS中下载对应的图片保存到本地 xff0c 然后Lua调用GraphicsMagick实现图片的缩放功能 1 安
  • 零基础应该选择学习 C、C++、Java、python、web前端、C#、PHP、Linux选哪个编程语言好呢?

    众多的语言 xff0c 到底哪一门才是适合我呢 xff1f 小白 xff1a 大佬 xff0c 大佬 xff0c 编程语言也太多了 xff0c 到底我应该选择哪一种呢 xff1f 大佬 xff1a 首先呢 xff0c 我们先对常见的编程语言
  • 如何看英文技术文档

    https www jianshu com p af7d39cac6b8
  • 从工具的奴隶到工具的主人

    摘要 xff1a 我们每个人都是工具的奴隶 随着我们的学习 xff0c 我们不断的加深自己对工具的认识 xff0c 从而从它们里面解脱出来 现在我就来说一下我作为各种工具的奴隶 xff0c 以及逐渐摆脱它们的思想控制的历史吧 当我高中毕业进
  • 程序员,这四个学习建议值得收藏

    大家好 xff0c 我是本周的值班编辑 江南一点雨 xff0c 本周将由我为大家排版并送出技术干货 xff0c 大家可以在公众号后台回复 springboot xff0c 获取最新版 Spring Boot2 1 6 视频教程试看 在我看来
  • 底层原理解析

    目录 HashMap底层原理 xff1a ConcurrentHashMap 底层原理 HashMap底层原理 xff1a 1 HashMap概述 xff1a HashMap是一个散列桶 xff08 数组和链表 xff09 xff0c 它存
  • Java ServerSocket & Socket 实现 单组【客户端⇄服务端】双工通信(双向通信)

    Server java 服务器端开启服务 package com example socket service import lombok SneakyThrows import java net ServerSocket import j
  • docker搭建容器过程

    docker 环境创建 配置apt国内镜像源 备份源 span class token function cp span etc apt sources list etc apt sources list backup span class
  • FreeRTOS进程间通信-消息队列

    消息队列是进程间的一种通信机制 xff0c 实际项目运用很多 1 什么是消息队列 xff1f 2 消息队列API函数 3 在进程间通信使用消息队列 4 在中断中使用消息队列 1 1 消息队列是什么 xff1f 消息队列是realtime o
  • 三十岁了从零开始学python还有前途吗?很迷茫啊

    对于学习这件事 xff0c 我一直认为没有时间先后 xff0c 啥时候学习都不晚 xff0c 不管你现在年龄多大 xff0c 只要有心想学习 xff0c 一切都好说 首先 xff0c 你要学的python是属于技术类的知识 xff0c 对于
  • SpringBoot:使用Caffeine实现缓存

    在本博客中 xff0c 我们将探讨如何使用Spring的缓存框架向任何Spring Boot应用程序添加基本缓存支持 xff0c 如果没有正确实现 xff0c 还将探讨缓存的一些问题 最后但并非最不重要的一点是 xff0c 我们将看几个在真
  • 树莓派结合PIXHAWK飞控实现四轴双目视觉避障

    树莓派结合Pixhawk飞控实现四轴双目视觉避障 灰信网 xff08 软件开发博客聚合 xff09 无人机双目视觉避障的实现 本文将介绍如何使用树莓派结合PIX飞控实现无人机双目视觉避障的功能 主要硬件 我们以双目摄像头 43 树莓派 43
  • ::在c++中什么意思

    好多年没有用c 43 43 了 xff0c 今天在研究深度学习部署框架ncnn xff0c 看到这个突然想不起来了 xff0c 就查了一下资料 34 34 在C 43 43 中表示作用域 xff0c 和所属关系 34 34 是运算符中等级最
  • 基于Jetson Nano嵌入式平台的YOLOV3-tiny模型部署

    1 嵌入式平台简介 嵌入式是指可以嵌入设备或装置的特殊计算机系统 一般来说 xff0c 具有数字接口的设备都有嵌入式系统 xff0c 如手机 车载电脑 智能手表等 xff0c 而嵌入式人工智能则是使人工智能算法能够在终端设备上运行的技术概念