当前位置: 首页 > news >正文

英伟达SSD视觉算法模型训练、转换与部署

深度学习的训练和推理流程,是先采用高性能图形服务器使用深度学习框架来训练(Training)机器学习算法,研究大量的数据来学习一个特定的场景,完成后得到模型参数,再部署到终端执行机器学习推理(Inference),以训练好的模型从新数据中得出结论。

一般的深度学习项目,训练时为了加快速度,会使用多 GPU 分布式训练。但在部署推理时,为了降低成本,往往使用单个 GPU
机器甚至嵌入式平台进行部署。Jetson Nano 可以完成整个训练和推理流程,但基于 Jetson Nano 的低算力,不推荐在
Jetson Nano 上进行复杂训练,而仅用于推理。

  1. 在GPU服务器上使用pytorch训练模型得到pth模型文件;
  2. 将pth模型转化为onnx格式文件;
  3. Jetson Nano上利用tensorrt加载onnx模型,实现快速推理。

一、安装并编译jetson.inference

详情请看《英伟达SSD视觉算法,jetson.inference在jetson nano中部署》

二、下载PyTorch迁移学习的预训练模型

下载PyTorch迁移学习的预训练模型mobilenet-v1-ssd-mp-0_675.pth(若需要请到主页资源下载)
解压后放在jetson-inference/python/training/detection/ssd/models目录下

三、搭建训练环境

接下来有三种方式搭建训练环境

  1. 安装conda,然后用conda安装:
    1)支持CUDA的pytorch版本,及其附加库(TorchvisionTorchaudio
    2)NVIDIA 提供的一组开发工具CUDA Toolkit,用于在 GPU 上进行高性能计算
  2. 用docker
  3. torch + torchvision + opencv-python(只能训练模型,不能转换成onnx模型,不能跑模型)

第一种环境搭建方式,用conda搭建环境

创建一个 Conda 环境来运行训练和验证的脚本。Conda 环境可以更好地管理包依赖关系和不同项目之间的隔离。以下是如何使用 Conda 创建环境并安装所需依赖项的详细步骤。

1. 安装 Anaconda 或 Miniconda

Anaconda和Miniconda之间的主要区别体现在包含的软件包数量和种类上。

  1. Anaconda:
    包含了大量的科学计算软件包,如numpy、pandas等,以及数据分析和数据可视化等180多个科学包及其依赖项。
    提供了丰富的数据分析和机器学习库,适合数据科学、机器学习和大数据处理的用户。 由于包含了大量的软件包,因此安装文件相对较大。
  2. Miniconda(推荐):
    是一个小型的Anaconda,只包含了conda和一些必要的python包,没有包含大多数的科学计算包。
    用户可以根据自己的需要安装不同的软件包,从而节省磁盘空间。 由于只包含核心功能,安装文件较小,下载和安装速度更快。

总的来说,Anaconda和Miniconda都是基于conda的包管理和环境管理系统,但Anaconda预装了大量的科学计算软件包,适合需要这些软件包的用户;而Miniconda则更为轻量级,只包含核心功能,用户可以根据自己的需求灵活安装软件包。

Miniconda下载链接
Anaconda下载链接

下载的版本要和注意自己系统的架构对应!!!

2. 增加环境变量

1) 找到 Conda 的安装路径

通常,Miniconda 会安装到用户目录下的 Miniconda3 文件夹,例如:
Windows: C:\Users\Miniconda3
Mac/Linux: /home//miniconda3//Users//miniconda3/

2)添加 Conda 到系统环境变量
Windows

打开系统属性:
右键点击 “此电脑” 或 “我的电脑”,选择 “属性”。
点击 “高级系统设置”。
点击 “环境变量”。
编辑 Path 变量:
在 “系统变量” 部分,找到并选择 Path 变量,然后点击 “编辑”。
点击 “新建”,然后添加 Miniconda 的安装路径,例如 C:\Users\Miniconda3C:\Users\Miniconda3\Scripts
确认并保存所有设置。
重新启动终端:

关闭并重新打开命令提示符或 PowerShell,以确保环境变量更新生效。

Mac/Linux

打开终端。
编辑 .bashrc.zshrc 文件:

使用你喜欢的文本编辑器打开你的 shell 配置文件,例如:

nano ~/.bashrc  # 如果你使用的是 Bash
nano ~/.zshrc   # 如果你使用的是 Zsh

添加以下行:

export PATH="$HOME/miniconda3/bin:$PATH"

保存并关闭文件。
刷新配置文件:

