DepthAI v2 has been superseded by DepthAI v3. You are viewing legacy documentation.
此页面由 AI 自动翻译。查看英文原版

本页目录

  • 输入帧 AR 不匹配
  • 裁剪
  • 信箱模式
  • 拉伸
  • 显示高分辨率检测
  • 直通
  • 裁剪高分辨率帧
  • 拉伸帧
  • 编辑边界框

NN 分辨率技术

在处理与输入帧宽高比 (AR) 不匹配的神经网络时,主要有两个挑战:
  • 输入帧 AR 不匹配 - 当您的 NN 模型期望的宽高比与传感器的宽高比不同时
  • NN 输出的可视化 - 当您想在高分辨率下可视化 NN 输出时

输入帧 AR 不匹配

当您的 NN 模型期望的宽高比(例如 1:1)与传感器的宽高比(例如 4:3)不同时,就会出现挑战,而我们希望在传感器的完整视场 (FOV) 上运行 NN 推理。假设我们有一个 MobileNet-SSD,它期望 300x300 的输入帧(1:1 宽高比),并且我们想在传感器的完整 FOV 上运行推理——我们有几个选项:
  1. 裁剪 ISP 帧以匹配 1:1 的宽高比,从而丢失部分 FOV
  2. 将 ISP 帧拉伸以匹配 NN 的 1:1 宽高比
  3. 对 ISP 帧应用信箱模式以获得 1:1 的宽高比帧

裁剪

优点:NN 准确度无下降。缺点:帧被裁剪,因此不是完整的 FOV。将完整 FOV (isp) 帧裁剪为匹配 NN 宽高比可以获得最佳 NN 准确度,但这会降低 FOV。 使用示例在此

信箱模式

优点:保留完整的 FOV。缺点:较小的“帧”意味着可能丢失更多特征,从而降低 NN 准确度。信箱模式方法将在完整 FOV (isp) 帧的图像上方和下方应用“黑条”,从而保留宽高比。您可以通过使用 ImageManip 并设置 manip.setResizeThumbnail(x,y) 来实现此目的。使用此方法的缺点是您的实际图像会变小,因此某些特征可能无法保留,这可能意味着 NN 准确度会下降。 使用示例在此

拉伸

优点:保留完整的 FOV。缺点:由于帧被拉伸,NN 准确度可能会下降。拉伸是通过改变宽高比来完成的。可以使用 camRgb.setPreviewKeepAspectRatio(False) 进行配置。这意味着不会保留宽高比,图像会被“拉伸”。这对于某些现成的 NN 模型可能存在问题,因此可能需要进行一些微调。 使用示例在此

显示高分辨率检测

要在 RVC2 上以实时 (~30FPS) 运行对象检测模型,通常会使用较低分辨率的输入帧进行推理(例如 300x300416x416)。与其在如此小的帧上显示边界框,不如流式传输更高分辨率的帧(例如 ColorCameravideo 输出)并在高分辨率帧上显示边界框。有几种方法可以实现这一点,在本节中我们将对其进行探讨。

直通

仅使用较小的推理帧。在这里,我们使用了 MobileNetDetectionNetwork 输出的 passthrough 帧,以便边界框与帧同步。另一种选择是从 ColorCamera 流式传输 preview 帧,并在主机上同步(或根本不同步)。下面是带有检测的 300x300 帧。演示代码在此

裁剪高分辨率帧

解决低分辨率帧的一个简单方法是将高分辨率帧(例如 ColorCameravideo 输出)流式传输到主机,并在其上绘制边界框。为了使边界框与帧匹配,previewvideo 的尺寸应具有相同的宽高比,即 1:1。在此示例中,我们将 4k 分辨率缩小到 720P,因此最大分辨率为 720x720,这正是我们使用的分辨率(camRgb.setVideoSize(720,720))。我们也可以使用 1080P 分辨率并将 1080x1080 帧流式传输回主机。 演示代码在此

拉伸帧

我们经常在模型中遇到的一个问题是它们的宽高比是 1:1,而不是我们摄像机分辨率的 16:9。这意味着会丢失部分 FOV。上面(输入帧 AR 不匹配)我们展示了改变宽高比将保留摄像机的整个 FOV,但它会“挤压/拉伸”帧,如下图所示。 演示代码在此

编辑边界框

为了避免拉伸帧(因为它会影响 NN 准确度),我们也可以从设备流式传输完整的 FOV video,并在 300x300 帧上进行推理。但是,这需要我们重新计算边界框以匹配图像的不同宽高比。此方法不保留整个宽高比,它仅在完整的 FOV video 帧上显示边界框。 演示代码在此