记一次配使用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
]
成功