source ~/.bashrc  # 如果你使用的是 Bash
source ~/.zshrc   # 如果你使用的是 Zsh
3)验证 conda 命令

打开新的终端窗口,并运行以下命令以验证 Conda 是否正确安装:

conda --version

如果一切正常,你应该会看到 Conda 的版本号。

2. 创建并激活 conda 环境:

conda create -n myenv python=3.11	# 选择 Python 版本取决于你的项目需求以及所使用的库的兼容性
conda init	# 安装后首次使用conda需要先初始化,然后重新打开命令行窗口!!!
conda activate myenv

3. 用conda安装 PyTorch 和相关库:

conda install pytorch torchvision torchaudio cudatoolkit=11.8.0 -c pytorch -c nvidia

该命令一次性安装了 PyTorch 及其相关的计算机视觉和音频处理库,并且指定了 CUDA Toolkit 11.1 版本,使得这些库能够利用 NVIDIA GPU 进行加速计算。通过使用 -c pytorch-c nvidia 选项,确保了从官方维护的频道安装最新版本的包,这有助于避免兼容性问题。

该命令通过 Conda 安装以下软件包和库:
  1. PyTorch (pytorch):
    一个开源的深度学习框架,由 Facebook 的人工智能研究团队开发。PyTorch 提供了张量计算(类似于 NumPy)以及强大的 GPU 加速能力,并且特别适合于动态计算图构建。
  2. Torchvision (torchvision):
    PyTorch 的一个附加库,专门用于处理计算机视觉任务。它包括了常用的数据集、模型结构和图像变换操作。
  3. Torchaudio (torchaudio):
    PyTorch 的另一个附加库,专门用于音频处理任务。它提供了常用的音频 I/O、信号处理和转换功能。
  4. CUDA Toolkit (cudatoolkit=11.1):
    NVIDIA 提供的一组开发工具,用于在 GPU 上进行高性能计算。指定 cudatoolkit=11.1 表示要安装 CUDA Toolkit 11.1 版本,这个工具包提供了运行 GPU 加速代码所需的库和工具。
具体作用
  1. -c pytorch:
    指定从 pytorch 频道安装软件包。这个频道由 PyTorch 官方维护,包含最新的 PyTorch 及其相关库。
  2. -c nvidia:
    指定从 nvidia 频道安装软件包。这个频道由 NVIDIA 官方维护,包含 CUDA Toolkit 和其他与 GPU 计算相关的软件包。
安装内容的详细描述
  1. PyTorch (pytorch):
    核心库,用于深度学习模型的构建、训练和推理。它支持 CPU 和 GPU 计算,并且提供了丰富的 API 进行张量操作、自动微分、优化等。
  2. Torchvision (torchvision):
    提供了常用的计算机视觉数据集(如 ImageNet、CIFAR-10)、预训练模型(如 ResNet、AlexNet)和图像变换操作(如随机裁剪、归一化)。
  3. Torchaudio (torchaudio):
    提供了音频数据集(如 LibriSpeech)、音频 I/O 操作(如读取和保存音频文件)和信号处理操作(如频谱分析、重采样)。
  4. CUDA Toolkit (cudatoolkit=11.1):
    包含用于 GPU 加速计算的库(如 cuBLAS、cuDNN),以及编译和调试 GPU 代码的工具(如 nvcc、cuda-gdb)。
可能出现的问题
1.当前的 Conda 频道中没有找到 cudatoolkit的版本

在这里插入图片描述
解决方法:检查当前可用的 CUDA Toolkit 版本,看看是否有其他版本可用:

conda search cudatoolkit

在这里插入图片描述

2. 长时间等待

在这里插入图片描述
解决方法:
长时间等待的情况可能是由于多个原因导致的,包括网络问题、依赖冲突或者 Conda 本身的问题。可以通过检查网络连接、更新 Conda、使用 libmamba solver 或者 mamba 替代 conda,以及创建新的环境,可以提高成功安装的概率。这些方法应能帮助你解决长时间等待的问题,并成功安装所需的包。
以下是一些排查和解决方法:

1. 检查网络连接

确保你的网络是稳定的,可以尝试切换到一个更稳定的网络环境,或者使用 VPN 来加速连接。

2. 更新 Conda

确保你使用的是最新版本的 Conda:

conda update conda
3. 更改 Conda 的 Solver

Conda 提供了两个 solver:classiclibmambalibmamba 通常速度更快,可以尝试切换到 libmamba

conda install -n base conda-libmamba-solver
conda config --set solver libmamba

