输入图像的数据类型是布尔型。在布尔数据类型下,插值未定义。

13

我在使用Mask_RCNN来训练自己的多类别数据集时遇到了这个问题。

当我开始训练时,就会出现这个错误:

/home/parth/anaconda3/envs/compVision/lib/python3.7/site-packages/skimage/transform/_warps.py:830: FutureWarning: 输入的图像数据类型为布尔型。布尔型数据类型不支持插值。请将顺序设置为0或明确地将输入图像转换为其他数据类型。从版本0.19开始,将引发ValueError而不是此警告。 order = _validate_interpolation_order(image.dtype, order)

我一直收到了很多次这个错误,然后内核死了。 请帮帮我!


3
在概念层面上,您希望布尔类型数据的插值如何工作? - gspr
简而言之 - 在Mask RCNN库中,他们传递了order=1,这就是为什么会出现这个问题的原因。<hr>请参考此问题。我已经解释了为什么会发生这种情况。https://github.com/scikit-image/scikit-image/issues/6286 - Anmol Deep
4个回答

20

也许您可以尝试使用skimage 0.16.2 版本。当我使用版本 0.17.2 时,我遇到了相同的问题。祝好运!我不知道为什么。


谢谢!这对我有效。 - Juan Camilo Rivera Palacio
是啊...在苹果芯片上运行得那么好(并不是!) - trueToastedCode
它解决了我的问题,我爱你。 - Ed J
@trueToastedCode 我通过conda安装了它,在Apple Silicon上运行得非常好。conda install scikit-image=0.16.2 - Bonco

9

使用pip安装最新版本的scikit-image库,版本号是0.16.2


6

训练两类别的MaskRCNN模型时,我也遇到了同样的问题。然后通过以下命令卸载了现有(我的版本为0.19.2)的scikit-image:

pip uninstall scikit-image

并通过以下命令安装了相同包的0.16.2版本:

pip install scikit-image==0.16.2

请注意使用的tensorflow和keras版本:

tensorflow==2.2.0 keras==2.3.1


3
我假设您正在尝试转换掩码(即在Mask_RCNN中)。如果是这种情况,一个解决方案是按要求进行操作(明确地将类型强制转换为其他类型),然后将其转换回布尔掩码。
更改scikit-image版本只是一种权宜之计,最终不会起作用,因为其他需要更新的软件包与旧版scikit-image不兼容。
我提供了一个例子解决方案,已经验证可以很好地工作:
# resize the mask cast as uint32 then convert back to bool
    img_resized = skimage.util.img_as_bool(skimage.transform.resize(
        image.astype(np.uint32), output_shape,
        order=order, mode=mode, cval=cval, clip=clip,
        preserve_range=preserve_range, anti_aliasing=anti_aliasing,
        anti_aliasing_sigma=anti_aliasing_sigma))
    return img_resized

希望能对您有所帮助。看起来这是一个常见的问题,降级scikit-image并不是一个理想的解决方案。

1
由于C语言问题,我无法降级到旧版本的scikit-image,最终通过这种方式解决了我的问题。对于那些感兴趣的人,我不得不更改utils.py底部的resize函数,因为这在帖子中并不清楚。 - Jannes Braet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接