我在 google-colab 中运行 fast.ai 的第 1 课。当我来到线
img = plt.imread(f'{PATH}valid/cats/{files[0]}')
plt.imshow(img);
它没有显示图像。相反,我得到了一个错误:
AttributeError:模块“PIL.Image”没有属性“register_extensions”
这可能是什么原因造成的?
我在 google-colab 中运行 fast.ai 的第 1 课。当我来到线
img = plt.imread(f'{PATH}valid/cats/{files[0]}')
plt.imshow(img);
它没有显示图像。相反,我得到了一个错误:
AttributeError:模块“PIL.Image”没有属性“register_extensions”
这可能是什么原因造成的?
遇到此问题时,我正在使用 Google Colab。
在要安装的代码之后torch,添加:
!pip install pillow==4.1.1
%reload_ext autoreload
%autoreload
它将重新加载所有模块,%autoreload因此不需要重新启动内核。
归功于此论坛帖子。
对我来说,在使用 pip 安装较新的 Pillow 并运行使用它的代码后,使用菜单中的“Runtime / Restart runtime…”重新启动运行时解决了这个问题。
pillow加载模块和所有其他 fastai 设置后对我有用的是:
# workaround
from PIL import Image
def register_extension(id, extension): Image.EXTENSION[extension.lower()] = id.upper()
Image.register_extension = register_extension
def register_extensions(id, extensions):
for extension in extensions: register_extension(id, extension)
Image.register_extensions = register_extensions
现在不需要运行时重新启动。
在 colab 笔记本的开头运行这 3 行
!pip install Pillow==4.0.0
!pip install PIL
!pip install image
我也在为同样的问题而苦苦挣扎。但这对我有用。 https://pillow.readthedocs.io/en/3.1.x/reference/Image.html
您安装的 Pillow 版本不是最新的。运行以下命令:
import PIL
print(PIL.PILLOW_VERSION)
可能会4.0.0。如果是这样,请运行以下命令:
!pip uninstall Pillow
!pip install Pillow==5.3.0
然后重新启动您的运行时(按CTRL + M .,或Runtime --> Restart runtime从菜单中)。再次运行第一组命令以确保您当前的 PIL 版本为 5.3.0。
下一次,你启动你的colab VM,一定要注释掉下面两行(即不要运行它们)
#%reload_ext autoreload <------------— comment out
#%autoreload 0 <------------— comment out
%matplotlib inline
为了安全起见,我还重新安装了我的 PIL
!pip install --no-cache-dir -I pillow
在完成所有设置后添加以下内容后,它对我有用:
from PIL import Image
def register_extension(id, extension): Image.EXTENSION[extension.lower()] = id.upper()
Image.register_extension = register_extension
def register_extensions(id, extensions):
for extension in extensions: register_extension(id, extension)
Image.register_extensions = register_extensions
然后在节中更改了以下功能Analyzing Results: Looking At Pictures
def load_img_id(ds, idx): return np.array(PIL.Image.open(PATH+ds.fnames[idx]))
至
def load_img_id(ds, idx): return np.array(Image.open(PATH+ds.fnames[idx]))
可能是文件的格式。我将它从“.tiff”更改为“.png”。有用。该模块没有 tiff 解码器。
跑步
python -m pip install --upgrade Pillow
python3 -m pip install --upgrade Pillow
并重新启动 python/重新导入模块为我解决了这个问题。