Google Colabでエラーが出てCodeFormerが使えない時の対処法

Google Colab エラー対処法

Google Colabいくつかのエラーとランタイムの復旧

ImportError: /usr/local/lib/python3.11/dist-packages/torch/lib/libtorch_cuda.so: undefined symbol: ncclMemFree

PyTorch のインストールに関連するエラー

解決方法

  1. PyTorch と CUDA のバージョンを一致させる Google ColabでCUDAとPyTorchが互換性のあるバージョンを手動でインストールする必要があります。次のコマンドを実行して、正しいバージョンをインストールします。
!pip uninstall torch torchvision torchaudio -y
!pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2+cu118 -f https://download.pytorch.org/whl/torch_stable.html

このコマンドは、CUDA 11.8 に対応した PyTorch 2.0.1、torchvision 0.15.2、および torchaudio 2.0.2 をインストールします。

  1. ランタイムを再起動 インストールが完了したら、Google Colabのランタイムを再起動する必要があります。再起動後、もう一度コードを実行。

RuntimeError: Numpy is not available

Numpy がインストールされていない、もしくは適切に利用できない状態

このエラーを解決するためには、Numpy を手動でインストールする必要があります。

解決手順

  1. Numpy をインストールする まず、Numpy をインストールします。
!pip install numpy
  1. 再度実行する Numpy をインストールした後、もう一度顔補正コードを実行してみる。

もしエラーがまだ解消されない場合は、他にも依存関係が不足している可能性があるので、ランタイムの復旧を行ってみましょう。

目次

復旧手順

  1. メニューから「ランタイム」>「ランタイムの接続を解除して削除」 を押してください
    (これでColabの環境を初期状態に戻します)
  2. 新しいランタイムを割り当てる必要があります。
    • Colab画面の上の方にある▶️【接続】ボタン(または【再接続】【ランタイムを接続】)を押して、新しく接続
  3. リセット後、必須ライブラリのインストールをします

必須ライブラリのインストール

!pip install torch==2.0.1 torchvision==0.15.2
!pip install basicsr facexlib gfpgan
!pip install -U numpy

torchtorchvision は CodeFormer 推奨バージョンに固定
basicsrfacexlibgfpgan は補完モデルに必要
numpy は汎用依存ライブラリ

CodeFormer リポジトリのクローンと依存関係インストール

!git clone https://github.com/sczhou/CodeFormer.git
%cd CodeFormer
!pip install -r requirements.txt

ここで basicsr などが重複して入ることがありますが問題ありません。

学習済みモデル(重み)のダウンロード

!mkdir -p weights
!wget https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth \
      -O weights/codeformer.pth

画像アップロード用セルの実行

from google.colab import files
uploaded = files.upload()

補正(推論)実行セルの実行

import torch
from basicsr.archs.codeformer_arch import CodeFormer
from torchvision.transforms.functional import to_tensor, to_pil_image
from PIL import Image

# モデルロード
device = 'cuda' if torch.cuda.is_available() else 'cpu'
net = CodeFormer(dim_embd=512, codebook_size=1024, n_heads=8, n_layers=9,
                connect_list=["32","64","128","256"]).to(device)
net.load_state_dict(torch.load('weights/codeformer.pth')['params_ema'])
net.eval()

# 画像読み込み
path = list(uploaded.keys())[0]
img = Image.open(path).convert("RGB")
inp = to_tensor(img).unsqueeze(0).to(device)

# 推論
with torch.no_grad():
    out = net(inp, w=0.7)[0]
img_restored = to_pil_image(out.cpu().clamp(0,1))

# 保存・表示
img_restored.save('restored_image.png')
display(img_restored)

出力ファイルのダウンロード(任意)

files.download('restored_image.png')

まだ解決しない場合

ChatGPT:

このエラーは、NumPy のバージョンと他のパッケージ(特に PyTorch や basicsr)との互換性が壊れていることが原因です。Colab のランタイムを再接続したあと、インストール順や互換性が崩れることがよくあります。


✅ 解決方法:パッケージの競合を整理する

以下のステップで、確実に再構築できます。


🔁 ステップ①:ランタイムのリセット(再確認)

  • 「ランタイム」>「ランタイムを出荷時設定にリセット」
  • その後「接続」し直す
  • ノートブックを最初からやり直す

ステップ②:競合パッケージをクリアして再インストール

以下を 順番通りにセルで実行

# 最初に旧パッケージを削除(特に古いtorchやnumpy関連)
!pip uninstall -y torch torchvision torchaudio numpy
# 正しい組み合わせで再インストール(Colabに最適)
!pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2
!pip install numpy==1.24.3
# CodeFormer用ライブラリ
!pip install basicsr facexlib gfpgan
# CodeFormer本体をクローン
!git clone https://github.com/sczhou/CodeFormer.git
%cd CodeFormer
!pip install -r requirements.txt

なぜリセットが必要なのか?

  • もともとColabにはPyTorch 2.1系+CUDA 12.1の組み合わせが入っています
  • そこに違うバージョン(例えばCUDA 11.8向けとか)を無理にインストールすると、CUDAライブラリやNCCLライブラリが壊れます
  • 結果、undefined symbol: ncclMemFree など「ライブラリシンボルが見つからない」という致命的エラーになります
  • Colabでは、壊れた環境を元に戻すにはリセットしかありません。
  • URLをコピーしました!
目次