通过使用合成数据来微调 AI 模型,提高多摄像头追踪的准确性

Weixin Screenshot_20240814113303.png

数字孪生能够有效地为工厂、零售空间等资产创建基于物理学的虚拟复制品,实现对现实世界环境的精确仿真。这使得大规模且具有特定用途的合成数据在现实世界的计算机视觉和 AI 工作流中变得越发重要。

基于 NVIDIA Omniverse 构建的 NVIDIA Isaac Sim 是一个完全可扩展的参考应用,可用于设计、模拟、测试和训练由 AI 赋能的机器人。Omni.Replicator.Agent (ORA) 是 Isaac Sim 中的一个用于生成合成数据的扩展程序。它所生成的合成数据可专门用于训练计算机视觉模型,例如 TAO PeopleNet Transformer 和 TAO ReIdentificationNet Transformer 等。

本文是构建多摄像头追踪视觉 AI 应用系列文章的第二篇文章。在第一篇文章中,我们从头到尾介绍了多摄像头追踪工作流,包括模型仿真、训练和部署,以及该工作流中的其他环节。

现在,我们将深入探讨仿真和训练步骤。我们会在这个过程中生成高质量的合成数据,这些数据用于根据特定用例对基础模型进行微调。本文将为您介绍 TAO ReIdentificationNet (ReID),它是一个常用于多摄像头追踪 (MTMC) 和实时定位系统 (RTLS) 应用的网络,能够在不同的摄像头视图中追踪和识别目标对象。本文还将说明如何使用从 ORA 采集的合成数据来提高 ReID 的准确性。

具体而言,我们将演示如何使用从 Isaac Sim 的 ORA 扩展程序中获取的数据以及 NVIDIA TAO API 对 ReID 模型进行训练和微调,使该模型能够满足您的使用需求。这让您能够自如地使用合成数据来扩充现有的真实数据集,提高数据集的多样性和模型的稳健性。

Weixin Screenshot_20240814113336.png
图 1. 仿真-训练-构建-部署工作流

ReIdentificationNet 概述

ReIdentificationNet 是 MTMC 和 RTLS 工作流使用的一种网络,它可以通过从检测到的对象裁剪中提取嵌入来识别不同摄像头中的对象。这些嵌入能捕捉对象的外观、纹理、颜色和形状等基本信息,从而提高跨摄像头识别相似对象的能力。这意味着在不同的摄像头中,外观相似的物体具有相似的嵌入特征。

ReID 模型区分独特对象的准确性在多摄像头追踪中起到至关重要的作用。MTMC 和 RTLS 应用依靠 ReIdentificationNet 的嵌入关联各摄像头中的对象并执行追踪。

640.gif
图 2 .使用 ReIdentificationNet

识别和追踪多个摄像头上的多个对象

