针对特定用例的大规模合成数据在现实世界的计算机视觉和 AI 工作流程中变得越来越重要。这是因为数字孪生是一种强大的方式,可以为工厂、零售空间和其他资产创建基于物理性质的虚拟副本,从而实现真实环境的精确模拟。
NVIDIA Isaac Sim 基于 NVIDIA Omniverse 构建,是一款完全可扩展的参考应用,用于设计、模拟、测试和训练支持 AI 的机器人。 Omni.Replicator.Agent (ORA) 是 Isaac Sim 中的一个扩展,用于生成合成数据,以便专门用于训练计算机视觉模型,例如 TAO PeopleNet Transformer 和 TAO ReIdentificationNet Transformer.
本文是关于构建多摄像头追踪视觉 AI 应用的系列文章的第二篇。在第一篇文章中,我们提供了端到端多摄像头追踪工作流程的高级视图,涵盖模型的模拟、训练和部署以及工作流程的其他组件。
现在,我们将深入探讨模拟和训练步骤,在这些步骤中,我们将生成高质量的合成数据,以针对特定用例微调基础模型。在本文中,我们将向您介绍 TAO ReIdentificationNet (ReID), 这是一种常用于 Multi-Camera tracking (MTMC) 和 Real-time Location System (RTLS) 应用程序的网络,用于跟踪和识别不同摄像头视图中的物体,并展示如何使用从 ORA 收集的合成数据提高 ReID 的准确性。
具体来说,我们演示了如何使用从 Isaac Sim 中的 ORA 扩展程序中获得的数据,使用 NVIDIA TAO API 训练和微调 ReID 模型,以适应您的用例。这打开了使用合成数据以可扩展方式增强现有的真实数据集的大门,从而提高数据集的多样性和模型的可靠性。
ReIdentificationNet 概述
ReIdentificationNet 是一个用于 MTMC 和 RTLS 工作流程的网络,通过从检测到的对象作物中提取嵌入来识别不同摄像头中的对象。这些嵌入捕获有关外观、纹理、颜色和形状的基本信息,从而增强跨摄像头识别类似对象的能力。这意味着对象以相似的外观在摄像头中具有相似的嵌入。
ReID 模型用于区分独特对象的准确性在多摄像头追踪中发挥着至关重要的作用。MTMC 和 RTLS 应用程序依赖于 ReIdentificationNet 的嵌入,以关联跨摄像头的对象并执行追踪。
图 2. 使用 ReIdentificationNet 在多个摄像头中识别和追踪多个对象 (来源)
模型架构
网络的输入是对象的 RGB 图像裁剪,大小为 256 x 128。模型为每个图像裁剪输出一个大小为 256 的嵌入向量。
目前,ReIdentifcationNet 支持 ResNet-50 和 Swin Transformer 主干。ReIdentificationNet 的 Swin 变体是一种以人为中心的基础模型,在大约 300 万张图像裁剪上预训练,然后在各种监督的人员重新识别数据集上微调。
预训练
在预训练中,我们采用了一种名为 SOLIDER 的自监督学习技术:面向以人为本的视觉任务的语义可控自监督学习框架。
SOLIDER 基于 DINO (self-DIstillation with NO labels) 构建,并使用人类图像作物的先前知识生成伪语义标签,以使用语义信息训练人类表征。SOLIDER 使用语义控制器调整人类表征的语义内容,以适应人员重新识别的下游任务。
如需了解更多信息,请参阅Beyond Appearance:a Semantic Controllable Self-Supervised Learning Framework for Human-Centric Visual Tasks。
用于预训练的数据集包括 NVIDIA 专有数据集与Open Images V5。
微调
为进行微调,预训练模型在各种监督人重新识别数据集上进行训练,这些监督数据集包括合成和真实的 NVIDIA 专有数据集。
数据集类型 | #张图像 | #个身份 |
合成 | 14392 | 151 |
真实 | 67563 | 4470 |
表 2 显示了在 Swin-Tiny 主干上游重新识别任务的准确性。
Model type | Model parameters size | Precision | Embedding size | mAP (Mean Average Precision) |
Top-1 Accuracy |
---|---|---|---|---|---|
Resnet50 | 2410 万 | FP16 | 256 | 93.0% | 94.7% |
Swin-Tiny | 2810 万 | FP16 | 256 | 94.99% | 96.9% |
为什么需要微调?
ReID 网络性能不佳可能会导致 ID 切换,即由于不同个体之间的高度视觉相似性或外观随着时间的推移而发生变化,系统错误地将 ID 关联起来。
出现此问题的原因是,网络可能无法很好地泛化到给定场景的特定条件,例如光照、背景和服装变化。例如,在图 4 中,由于嵌入质量不佳,发生了 ID 切换,导致 ID 4 转换为 ID 9 和 ID 17,对象 ID 6 转换为 ID 14。
为了减轻 ID 交换和提高准确性,使用 ORA 微调 ReID 网络以特定场景中的数据至关重要。这可确保模型学习环境的独特特征和细微差别,从而实现更可靠的识别和跟踪。
模拟:使用 Isaac Sim 和 Omniverse Replicator Agent 扩展程序
以下视频介绍了如何使用 Isaac Sim 和 ORA 扩展程序安装、设置和运行模拟,以生成合成数据并提高 ReID 模型的准确性。
配置模拟的最佳实践
要生成高质量的合成数据,需要考虑以下几个关键方面:
- 字符数量
- 角色的独特性
- 摄像头位置
- 角色行为
字符数量
ReIdentificationNet 从唯一身份的数量中受益匪浅。在使用 ORA 设置数字孪生时,选择正确数量的代理至关重要。
在 ORA 界面的 Character Settings 下,您可以设置字符数量。给定环境中的大小与 Isaac Sim 默认仓库数字资产相似或更大时,则至少使用 10-12 个唯一字符。
角色的独特性
您在 Isaac Sim 中选择的角色应具有独特的外观。这通常包括穿不同服装、鞋、配件、头盔等的角色。为数字孪生选择合适的资产也很重要。例如,选择为仓库环境穿安全背心的角色。
摄像头位置
摄像头的位置应确保其视野锥体的结合覆盖预计会检测和追踪角色的整个地面区域为确保这一点,请将摄像头放置在较高的高度,例如天花板并倾斜向地面。
摄像头的定位方式还必须确保视锥体的结合能够保持对所有追踪对象的持续观察,每个角色应始终从 3–4 个不同的摄像头视角拍摄,以获得最佳数据数量和质量。
通过从 Stage 窗格的 World 部分中选择每个摄像头、调整属性并检查其视野,可以验证摄像头的放置位置。
角色行为
可以在 Isaac Sim ORA 中自定义角色行为,可以手动输入行为命令,也可以为每个角色随机生成行为命令,从而为其动作提供灵活性和多样性。
对于 ReID 数据采集,我们建议随机生成行为,只要所需的摄像头角度捕获物体。
图 6. Isaac Sim ORA 扩展程序通过不同摄像头角度捕获物体运动
训练:微调 ReIdentificationNet
从 ORA 扩展程序中获取数据后,准备并对其进行采样,以训练 TAO ReIdentificationNet 模型。使用Metropolis 微服务或TAO 工具套件中的 TAO 微调 notebook 执行微调过程。
数据采样指南
在对 ReID 的训练数据进行采样时,以下几点标准非常重要。
- 标识数量:ReIdentificationNet 大大受益于更多独特的身份。Isaac Sim 场景中存在的所有身份都会自动成为训练样本的一部分。我们建议对 10-12 个对象进行微调,并逐步增加数量。
- 摄像头数量:ReID 模型的性能也会受到摄像头数量的极大影响。更多的摄像头意味着场景和物体的覆盖率更高。我们建议在小型到中型环境中放置 3–4 个摄像头。
- 训练图像数量:我们建议从较小数量的样本开始,每个 ID 大约 50 个样本,共 500 个样本。在观察到准确度达到饱和后,可以添加更多样本。
- 边框宽高比:由于 ReID 是以人为中心的模型,因此边框裁剪的高度必须高于其宽度。我们建议边框宽高比小于 1。
- 数据格式:从 KITTI 格式的 ORA 扩展名获取的数据必须转换为 Market-1501 格式,以进行 TAO ReIdentificationNet 训练。ReIdentificationNet 需要图像位于三个文件夹中:
bounding_box_train
、bounding_box_test
和query
。每个文件夹由唯一字符的图像组成,文件名格式如下:000x_cxsx_0x_00.jpg
。例如,图像0001_c1s1_01_00.jpg
是相机c1
的第一个序列s1
,01
是序列c1s1
中的第一个帧,0001
是分配给对象的唯一 ID。有关更多信息,请参阅 Market-1501 Dataset 和 ReIdentificationNet。
图 7 显示了数据集样本。
训练技巧
准备好数据后,请使用 Bag of Tricks 和 A Strong Baseline for Deep Person Re-identification 中的以下训练技巧,在微调过程中提高 ReID 模型的准确性。
- ID 损失 + triplet 损失 + center 损失: 重新识别任务是一个简单的分类,其中每个类都是给定对象的 ID。虽然此 ID 损失有助于训练 ReID,但不足以提高模型的准确性。为了进一步增强这一点,我们使用 triplet 和 center 损失支持 ID 损失。triplet 损失有助于推动正身份样本的嵌入接近,并使负身份样本相互远离,而 center 损失有助于了解每个类的中心,并惩罚特征之间的距离以提高类内的紧凑性。
- 随机擦除增强: 在跨摄像头追踪物体时,遮挡是常见场景。训练过程的目标是模拟此类场景,以提高通用性,即在训练数据中删除图像的随机块,以复制遮挡。
- 热身学习率: 固定的学习率不足以收敛 ReIdentificationNet 的训练,因此前 10 个 epoch 的学习率 (LR) 呈线性增长,从 3.5 x 10-5 增加到 3.5 x 10-6。然后,在第 40 个 epoch 和第 70 个 epoch 中,LR 分别减少到 3.5 × 10−5 和 3.5 × 10−6。
- 批量归一化瓶颈 (BNNeck):由于 ID 损失优化的是余弦距离,而三元组损失优化的是欧几里德距离,因此它们的损失具有不一致的含义,这会导致损失值波动为了减轻这种情况,在特征层之后使用 BNNeck 获取归一化特征。
- 标签平滑: 训练集中存在的标识可能不会出现在测试集中。为防止过拟合,可以使用标签平滑作为此分类任务的训练技巧。
训练规范
借助 TAO,您可以通过调整规格文件中的 epochs、batch size 和 learning rates 等设置来自定义微调实验。如需微调,请将 epochs 设置为 10。通过基于测试数据评估模型来监控过拟合或欠拟合。如果发生过拟合,可以生成其他样本并恢复训练,以确保模型在测试数据上表现良好。
有关训练规范的更多信息,请参阅ReIdentificationNet Transformer。
评估
现在,您的 ReID 模型可以使用训练技巧和采样数据进行微调。评估脚本可以帮助您在微调前后验证准确性。使用 rank-1 和 mAP 分数来评估 ReIdentificationNet 的准确性。
Rank-1 精度 用于测量网络做出的顶部预测的正确频率,对于每个查询图像,评估其第一个检索到的结果是否属于同一身份。
mAP 是一个更全面的指标,用于考虑 ReID 模型所做的完整预测列表。对于每个查询,计算平均精度,该精度是指正确分类的正确阳性识别的比例。mAP 分数是所有查询中所有这些计算出的 AP 分数的平均值。该指标更可靠,因为它考虑了检索到的个人列表中每个 rank 的精度。
表 3 显示了微调前后的结果。我们从使用 ORA 拍摄的 10 分钟视频中采样了这些图像,其中场景中有 10 个对象和四个摄像头。
模型 | 骨干网络 | mAP | 等级 1 |
默认 ReID | ResNet50 | 63.54% | 68.32% |
微调的 ReID (2000 个样本训练 30 次) |
78.4% | 87.59% | |
默认 ReID | 小旋转 | 83.9% | 85.29% |
微调的 ReID (2000 个样本训练 30 次) |
91.3% | 93.80% |
以下结果表明,对采样数据进行微调有助于提高准确度分数。您可以增加训练 epochs 以提高准确度分数。评估 ReID 在其他现有公共数据集上,看看模型是否过拟合。
比较微调前后嵌入距离的分布(图 8)。
在图 8 中,x 轴表示嵌入之间的余弦距离,而 y 轴表示密度。在这两个图中,绿色分布对应 ID 匹配(正分布),红色分布对应 ID 不匹配(负分布)。
- 微调前,ID 匹配(绿色)范围从 0 到 1,ID 不匹配(绿色)范围从 0.09 到 1。
- 经过微调后,ID 匹配将集中在较低的距离 (0 到 0.61),不匹配的范围从 (0.3 到 1) 更分散,这表明嵌入质量有所提高。
这两个分布之间的最小重叠也表明身份可分离性更好。
预期训练时间
10-12 个字符的预期训练时间应尽可能最小,但随着字符、摄像头和训练样本数量的增加,训练时间可能会增加。
我们提供此类场景的总训练时间的估计值。对于单个 NVIDIA A100 GPU,约 2000 个图像样本在 30 个 epochs 的预期训练时间约为 30 分钟。
部署:将微调后的模型导出到 ONNX,并提高 MTMC 和 RTLS 的准确性
这种经过微调的 ReID 模型现在可以导出为 ONNX 格式,以便在 MTMC 或 RTLS 应用程序中进行部署。有关更多信息,请参阅使用多摄像头跟踪工作流程优化大空间流程以及NVIDIA Metropolis 微服务指南中的 Re-Identification主题。
模型部署后,使用这个新 ReID 模型可视化追踪结果(图 9)。
结束语
本文重点介绍的工作流程使您能够在合成数据上微调 ReID 模型。ORA 扩展程序提供了一种灵活的方式来记录角色移动,而 TAO API 则提供了一种开发者友好的方式来训练、推理、评估和导出经过微调的 ReID 模型,从而无需任何标记即可提高模型的准确性。
要使用 NVIDIA 工具自定义工作流程并在其基础上进一步构建,涵盖从模拟到微调和部署的整个视觉 AI 生命周期,请参阅 Metropolis Multi-Camera AI 快速入门指南;有关技术问题,请访问 NVIDIA TAO 论坛 或 Isaac Sim 论坛。
有关更多信息,请参阅以下资源:
- 利用多摄像头追踪工作流程优化大型空间中的流程
- 借助 NVIDIA Metropolis 微服务和 NVIDIA Isaac Sim 实现从数字孪生到云原生部署的实时视觉 AI
- AI 驱动的多摄像头追踪