11.Isaac教程--在docker中模拟训练姿势估计模型

news2024/11/30 8:55:48

在docker中模拟训练姿势估计模型

文章目录

  • 在docker中模拟训练姿势估计模型
    • 怎么运行的
    • 主机设置
      • 硬件要求
      • 软件要求
      • NGC Docker 注册表设置
      • 第一次运行
    • 数据集生成配置
      • 您的工作区
      • Jupyter 变量设置
    • 开始训练
      • 添加您自己的 3D 模型
    • 故障排除
    • 接下来

在这里插入图片描述

物体检测和 3D 姿态估计在机器人技术中起着至关重要的作用。 导航、对象操作和检查等各种应用都需要它们。 Isaac SDK 中的 3D 对象姿态估计应用程序提供了一个框架,可以在模拟中完全训练任何模型的姿态估计,并在模拟和现实世界中测试和运行推理。

要详细了解 Isaac SDK 中 pose_cnn_decoder 的内部工作原理,您可以查阅文档:

使用此 Docker 映像,您将能够训练姿势估计网络并将其用于 Isaac SDK 应用程序中的推理。

怎么运行的

结合使用模拟、Isaac SDK 应用程序和您自己的 3D 模型,我们将首先使用 Docker 中的模拟训练目标检测创建一个对象检测网络。

然后我们将使用 Isaac SDK 的姿势估计训练应用程序以及模拟场景来生成供应用程序使用的样本。

生成足够的样本后,训练停止并存储经过训练的网络。 您可以访问应用程序生成的数据和模型。

最后,我们会将这个经过训练的模型转换为可用于推理的格式,并设置要处理的视频源。

主机设置

硬件要求

  • NVIDIA Pascal GPU 或更新版本。 GTX 1080Ti 和 Titan V 是推荐的最低 GPU。

软件要求

  • Ubuntu 18.04

  • Docker 19.03 或更新版本

  • NVIDIA CUDA 驱动程序

  • NVIDIA NGC 帐户和 API 密钥

运行以下脚本以在 Ubuntu 18.04 桌面上安装软件要求。 您可以将以下命令复制并粘贴到终端窗口:

#Docker CE repository
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

#NVIDIA CUDA Drivers
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub

#NVIDIA Docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

#Install packages
sudo apt-get update
sudo apt-get install docker-ce
sudo apt-get -y install cuda
sudo apt-get install -y nvidia-container-toolkit

#Add yourself to the docker group
sudo usermod -a -G docker $(id -nu)
echo "All installed"

安装所有软件后,重新启动计算机以加载 NVIDIA CUDA 驱动程序:

sudo shutdown -r now

重新登录到您的 Ubuntu 桌面环境并打开一个新的终端窗口。 使用以下命令验证安装是否顺利:

docker run --gpus all nvidia/cuda:10.0-base nvidia-smi

您应该会看到一条消息,指示来自您的 GPU 和 CUDA 库的一些统计信息。 以下是此命令的示例输出。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN V             On   | 00000000:17:00.0 Off |                  N/A |
| 30%   44C    P8    26W / 250W |      0MiB / 12066MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  TITAN V             On   | 00000000:65:00.0  On |                  N/A |
| 30%   44C    P8    27W / 250W |    404MiB / 12063MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    1      2983      G   /usr/lib/xorg/Xorg                           256MiB |
|    1      3117      G   /usr/bin/gnome-shell                         145MiB |
+-----------------------------------------------------------------------------+

如果您遇到问题,请参阅 Isaac 常见问题解答或访问论坛。

NGC Docker 注册表设置

NGC 注册表托管用于 AI 的 Docker 图像,以及用于 HPC、AI 和 NVIDIA 及合作伙伴的其他技术的模型、数据集和工具。 要使用本教程,您需要拥有一个帐户并创建一个 API 密钥。 这将允许您下载 isaac-experiments 图像,以及用于迁移学习的预训练模型。

访问 NGC 以设置新帐户。 登录后,访问 API 密钥创建页面并按照屏幕上的说明进行操作。

妥善保管 API 密钥; 我们将在设置过程中使用它几次。

使用以下命令(包括您的 API 密钥)登录 NGC Docker 注册表:

第一次运行

该图像创建了许多文件,为您提供定制和控制模拟和训练行为的机会。 我们建议创建一个单独的文件夹来保存您的实验。

运行以下命令创建 isaac-experiments 文件夹并为容器创建启动脚本。

#Create a new folder to hold the generated data and trained models.
mkdir ~/isaac-experiments
cd ~/isaac-experiments
#Deploy the startup helper script to your experiments folder.
docker run -u $(id -u) -v $PWD:/workspace nvcr.io/nvidia/isaac-ml-3dpose:2020.2 -s

将在您的 isaac-experiments 文件夹中创建一个名为 start.sh 的新脚本。

每次运行 start.sh 脚本时都需要 root 密码,因为它将用于配置 X 服务器以允许从 Docker 内部进行通信。

首先,在与上面相同的终端窗口中运行以下命令:

./start.sh

最后,您将看到以下消息:

***************************************************************************************************
* Open your browser and go to:                                                                    *
* http://localhost:8888/notebooks/object_detection_from_sim.ipynb?token=object-detection-from-sim *
*                                                                                                 *
***************************************************************************************************
Press Ctrl-C twice to exit

按住 Control 键并单击链接以打开浏览器。 此链接会将您带到可以运行的 Jupyter notebook。 Jupyter 笔记本将是您控制数据集生成和实验流程的主要方式。

数据集生成配置

您的工作区

请注意,在 Docker 容器内,您的 ~/isaac-experiments 文件夹安装为 /workspace

每当你看到从 docker 内部调用这个文件夹时,它实际上指的是你主机中的一个文件夹,你对这个文件夹中的文件所做的任何更改都会立即反映出来。 这是在容器和您的机器之间传递文件、可执行文件和脚本的好方法。

Jupyter 变量设置

在 Jupyter Notebook 的顶部,您需要配置一些变量。 这些控制数据集的生成方式:

  • KEY 这可以是任何字符串。 我们提供了一个默认密钥,但您应该设置一个唯一的密钥。 您不需要为每个实验更改它,但您需要将它提供给使用您的训练模型进行推理的应用程序。

  • USER_EXPERIMENT_DIR 训练过程中生成的文件的保存位置

  • DATA_DIR 将定位数据集的位置。

  • SPECS_DIR 实验规范的文件夹,它控制所有高级训练参数

  • TRAINING_TESTS 要生成的测试图像的数量。 在评估训练模型期间使用。

  • TRAINING_SAMPLES 要生成的训练图像和标签的数量。 更大的集合意味着更精确的点,但需要更长的时间来处理。

开始训练

在 Jupyter notebook 中设置参数后,请按照每个单元格上的说明运行它。

添加您自己的 3D 模型

如果您有想要包含在图像数据集中的 3D 模型,只需将其以 FBX 格式放在 isaac-experiments/models 文件夹中。 不带扩展名的文件名将用作数据集上的标签。 请保持 3D 模型与网球模型的比例大致相同; 一个好的经验法则是使用您可以在书桌或桌子上找到的物品。

您可以添加的模型类型有一些限制。

  • 此模式不支持透明纹理。 如果您的模型中有透明纹理,它们可能无法正确渲染或标记。

  • 纹理应嵌入 FBX 模型中。 如果您的纹理看起来缺失,请尝试使用嵌入的纹理重新生成您的模型。 不支持将模型纹理添加为附加文件。

故障排除

  • 意外删除了一个文件,但现在没有任何效果:如果您删除了其中一个提供的文件,笔记本电脑可能会开始抛出错误。 如果发生这种情况,您不必丢失所有工作。 只需重新启动 Docker 容器,启动脚本就会用一个新的副本替换任何所需的文件。

  • 生成数据集时出现黑色窗口:这是正常现象,因为模拟需要访问连接到 GPU 的真实显示器。 为此,我们将内部模拟连接到您主机上的真实 X 服务器。 您可以安全地忽略此窗口——一旦数据集生成完成,它就会消失。

  • 查看 Isaac Websight 时,没有图表或没有显示任何信息:尝试启用左侧边栏上的所有禁用通道。 这应该恢复图表。

接下来

如果您想探索使用 Isaac 开发机器人应用程序,请查看本文档中的其他教程。

您可以继续使用此 Docker 映像作为您的开发容器,但如果您在主机上执行完整安装,您将获得更好的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『精』EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格

『精』EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格 文章目录『精』EditorConfig 小老鼠 跨编辑器 | IDE 保持一致的编码风格一、什么是EditorConfig二、文件识别符三、风格属性控制四、不同规则参考1)、简洁通用2)、前端Vue项目3)、前端React项目4)、前端Angular项…

Linux常用命令——nm命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) nm 显示二进制目标文件的符号表 补充说明 nm命令被用于显示二进制目标文件的符号表。 语法 nm(选项)(参数)选项 -A:每个符号前显示文件名; -D:显示动态符号; …

成员变量-java循环机构

1.概念所谓的成员变量,是指在类中(不是方法或其他代码块)直接定义的变量。根据是否带有static关键字,成员变量又分为静态变量(类变量)、实例变量(对象变量)。成员变量在整个类的内部都有效,可以在当前类的任何方法中使用。另外如果成员变量不…

NFS介绍及服务器搭建

一、NFS 简介 NFS,英文全称 Network File System,主要功能:通过网络,让不同的机器、不同的操作系统可以共享文件。类似windows的共享文件夹 ​ NFS服务器共享本机目录,客户端机器挂载该目录后,就可以像自…

AI+OCR赋能古彝文数字化—让经典重新跳动

1️⃣ 彝文与古彝文概况文化是一个民族社会历史发展到一定程度的产物,代表着文明发展的程度,而文字是文化的一种载体,文字的出现是社会进入文明阶段的重要标志之一,其生动记录着一个民族的智慧成果,深刻反映着一个民族…

Unity 3D 环境特效||Unity 3D 游戏场景设计实例