然后再尝试安装。

如果你已经切换到 libmamba 作为 Conda 的 solver,但现在希望切换回 classic solver,可以按照以下步骤操作:
打开命令行终端,并确保已经激活了你的 Conda 环境。
使用以下命令将 solver 切换回 classic

conda config --set solver classic

验证 Solver 切换
你可以通过查看 Conda 配置文件来验证 solver 是否已经切换:

conda config --show solver

如果输出是 classic,则说明切换已经成功。

4. 使用 Mamba

如前所述,mamba 是一个更快、更高效的包管理工具,可以用来替代 conda。你可以先安装 mamba,然后使用它来安装所需的包:

conda install mamba -n base -c conda-forge
mamba install pytorch torchvision torchaudio cudatoolkit=11.8.0 -c pytorch -c nvidia
5. 手动指定包版本

有时候,手动指定所有包的版本可以减少依赖冲突:

conda install pytorch=1.8.0 torchvision=0.9.0 torchaudio=0.8.0 cudatoolkit=9.2 -c pytorch -c nvidia
6. 使用新的环境

如果当前环境有问题,可以尝试创建一个新的 Conda 环境:

conda create -n newenv python=3.8
conda activate newenv
conda install pytorch torchvision torchaudio cudatoolkit=9.2 -c pytorch -c nvidia

下面是更改 Conda 的 Solver解决的例子:
在这里插入图片描述

通过上述步骤,你应该能够成功创建 Conda 环境并运行你的脚本。这样可以更好地管理包依赖关系和项目隔离。

用venv和conda两个工具创建的虚拟环境的区别 如:python3 -m venv myenv 和 conda create -n myenv python=3.11

  1. python3 -m venv myenv 使用的是 Python 内置的 venv 模块来创建虚拟环境,而 conda create -n myenv python=3.11 使用的是 Anaconda 或 Miniconda 中的 conda
    工具来创建环境。 使用 venv 创建的虚拟环境是基于标准的 Python 环境,只包含 Python
    解释器和标准库,不包含其他第三方包。而使用conda创建的环境是基于 Anaconda 或 Miniconda 发行版,会包含
    conda 包管理器以及一些常用的科学计算和数据处理库。
  2. 虚拟环境的管理方式也有所不同。使用venv创建的虚拟环境需要通过激活脚本来激活,然后使用 pip 来安装依赖包。而使用conda创建的环境可以通过 conda activate 命令来激活,使用 conda
    来安装和管理依赖包。

总的来说,如果您只需要一个轻量级的虚拟环境,并且不需要额外的科学计算库,可以使用 python3 -m venv myenv。如果您需要使用
Anaconda 或 Miniconda 提供的额外功能和库,可以使用 conda create -n myenv
python=3.11。选择哪种方式取决于您的具体需求和偏好。

虚拟环境知识拓展

激活并在虚拟环境中安装软件包的方式
  1. conda创建的虚拟环境
    激活虚拟环境
    在 Windows 上,使用 conda activate myenv
    在 MacOS/Linux 上,使用 source activate myenv
    安装软件包
    使用 conda 安装:conda install opencv-python
    使用 pip 安装:pip install opencv-python
    查看已安装的包列表:conda list
    搜索特定包是否已安装:conda list | grep package_name
    退出当前conda环境:conda deactivate

  2. venv创建的虚拟环境
    激活虚拟环境
    在 Windows 上,使用 /path/to/your/venv/Scripts/activate
    在 MacOS/Linux 上,使用 source /path/to/your/venv/bin/activate
    安装软件包
    使用 pip 安装:pip install opencv-python
    查看已安装的包列表:pip list
    搜索特定包是否已安装:pip list | grep package_name
    退出当前venv环境:deactivate

虚拟环境复制

相关文章:

英伟达SSD视觉算法模型训练、转换与部署

深度学习的训练和推理流程,是先采用高性能图形服务器使用深度学习框架来训练(Training)机器学习算法,研究大量的数据来学习一个特定的场景,完成后得到模型参数,再部署到终端执行机器学习推理(Inference),以训练好的模型从新数据中得出结论。 一般的深度学习项目,训练…...

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台,采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术,实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…...

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/ 📜 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 🤔2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案🛠️3.1 …...

Dockerfille解析

用于构建Docker镜像的文本,由一条条指令构成 Docker执行Dockerfile的流程 1. Docker从基础镜像执行一个容器 2. 执行一条指令并对容器进行修改 3. 执行类型Docker commit的命令添加一个新的镜像层 4. Docker再基于新的镜像执行一个新的容器 5. 执行Dockerfile中…...

