为对象检测调整 COCO 边界框的大小

问题描述

所以这是我的第一个问题。我正在准备用于对象检测的数据集。到目前为止,我做了以下几件事:

  1. 我有一张原始图片(尺寸 w4000 x h3000)。
  2. 我使用标注平台 Roboflow 将其标注为 COCO 格式,图片中有近 250 个对象。
  3. Roboflow 返回了一张缩小的图片 (2048x1536),其中包含带有 COCO 格式注释的相应 json 文件
  4. 然后,为了从我的原始图片获取数据集(因为我有很多对象并且图片足够大),我决定将原始图片平铺成 224x224 的补丁。为此,我放大了一点 (4032x3136) 以便能够正确切片,获得 252 张图片

问题

  1. 如何将 Roboflow 2048x1536 图片的边界框大小调整为原始图片 (4032x3136)?

  2. 一旦将 b.Boxes 调整为原始图片大小,我如何再次调整它们的大小,使大小适应我​​通过切片原始图片创建的每个补丁 (224x224)?

谢谢!!

解决方法

听起来最终目标是从源 4032x3136 图像平铺 224x224 图像,并正确更新边界框。

至少在 Roboflow 中,您可以将平铺作为预处理步骤添加到原始 4032x3136 图像中。图像将分为您选择的图块数量(2x2、3x3、NxY)。边界框将被正确更新以覆盖每个单独图块上的对象。

要重新实现您所描述的代码,您需要:

  1. 将您的 2048x1536 图片放大到 4032x3136
  2. 相应地缩放边界框
  3. 使用类似 Pil 的东西将图像分成 224x224 的图块
  4. 更新注释以分解为各个图块上的坐标;每个图块一个注释