Unity 3D 环境特效 一般情况下,要在游戏场景中添加雾特效和水特效较为困难,因为需要开发人员懂得着色器语言且能够熟练地使用它进行编程。 Unity 3D 游戏开发引擎为了能够简单地还原真实世界中的场景,其中内置了雾特效并在标准资源包中添加…

mmLab系列使用方法

mmLab系列使用方法环境搭建mmdetection检查数据集运行部署mmdeploy环境搭建使用mmOCRmmsegmentation环境搭建 Windows最推荐安装方法: 首先需要查好自己gpu的CUDA版本,根据版本到pytorch官方网站查找对应的pytorch版本(!!!只查找不下载!)ht…

Mybatis源码分析(七)MapperMethod的INSERT分析

目录一 INSERT 语句1.1 参数的对应解析convertArgsToSqlCommandParam1.2 ID获取对应的MappedStatement1.3 MappedStatement交给执行器执行1.4 不同的执行器获取不同的StatementHandler1.5 根据参数获取BoundSql1.6 执行器配置参数处理器ParameterHandler1.7 拿到StatementHandl…

人工智能-http协议和静态服务器

目录1、HTTP协议1.1 网址1.2 http协议的介绍1.3 http请求报文1.4 http响应报文1.5查看http协议的通信过程2、静态web服务器程序开发2.1 搭建python自带的静态web服务器2.2 静态web服务器-返回固定页面数据1、HTTP协议 1.1 网址 网站又称为U…

【报错】assert failed: xQueueSemaphoreTake queue.c:1545 (( pxQueue ))

🌱 hi,最近开始写嵌入式,碰到蛮多新的问题,也调bug到凌晨五点过。欢迎关注我,一起讨论交流 开发环境 在VScode中使用Arduino,开发板ESP32S3 报错代码 使用队列接收服务器消息,FIFO依次处理消…

ROS1学习笔记:参数的使用与编程方法(ubuntu20.04)

参考B站古月居ROS入门21讲: 参数的使用与编程方法 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、概念图讲解二、创建功能包三、参数命令行的使用方法:rosparam显示某个参数值:rosparam get设定某个参数值:rosparam set将…

linux小程序—进度条(动态演示)

文章目录1. \n与\r的区别1. linux环境下2. windows环境下2. 缓冲区问题1.\n的情况2.\r的情况3. \n与\r的情况对比4. 使用fflush函数观察\r情况5. 不为\n与\r的情况3.进度条的实现1. printf 打印字符问题1. 修改前2.修改后2 . 注意事项3. 整体实现1. makefile(自动化编译工具&am…

一篇文章教会你Linux下《常用操作指令》

基本指令首言ls(查看目录)pwds(显示用户当前所在目录)cd(改变工作目录)mkdir(创建目录)rmdir(删除目录)touch (新建文件或更新文件时间&#xff0…

【Python】获取视频弹幕并生成词云

目录一、摘要二、获取目标视频cid三、获取视频弹幕xml文件四、处理弹幕文件五、生成词云六、完整参考代码一、摘要 就是那个大家都用的弹幕视频网站,不写名字了,写了老是不能通过。 获取视频的弹幕文件(xml),并生成如图…

认真分享一个让我变厉害的小建议

很多朋友,加我好友之后,第一句话通常是:我想提高英语,有什么资料推荐? 这要看你学英语的目的了。 我们学英语是为了什么? 理由可能很多,我就说个最俗的目的吧,为了发财。 想发财应向谁学习&…

代码随想录第31天|● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

455.分发饼干 大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 可以尝试使用贪心策略&#xf…

[ 数据结构 ] 最小生成树(MST)--------普里姆算法、克鲁斯卡尔算法

0 修路问题 有胜利乡有 7 个村庄(A, B, C, D, E, F, G) ,现在需要修路把 7 个村庄连通各个村庄的距离用边线表示(权) ,比如 A – B 距离 5 公里问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短? 思路: 将 10 条边&a…

Java常用工具类方法(上)

1. Collections首先出场的是java.util包下的Collections类&#xff0c;该类主要用于操作集合或者返回集合&#xff0c;我个人非常喜欢用它。1.1 排序在工作中经常有对集合排序的需求。看看使用Collections工具是如何实现升序和降序的&#xff1a;List<Integer> list new…

揭秘链动2+1商业模式玩法

链动21模式主要是打造裂变团队的同时又能快速地将平台销售额提升起来&#xff0c;链动模式可以说颠覆传统的分销&#xff0c;算是一个创新更能吸引用户&#xff0c;稳住会员&#xff0c;拓展新客户的商业模式。 链动21模式有两个身份&#xff0c;分别是代理和老板 【代理商】…

Java高手速成 | 高质量代码编写最佳实践

程序员之间交流时&#xff0c;会经常使用非程序员无法理解的行话&#xff0c;或者使用令操不同编程语言的程序员理解起来比较模糊的行话。 但是&#xff0c;那些操相同编程语言的程序员理解起来不会产生什么问题。 这有时也取决于程序员所掌握知识的渊博程度。 一个新手或许不理…