使用MRCNN训练Mask R-CNN后调用skimage.io.imread出现无io属性报错
问题解决方案
该报错为scikit-image(别名skimage)的子模块导入异常,可按以下步骤依次排查解决:
- 确认版本匹配:MRCNN框架对高版本scikit-image适配性较差,推荐使用0.18.3版本。在你当前的vc虚拟环境中执行命令
pip install scikit-image==0.18.3覆盖安装指定版本,安装完成后重启代码运行环境。 - 排查本地文件冲突:检查你运行代码的工作目录下是否存在名为
skimage.py的文件或skimage命名的文件夹,这类同名资源会优先被导入,覆盖官方的scikit-image库导致子模块丢失,确认存在后重命名或转移即可。 - 验证导入逻辑:打开当前虚拟环境的Python交互终端,依次执行以下代码验证模块可用性:
无报错且能正常打印函数信息则说明库本身无问题。import skimage from skimage import io print(io.imread) - 调整MRCNN源码导入写法:如果以上步骤均正常仍报错,修改mrcnn目录下的utils.py文件,将原有的
import skimage.io语句替换为from skimage import io,同时将调用行image = skimage.io.imread(self.image_info[image_id]['path'])修改为image = io.imread(self.image_info[image_id]['path']),该写法可以规避部分环境下的子模块导入异常。 - 重装依赖:以上操作均无效的情况下,执行
pip uninstall scikit-image -y卸载现有包,再执行conda install scikit-image=0.18.3通过conda源重装,避免pip安装导致的依赖缺失问题。
内容的提问来源于stack exchange,提问作者Karl Norrena
相关产品推荐
相关产品推荐