定个小目标之刷LeetCode热题(14)

了解股票的都知道,只需要选择股票最低价格那天购入,在股票价格与最低价差值最大时卖出即可获取最大收益,总之本题只需要维护两个变量即可,minPrice和maxProfit,收益 prices[i] - minPrice,直接用代码描述如下 class …...

智慧管道管理:油气管道可视化的领先应用

通过图扑油气管道可视化技术,实现实时监控与数据分析,快速识别潜在风险,有效提升管道维护效率和安全性能。...

嵌入式仪器模块:示波器模块和自动化测试软件

示波器模块 • 32 位分辨率 • 125 MSPS 采样率 • 支持单通道/双通道模块选择 • 低速模式可实现实时功率分布和整机功率检测 • 高速模式可实现信号分析和上电时序测量 应用场景 • 抓取并分析波形的周期、幅值、异常信号等指标 • 电源纹波与噪声分析 • 信号模板比…...

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…...

景区ar互动大屏游戏化体验提升营销力度

从20世纪60年代的初步构想,到如今全球范围内无数企业的竞相投入,AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中,中国的AR公司正以其独特的魅力和创新力,崭露头角。 中国的AR市场正在迎来前所未有的发展机遇。如今&…...

苍穹外卖笔记-07-菜品管理-增加、删除、修改、查询分页还有菜品起售或停售状态

菜品管理 1 新增菜品1.1 需求分析与设计1.2 代码开发文件上传新增菜品实现 1.3 功能测试 2 菜品分页查询2.1 需求分析和设计2.2 代码开发设计DTO类设计VO类Controller层Service层Mapper层 2.3 功能测试 3 删除菜品3.1 需求分析和设计3.2 代码开发Controller层Service层Mapper层…...

oracle dataguard 从库 MRP 进程的状态是 WAIT_FOR_GAP

因主库归档日志未备份直接删除后,从库不能更新,19c版本以上,之前未打补丁,使用 RECOVER STANDBY DATABASE FROM SERVICE PRM180;之后,在执行 alter database recover managed standby database using current logfil…...

【C语言】轻松拿捏-联合体

谢谢观看!希望以下内容帮助到了你,对你起到作用的话,可以一键三连加关注!你们的支持是我更新地动力。 因作者水平有限,有错误还请指出,多多包涵,谢谢! 联合体 一、联合体类型的声明二…...

基于Python定向爬虫技术对微博数据可视化设计与实现

基于Python定向爬虫技术对微博数据可视化设计与实现 Design and Implementation of Weibo Data Visualization Based on Python Web Scraping Techniques 完整下载链接:基于Python定向爬虫技术对微博数据可视化设计与实现 文章目录 基于Python定向爬虫技术对微博数据可视化设…...

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…...

Python中的生成器表达式(generator expression)

Python中的生成器表达式(generator expression)是一种类似于列表解析(list comprehension)的语法结构,但它返回的是一个生成器(generator)对象,而不是一个完整的列表。生成器对象是一…...

Responder工具

简介 Responder是一种网络安全工具,用于嗅探和抓取网络流量中的凭证信息(如用户名、密码等)。它可以在本地网络中创建一个伪造的服务(如HTTP、SMB等),并捕获客户端与该服务的通信中的凭证信息。 Responder工…...

gitblit 环境搭建,服务器迁移记录

下载 Gitblit: http://www.gitblit.com/ JDK:gitblit网站显示需要jdk1.7,这里用的1.8。 Git:到官网下载最新版本安装 1). 分别安装JDK,Git,配置环境变量,下载并解压Gitblit 2). 创建代码仓库 …...

硬盘坏了数据能恢复吗 硬盘数据恢复一般多少钱

在数字化时代,我们的生活和工作离不开电脑和硬盘。然而,硬盘故障是一个常见的问题,可能会导致我们的数据丢失。当我们的硬盘坏了,还能恢复丢失的数据吗?今天我们就一起来探讨关于硬盘坏了数据能恢复吗,硬盘…...

312. 戳气球 Hard

有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和 i 相邻…...

推荐4个好用有趣的软件

MyComic——漫画聚合软件 MyComic是一款界面简洁、分类详尽的漫画阅读软件,专为动漫爱好者设计。它提供了丰富的高清漫画资源,支持在线免费阅读,并且可以一键下载到书架,方便随时离线观看,节省流量。用户可以轻松找到喜…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们,有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL, 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始,OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...