10.Isaac教程--在Docker中通过模拟训练目标检测

news2024/11/27 19:39:54

在Docker中通过模拟训练目标检测

文章目录

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

人工智能中的一个常见问题是训练样本的数据收集和标记。 收集这些数据通常是一个耗费时间和资源的手动过程,而且通常不会涵盖难以重现的情况。 Isaac SDK 通过使用 Isaac Sim Unity3D 从模拟环境生成数据集来解决此问题。

在本教程中,您将使用迁移学习和来自模拟的数据集来训练对象检测网络。 我们已经构建了一个 Docker 镜像,其中包含您需要的所有工具,以及一个您将用于训练的 Jupyter notebook。

使用此 Docker 映像,您将能够快速开始探索 Isaac SDK 的功能,但我们建议您按照设置部分所述在主机上安装完整的 Isaac SDK,以获得最佳性能。

怎么运行的

通过设置一个模拟场景,在这个环境中放置一个模拟机器人,您可以使用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 文件夹并为容器创建启动脚本。

mkdir ~/isaac-experiments
cd ~/isaac-experiments
docker run -u $(id -u) -v $PWD:/workspace nvcr.io/nvidia/isaac-ml-training:2020.1 -s

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

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

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

./start.sh

警告

start.sh 脚本不适用于比 19.x 更新的 docker 安装,因为启用 GPU 支持的标志已更改。

要使其适用于较新版本,请编辑 start.sh 文件并删除以下行:

IS_19=$(docker -v | grep 19 | wc -l )
if [[ $IS_19 == 1 ]]; then
    NV_FLAG="--gpus=all"
else
    NV_FLAG="--runtime=nvidia -e CUDA_VISIBLE_DEVICES=all"
fi

并用这一行替换它们:

NV_FLAG="--gpus=all"

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

***************************************************************************************************
* 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/153369.html

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

相关文章

02【Http、Request】

文章目录02【Http、Request】一、HTTP协议1.1 HTTP协议概述1.1.1 HTTP协议的概念1.1.2 HTTP协议的特点:2.1 HTTP请求的组成2.1.1 请求行2.1.2 请求头2.1.3 请求体二、HttpServletRequest对象2.1 HttpServletRequest对象简介2.2 HttpServletRequest的使用2.2.1 请求行…

Redis未授权访问漏洞(三)Redis写入反弹连接定时任务

前言 系列文章 Redis未授权访问漏洞(一)先导篇 Redis未授权访问漏洞(二)Webshell提权篇 Redis写入反弹连接任务 环境准备 攻击机: Centos7 IP:192.168.142.44 靶机:Centos7 IP:192.168.142.66 我们先来回顾一下corntab定时任务的一些基本命令&#xf…

python数据分析及可视化(二十)Power BI的可视化制作以及A股上市公司数据分析

可视化制作 通过图表展示如何用Power BI 制作可视化的图表,来展示可视的数据内容。 柱形图 用水平的柱子来表示不同分类数据的大小,类似于条形图,相当于竖着的条形图。堆积柱形图是不同的序列数据都堆积在一个柱子上,簇状柱形图…

【Spring源码】20. MergedBeanDefinitionPostProcessor修改/合并bean定义

随后进入applyMergedBeanDefinitionPostProcessors()方法applyMergedBeanDefinitionPostProcessors()方法中调用MergedBeanDefinitionPostProcessor后置处理器修改/合并bean定义 进入bdp.postProcessMergedBeanDefinition(mbd, beanType, beanName) 从源码中可以看到&#xff0…

Spring为什么这么火 之 Spring蕴含的设计思想

目录 1、什么是IoC? 2、传统程序开发 3、控制反转式程序开发 4、理解Spring IoC 5、依赖注入【DI】 前言 很多人说:“Java程序员都是Spring程序员”,从这句话就能看出,对于Java程序员来说,Spring是一项必备技能&am…

Mathorcup数学建模竞赛第六届-【妈妈杯】B题:车位分布的优化设计与评价(附一等奖获奖论文、C++和matlab代码)

赛题描述 随着现代社会经济的快速发展,房地产成为国家经济发展中重要的经济增长点之一。而小区内汽车停车位的分布对于小区居民的上下班出行影响很大。请建立数学模型,解决下列问题: 问题1:分析评判小区汽车停车位分布是否合理的几个关键指标,建立评判车位分布合理的数学…

C语言常用字符串函数

专栏:C语言 每日一句:别在乎别人的目光,自己只管一心走路。熬过去,你就能看到柳暗花明,熬过去,你就能看到雨后彩虹,熬过去,你就能看到动人风景。 字符串函数前言一、求字符串长度&am…

