我想使用 coco 数据集在 tensorflow 2.1 中训练 ssd(单发多盒检测器)网络
论文说他们使用图像裁剪来提高鲁棒性,所以我尝试使用tf.image.sample_distorted_bounding_box()
但是,我意识到这个函数只是调整边界框的大小,而不是保留相应的标签。
如何裁剪图像并保留适当的 bbox 和标签?适当意味着bbox坐标随着图像的变化而被细化,并且bbox从裁剪后的图像中被移除。
我想使用 coco 数据集在 tensorflow 2.1 中训练 ssd(单发多盒检测器)网络
论文说他们使用图像裁剪来提高鲁棒性,所以我尝试使用tf.image.sample_distorted_bounding_box()
但是,我意识到这个函数只是调整边界框的大小,而不是保留相应的标签。
如何裁剪图像并保留适当的 bbox 和标签?适当意味着bbox坐标随着图像的变化而被细化,并且bbox从裁剪后的图像中被移除。
我一直致力于使用 PyCOCO 为 COCO 数据集创建一个数据生成器,用于图像分割,我认为我的经验可以帮助你。我在 medium 上的帖子记录了从开始到结束的整个过程,包括使用 Tensorflow Keras 向图像添加增强功能,并在掩码中进行相应更改,以确保保留标签(您可以在第 2 部分中找到此内容)。
正如我帖子的添加增强部分所述,为确保图像和蒙版即使在随机增强(裁剪、旋转、亮度等)之后仍保持同步,两者的“种子”应保持相同。
但是,需要注意的是,我使用的是语义分割掩码而不是对象检测(边界框)。但我相信你可以从我的代码中取回一些有用的东西,这可能会帮助你找出问题的解决方案。