(资料来源:https://youtu.be/l5M4sqaRd6w?...

Weixin Screenshot_20240814113501.png
图 3. 用于 MTMC 和 RTLS 工作流的 ReIdentificationNet

模型架构

网络输入的是大小为 256 x 128 的 RGB 图像切片,而模型为每个图像裁剪输出一个大小为 256 的嵌入向量。

目前,ReIdentifcationNet 支持 ResNet-50 和 Swin transformer 主干网络。ReIdentificationNet 的 Swin 变体是一个以人为中心的基础模型,它在大约 3M 的图像裁剪上进行预训练,然后在各种有监督的人物再识别数据集上进行微调。

Weixin Screenshot_20240814113542.png
图 4. ReIdentificationNet 训练流程

预训练

在预训练中,我们采用了一种名为“SOLIDER:以人为中心的视觉任务语义可控自监督学习框架”的自监督学习技术。

SOLIDER 建立在 DINO(无标签自蒸馏)的基础上,它使用人像裁剪的先验知识,生成伪语义标签,从而使用语义信息训练人类表征。SOLIDER 使用语义控制器,调整人类表征的语义内容,以适应下游的人物再识别任务。

如要了解更多信息,请参见《超越表象:以人为中心的视觉任务语义可控自监督学习框架》:

https://arxiv.org/pdf/2303.17...

这个用于预训练的数据集包含 NVIDIA 专有数据集的组合以及 Open Images V5。

微调

为了进行微调,在各种有监督人物再识别数据集上对预训练模型进行训练。这些有监督数据集包含一系列 NVIDIA 专有的合成数据集和真实数据集。

Weixin Screenshot_20240814113621.png

表 1. 训练数据集概览

表 2 显示了 Swin-Tiny 主干网络下游 ReIdentification 任务的准确性。

Weixin Screenshot_20240814113647.png

表 2. 内部数据集上的ReIdentification Transformer 模型大小和准确性

为什么需要微调?

性能不佳的 ReID 网络可能会导致 ID 切换,即由于不同个体之间的视觉相似度较高或外观随时间发生的变化而使系统错误地关联 ID。

出现这个问题的原因是网络可能无法有效适应特定场景的具体条件,如光线、背景和服装的变化等。例如在图 4 中,由于嵌入质量较差而出现了 ID 切换,导致 ID 4 转换为 ID 9 和 ID 17,对象 ID 6 转换为 ID 14。

为了减少 ID 切换并提高准确性,必须使用 ORA 和特定场景的数据,对 ReID 网络进行微调。这样可以确保模型了解环境的独特特征和细微差别,从而提高识别和追踪的可靠性。

640 (1).gif
图 5. 在进行 TAO ReIdentification 微调之前,实时定位系统工作流中发生的 ID 切换

仿真:使用 Isaac Sim 和 Omniverse Replicator Agent 扩展程序

配置仿真的最佳实践

要生成高质量的合成数据,需要考虑几个关键因素:

  • 角色计数
  • 角色唯一性
  • 摄像机位置
  • 角色行为

角色数

ReIdentificationNet 极大地受益于唯一身份的数量。在使用 ORA 设置数字孪生时,选择合适的智能体数量至关重要。

在 ORA 界面的“Character Settings”(角色设置)中,您可以设置角色数量。考虑到环境大小与 Isaac Sim 默认仓库数字资产相似或更大的情况,请使用至少 10-12 个独特角色。

角色唯一性

您在 Isaac Sim 中选择的角色应具有独特的外观。这通常包括让角色穿戴不同的衣服、鞋子、配饰、头饰等。为数字孪生选择合适的资产也很重要,例如为仓库环境选择穿着安全背心的角色。

摄像头位置

摄像头的位置应使它们的组合视野范围能够覆盖待检测和追踪角色所在的整个楼层区域。为保证这一点,应将摄像头放置在较高的位置(比如天花板上)并向地面倾斜。

摄像头的位置还必须确保组合视野范围能对所有追踪对象进行连续观察。应始终能够从 3-4 个不同的摄像头角度捕捉到每个角色,以获得最佳的数据数量和质量。

如要验证摄像头的位置,可在 Stage 面板的 World(世界)区域选中每台摄像头,调整其属性并检查其视野范围。

角色行为

可以在 Isaac Sim ORA 中自定义角色行为。可以为每个角色手动输入行为指令或随机生成行为指令,从而实现角色移动的灵活性与多样性。

如果要采集 ReID 数据,建议采用随机生成行为,只要对象能被所需的摄像头角度捕捉到即可。

640 (2).gif

图 6. 通过 Isaac Sim ORA 扩展程序从不同的摄像头角度捕捉对象的移动

训练:微调 ReIdentificationNet

从 ORA 扩展程序获取数据后,对这些数据进行整理和取样,以便用于训练 TAO ReIdentificationNet 模型。可使用 Metropolis 微服务或 TAO 套件中的 TAO 微调笔记本进行微调。

数据取样指南

在对用于 ReID 的训练数据进行取样时,以下标准十分重要。

  • 身份数量:ReIdentificationNet 能够极大地受益于唯一身份数量的增加。Isaac Sim 场景中的所有身份都会自动成为训练样本的一部分。建议在 10-12 个对象上进行微调,然后再逐步增加数量。
  • 摄像头数量:摄像头的数量对 ReID 模型的性能也有很大影响。摄像头越多,对场景和对象的覆盖范围就越大。建议在中小型环境中放置 3-4 个摄像头。
  • 训练图像的数量:建议从较少的样本数开始,每个 ID 大约 50 个样本,总共 500 个样本。在观察到准确性达到饱和后,可以增加样本数。
  • 边界框宽高比:由于 ReID 是以人为中心的模型,因此边界框裁剪的高度必须大于宽度。建议边界框宽度与高度之比小于 1。
  • 数据格式:从 ORA 扩展程序获得的 KITTI 格式数据必须转换为 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_c1s1_01_00.jpg 中的 0001 是分配给对象的唯一 ID。更多信息,请参见 Market-1501 数据集和 ReIdentificationNet:

https://zheng-lab.cecs.anu.ed...

https://catalog.ngc.nvidia.co...

图 7 所示的是数据集样本。

Weixin Screenshot_20240814113936.png
图 7. ReIdentificationNet 数据集中的图像样本

训练技巧

准备好数据后,在微调过程中使用论文《Bag of Tricks and A Strong Baseline for Deep Person Re-identification》中的以下训练技巧来提高 ReID 模型的准确性。

  • ID 损失 + 三重损失 + 中心损失:ReIdentification 任务是一种简单的分类任务,其中的每个类都是给定对象的 ID。虽然这一 ID 损失有助于训练 ReID,但不足以提高模型的准确性。为了进一步提高模型的准确性,可使用三重损失和中心损失来支持 ID 损失。三重损失有助于将正身份样本的嵌入推近,将负身份样本的嵌入推远,而中心损失则有助于学习每个类的中心,并对特征之间的距离施加惩罚,以提高类内的紧凑性。
  • 随机消除增强:在使用多个摄像头追踪一个对象时,常常会遇到遮挡。该训练过程的目标就是在训练数据中模拟这种情况,以提高泛化能力。随机消除增强技术会随机移除特定图像裁剪的部分,以复制遮挡情况。
  • 预热学习率:恒定的学习率不足以收敛 ReIdentificationNet 的训练,因此学习率 (LR) 在最初的 10 个词元中,从 3.5 x 10-5 线性增加到 3.5 x 10-6。然后,在第 40 个词元和第 70 个词元时,LR 会分别降至 3.5 x 10-5 和 3.5 x 10-6。
  • 批归一化瓶颈 (BNNeck):由于 ID 损失会根据余弦距离优化,而三重损失会根据欧几里得距离优化,因此它们的损失含义不一致。这会导致损失值波动。为了缓解这一问题,需要在特征层之后使用 BNNeck 获取归一化特征。
  • 标签平滑化:训练集中的特征可能不会出现在测试集中。为了防止过拟合,需要在这项分类任务中使用标签平滑化这一训练技巧。

训练规范

TAO 让您能够通过调整规范文件中的设置(如词元、批大小和学习率)来定制微调实验。微调时,词元数量设置为 10。通过在测试数据上对模型进行评估,可以监测是否存在过拟合或欠拟合的情况。如果出现过拟合,可生成更多样本并恢复训练,以确保模型在测试数据上具有良好的性能。

如要了解关于训练规范的更多信息,请参见 ReIdentificationNet Transformer:

https://docs.nvidia.com/tao/t...

评估

现在可以使用训练技巧和抽样数据对 ReID 模型进行微调。评估脚本可以帮助您验证微调前后的准确性。可以使用 rank-1 和 mAP 分数评估 ReIdentificationNet 的准确性。

Rank-1 准确性衡量的是网络做出的首要预测的正确率。该指标评估每张查询图像中检索到的第一个人物是否属于同一身份。

mAP 是一项更全面的指标,它考虑了 ReID 模型做出的整个预测列表。该指标计算每个查询的平均精度,这里的精度指的是经过准确分类的准确肯定识别比例。mAP 分数是在所有查询中计算出的所有 AP 分数的平均值。该指标更加稳健,因为它考虑了检索个体列表中每个等级的精度。

表 3 显示微调前后的结果。我们从使用 ORA 拍摄的 10 分钟视频中抽取了这些图像,场景中有 10 个对象和 4 个摄像头。

Weixin Screenshot_20240814114034.png

表 3. 在 2000 个图像样本上进行微调后的结果

以下结果表明,对抽样数据进行微调有助于提高准确性得分。您可以增加训练词元数来提高准确性得分。可在其他现有的公开数据集上评估 ReID,看看该模型是否过拟合。

比较微调前后嵌入距离的分布(图 8)。

Weixin Screenshot_20240814114058.png
图 8. 微调前后的嵌入分布

在图 8 中,X 轴表示嵌入之间的余弦距离,Y 轴表示密度。在这两张图中,绿色分布对应 ID 匹配(正分布),红色分布对应 ID 错配(负分布)。

微调前,ID 匹配(绿色)范围为(0 到 1),ID 错配(绿色)范围为(0.09 到 1)

微调后,ID 匹配集中在较小的距离(0 到 0.61);而错配则更加分散,范围在(0.3 到 1)之间,这表明嵌入质量有所提高。

两种分布之间的重叠极少,这也表明身份可分性有所提高。

预计训练时间

10-12 个角色的预期训练时间应该是最短的,但随着角色、摄像头和训练样本数量的增加,训练时间也会增加。

我们估算了这种情况下的总训练时间。如果使用单个 NVIDIA GPU,使用约 2000 个图像样本对 30 个词元进行训练,所需的时间预计为 30 分钟左右。

部署:将经过微调的模型导出至 ONNX 并提高 MTMC 和 RTLS 的准确性

微调后的 ReID 模型现在可以导出为 ONNX 格式,以便部署在 MTMC 或 RTLS 应用中。如需了解更多信息,请参见借助多摄像头追踪工作流优化大型空间内的流程以及 NVIDIA Metropolis 微服务指南中的再识别章节:https://docs.nvidia.com/mms/t...

部署模型后,使用这一新的 ReID 模型可视化追踪结果(图 9)。

640 (3).gif
图 9. 使用 RTLS 对仓库场景中的 ReID 模型进行微调前后的效果图

结论

本文中重点介绍的工作流可让您在合成数据上对 ReID 模型进行微调。ORA 扩展程序提供了一种记录角色移动的灵活方式,而 TAO API 提供了一种开发者友好的训练、推理、评估和导出微调后的 ReID 模型的方式,不需要进行任何标记工作就能帮助提高模型的准确性。

如要使用涵盖从仿真、微调到部署等整个视觉 AI 生命周期的 NVIDIA 工具定制和进一步构建工作流,请参见 Metropolis 多摄像头 AI 快速入门指南。如果遇到技术问题,请访问 NVIDIA TAO 论坛或 Isaac Sim 论坛:

https://forums.developer.nvid...

https://forums.developer.nvid...

如需了解更多信息,请参见以下资源:

借助多摄像头追踪工作流优化大型空间内的流程
https://mp.weixin.qq.com/s?__...

借助 NVIDIA Metropolis 微服务和 NVIDIA Isaac Sim,实现从数字孪生到云原生部署的实时视觉 AI
https://mp.weixin.qq.com/s/0g...

由 AI 驱动的多摄像头追踪

https://www.nvidia.com/en-us/...

推荐阅读
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息