私はgoogle-colabでfast.aiのlesson1を実行していました。ラインに来たとき
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
はすべてのモジュールをリロードするため、カーネルの再起動は不要です。
クレジットは このフォーラム投稿 に送られます。
モジュール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
ランタイムの再起動は不要になりました。
私にとって、pipを使用して新しいPillowをインストールし、それを使用するコードを実行した後、メニューから「Runtime/Restart runtime…」を使用してランタイムを再起動すると、問題が修正されました。
コラボノートブックの開始時にこれらの3行を実行します
!pip install Pillow==4.0.0
!pip install PIL
!pip install image
私も同じ問題に苦労していました。しかし、これは私にとってはうまくいきました。 https://pillow.readthedocs.io/en/3.1.x/reference/Image.html
インストールされている枕のバージョンは最新ではありません。以下を実行します。
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を起動します。必ず次の2行をコメントアウトしてください(つまり、実行しないでください)
#%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デコーダーがありません。