UDS - 10.3 ECUReset (11) service

10.3 电子控制单元复位(11)服务 来自:ISO 14229-1-2020.pdf 10.3.1 服务说明 客户端使用ECUReset服务请求服务器重置。 此服务请求服务器基于ECUReset请求消息中嵌入的resetType参数值的内容有效地执行服务器重置。ECUReset肯定响应消息&am…

剑指 Offer 26树的子结构(相关话题:对称性递归,在线算法)

目录 开篇引言 题目描述 代码实现 题目拓展 拓展解读 一类 100. 相同的树 226. 翻转二叉树 104. 二叉树的最大深度 110. 平衡二叉树 543. 二叉树的直径 617. 合并二叉树 572. 另一个树的子树 965. 单值二叉树 二类 101. 对称二叉树 解题总结 开篇引言 力扣上…

Vue引入并使用Element-UI组件库的两种方式

前言 在开发的时候,虽然我们可以自己写css或者js甚至一些动画特效,但是也有很多开源的组件库帮我们写好了。我们只需要下载并引入即可。 vue和element-ui在开发中是比较般配的,也是我们开发中用的很多的,下面就介绍下如何在eue项…

【力扣/牛客刷题】二叉树篇

作者:✿✿ xxxflower. ✿✿ 博客主页:xxxflower的博客 专栏:【力扣、牛客刷题】篇 语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐ 文章目录100. 相同的树572. 另一棵树的子树226. 翻转二叉树平衡二叉树101.对称二…

C++11之后的decltype类型指示符

C11之后的decltype类型指示符一、什么是decltype类型指示符二、typeid运算符三、使用decltype指示符四、decltype和引用五、decltype(auto)六、本章代码汇总一、什么是decltype类型指示符 有时会遇到这种情况:希望从表达式的类型推断出要定义的变量的类型&#xff…

深度对比学习综述

本文综合考察了对比学习近年的发展和进步, 提出一种新的面向对比学习的归类方法, 并基于提出的归类方法, 对现有对比研究成果进行系统综述, 并评述代表性方法的技术特点和区别, 系统对比分析现有对比学习方法在不同基准数据集上的性能表现。 摘要 在深度学习中, 如何利用大量、…

Linux - 目录与文件操作

目录1.操作目录1.1 目录切换1.2 浏览目录1.3 目录创建1.4 目录删除1.5 复制目录1.6 移动或重命名目录2. 操作文件2.1 查找文件2.2 查看文件信息2.3 查看文件内容2.4 创建文件2.5 文件修改-vim2.6 删除文件2.7 复制和重命名文件3. 文件或目录进行压缩或解压3.1 压缩3.2 解压1.操…

链路追踪工具之Zipkin

Zipkin是一个分布式跟踪系统,Zipkin的设计是基于谷歌的Google Dapper论文,它可以帮助收集时间数据,在microservice架构下,通过链路追踪,可以便捷的分析服务调用延迟问题。每个应用程序向Zipkin server端报告数据&#…

【高光谱、多光谱和全色图像融合】

HyperFusion: A Computational Approach for Hyperspectral, Multispectral, and Panchromatic Image Fusion (超融合:高光谱、多光谱和全色图像融合的计算方法) 高空间分辨率的高光谱图像(HSI)和多光谱图像&#xff…

链表热门面试题(二)

目录前言一、删除链表的倒数第 N 个结点二、两两交换链表中的节点三、旋转链表四、删除排序链表中的重复元素五、删除排序链表中的重复元素 II六、反转链表II七、删除链表中的节点八、奇偶链表前言 一、删除链表的倒数第 N 个结点 题目: 方法1:找到删除…

【Java多线程】创建多线程方式一

线程的创建和启动 *Java语言的JVM允许程序运行多个线程,它通过java.lang.Thread类来体现。 *Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,经常 把run()方法的主体称为线程体 通过该Thread对象的start()方法来启动这个…

判断两条线段是否相交

参考链接: 1 2 一、判断线段是否相交需要下面两步: (1)快速排斥实验 (2)跨立实验 二、第一步快速排斥实验 对上图两条L1,L2线段来说,L1 x的最大值为d端点x5,L2 x的最小值为a端点x…

RobotFramework环境安装和入门

环境安装1、安装python建议版本3.7,Robot Framework不支持python最新版。 可以通过以下地址下载https://www.python.org/ftp/python/3.7.3/python-3.7.3-amd64.exe安装过程中选择添加到环境变量。2、安装Robot Framework以及所需组件注意各个组件的版本号&#xff0…