【Mask2Former】报错:IndexError: list index out of range 全景分割 Ade20k

在使用多个基于Mask2Former的,使用Ade20k作为训练数据的,全景分割模型时,都出现了语义类别超出列表的问题。
在Mask2Former的项目Issues中找到了问题解决方法

报错

  File "demo.py", line 182, in <module>
    for vis_frame in tqdm.tqdm(demo.run_on_video(video), total=num_frames):
  File "/home/master/Develop/Mask2Former/lib/python3.8/site-packages/tqdm/std.py", line 1180, in __iter__
    for obj in iterable:
  File "/home/master/Develop/Mask2Former/demo/predictor.py", line 130, in run_on_video
    yield process_predictions(frame, self.predictor(frame))
  File "/home/master/Develop/Mask2Former/demo/predictor.py", line 94, in process_predictions
    vis_frame = video_visualizer.draw_panoptic_seg_predictions(
  File "/home/master/Develop/Mask2Former/lib/python3.8/site-packages/detectron2/utils/video_visualizer.py", line 172, in draw_panoptic_seg_predictions
    labels = [self.metadata.thing_classes[k] for k in category_ids]
  File "/home/master/Develop/Mask2Former/lib/python3.8/site-packages/detectron2/utils/video_visualizer.py", line 172, in <listcomp>
    labels = [self.metadata.thing_classes[k] for k in category_ids]
    
IndexError: list index out of range

报错原因:

Mask2Former/mask2former/data/datasets/register_ade20k_panoptic.py
代码中

    thing_classes = [k["name"] for k in ADE20K_150_CATEGORIES if k["isthing"] == 1]
    thing_colors = [k["color"] for k in ADE20K_150_CATEGORIES if k["isthing"] == 1]

ADE20K共有150分类,此处使用的是判断为"isthing"的分类列表,此列表只有100分类。导致索引映射错误。

解决方法

修改为:

    thing_classes = [k["name"] for k in ADE20K_150_CATEGORIES]
    thing_colors = [k["color"] for k in ADE20K_150_CATEGORIES]

如此一来可以正常可视化分割结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值