【问题标题】:Detectron2 Mask-Rcnn keep same color segmentation for same object classDetectron2 Mask-Rcnn 为相同的对象类保持相同的颜色分割
【发布时间】:2023-03-10 11:00:02
【问题描述】:

我在视频上使用detectron2实现Mask-Rcnn,问题是在每一帧上,同一物体的分割颜色会发生变化。

是否有任何参数可以让我为对象类保留单一颜色。 我已经尝试过detectron2.utils.visualizer.ColorMode(1),但它不起作用

【问题讨论】:

    标签: deep-learning computer-vision image-segmentation detectron


    【解决方案1】:

    ColorMode(1) 仅在传递给 Visualizer 的元数据定义了 thing_colors 时才有效。来自documentation for ColorMode

    分段= 1

    让同一类别的实例具有相似的颜色 (来自 metadata.thing_colors),并以高不透明度覆盖它们。这 更加关注分割的质量。

    因此,您需要将预定义颜色列表(每个类别一种)添加到您的元数据中。来自here

    thing_colors (list[tuple(r, g, b)]):每个事物类别的预定义颜色(在 [0, 255] 中)。用于可视化。如果没有给出,将使用随机颜色。

    现在,实际使用的颜色可能与thing_colors 中指定的颜色不完全相同。在Visualizer.draw_instance_predictions() 中,每个指定的颜色都是通过添加一个随机值来抖动的,所以叠加的颜色是略有不同的。这种随机值的使用意味着您仍然会看到帧之间的类颜色发生变化。根据您指定的颜色,此更改可能会或可能不会在视觉上明显。

    一个简单的解决方案可能是继承 Visualizer 并覆盖 _jitter() 方法,以便它按原样返回颜色。

    class MyVisualizer(Visualizer):
        def _jitter(self, color):
            return color
    

    但是,_jitter() 旨在成为一种内部方法,因此这是一个 hacky 解决方案,并且可能会在某个时候中断。

    更好的解决方案可能是覆盖 draw_instance_predictions() 并根据您的需要自定义绘图。

    【讨论】:

      猜你喜欢
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2015-11-12
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多