当前位置: 代码迷 >> 综合 >> RuntimeError: _th_or not supported on CUDAType for Bool / IndexError: list index out of range(mask)
  详细解决方案

RuntimeError: _th_or not supported on CUDAType for Bool / IndexError: list index out of range(mask)

热度:44   发布时间:2024-03-08 11:19:37.0

记一次配使用maskrcnn-benchmark的惨痛经历,因为要用到分割,所以就使用自己的数据集转成coco格式后用maskrcnn-benchmark来训练得到目标的轮廓,但是在运行的过程中报了两个错误,很致命。

首先配置好环境,这里我就犯了一个错误,把pytorch版本装的太高了,我用的是pytorch==1.4.0,结果训练的时候报错selected_polygons.append(self.polygons[i])
IndexError: list index out of range

我查了之后发现pytorch在1.2版本以后对数据的返回值做了修改,所以我按照issue上的方法对代码进行了修改,如下

https://github.com/facebookresearch/maskrcnn-benchmark/issues/725

改完之后可以训练了,但是轮廓却检测不到,通过实验我发现还是torch.uint8和torch.bool的原因。最后,,,,我还是更换了pytorch的版本

 

conda install pytorch=1.2.0 -c soumith ,这里降低版本后需要重新编译一下

然后修改coco_eval.py
rles = [
mask_util.encode(np.array(mask[0, :, :, np.newaxis], dtype=np.uint8, order="F"))[0]
for mask in masks
]

 

成功

  相关解决方案