You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Google Colab中使用Segmentation Models加载UNet模型时出现AttributeError问题求助

解决Segmentation Models在Colab中加载预训练权重时的AttributeError问题

这个错误的根源很明确:你使用的segmentation_models库依赖的classification_models组件,在加载ImageNet预训练权重时调用了旧版独立Keras的keras.utils.get_file方法,但当前Google Colab默认使用的是TensorFlow集成的Keras(tf.keras),这个方法在tf.keras里的路径是tf.keras.utils.get_file,两者路径不匹配导致了报错。

下面给你几个可行的解决办法,按推荐程度排序:

方案一:安装适配tf.keras的库分支(最稳定)

卸载现有可能不兼容的库版本,然后安装专门适配tf.keras的分支:

pip uninstall -y segmentation_models classification_models
pip install git+https://github.com/qubvel/classification_models.git@tf-keras
pip install git+https://github.com/qubvel/segmentation_models.git

安装完成后,重新运行你的代码,就能正常加载ResNet34的ImageNet预训练权重了。这个分支已经把所有Keras相关的调用替换成了tf.keras的API,从根本上解决了版本兼容问题。

方案二:临时修改库源码(快速临时解决)

如果你不想重新安装库,可以直接修改Colab中classification_models的源码:

  1. 在Colab中运行以下命令打开权重加载文件并替换代码:
    !sed -i 's/keras_utils.get_file/tf.keras.utils.get_file/g' /usr/local/lib/python3.7/dist-packages/classification_models/weights.py
    
    这个命令会直接把文件里的keras_utils.get_file替换成tf.keras.utils.get_file
  2. 修改完成后,重新运行你的模型初始化代码即可。

注意:这个修改是临时的,重启Colab运行时后需要重新执行这个命令。

方案三:安装独立Keras(不推荐)

你可以尝试安装独立的旧版Keras来匹配库的调用,但这可能会和Colab默认的TensorFlow版本产生冲突,引发其他问题:

pip install keras==2.4.3

只有前两个方案都无法解决时,再考虑这个选项。

内容的提问来源于stack exchange,提问作者Minwoo Kang

火山引擎 最新活动