こんにちは!システムエンジニアでブロガーの私です。今日はPythonを使って、YOLO(You Only Look Once)という物体検出のアルゴリズムを使って画像を学習しようとしている方へ向けて、よくあるエラーの解除方法をお届けします。特に、YOLOを初めて使う方や高校生の皆さんにも理解できるよう、丁寧に解説していきます。エラーに悩まされている方は、ぜひ最後まで読んでみてくださいね!
よくあるYOLOのエラーとその原因
YOLOを使って画像を学習しようとすると、Pythonのコマンドラインでyolo
と入力しても、エラーが発生してしまうことがあります。ここでは、以下のエラーに注目していきます。
- ModuleNotFoundError: No module named 'yolo'
- CUDAエラー: CUDAドライバが見つかりません
- FileNotFoundError: 訓練データが見つかりません
- メモリエラー: Out of Memory
これらのエラーを一つ一つ解説しながら、どのように対処していくかを見ていきましょう。
1. ModuleNotFoundError: No module named 'yolo'
このエラーは、Pythonがyolo
というモジュールを見つけられないときに発生します。YOLOのライブラリがインストールされていない場合や、仮想環境の設定が間違っている場合に多いです。
解決策
yolov5
のインストールを確認しましょう。以下のコマンドをターミナルで実行してください。
pip install yolov5
- インストールしたライブラリが正しくインポートできるかを確認します。
import yolov5
print("YOLOv5 module is successfully imported!")
このコードを実行して、「YOLOv5 module is successfully imported!」と表示されれば、インストールは成功です。
2. CUDAエラー: CUDAドライバが見つかりません
YOLOは、GPUを使って高速に画像を処理するため、CUDAというNVIDIA製のライブラリを利用します。ですが、CUDAが正しくインストールされていないと、次のようなエラーが出ることがあります。
解決策
NVIDIAのGPUドライバとCUDAが正しくインストールされているか確認します。CUDAがインストールされていない場合、以下の公式サイトからダウンロードしてインストールしてください。
CUDAのバージョンを確認し、対応するPyTorchをインストールします。たとえば、CUDA 11.7を使用している場合は以下のコマンドを実行します。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
- CUDAが認識されているか確認するために、以下のコードを実行します。
import torch
print(torch.cuda.is_available())
これがTrue
と表示されれば、CUDAが認識されています。
3. FileNotFoundError: 訓練データが見つかりません
YOLOで学習を行う際に、指定したデータセットのパスが間違っているとこのエラーが発生します。YOLOは、学習用のデータを正しいディレクトリに配置し、設定ファイルでそのパスを指定する必要があります。
解決策
- 訓練用の画像データとアノテーションファイルが正しいディレクトリに配置されているか確認します。通常、以下のような構成になります。
├── dataset
├── images
├── train
├── val
├── labels
├── train
├── val
- 設定ファイル
data.yaml
で正しいパスを指定しているか確認します。
train: /path/to/dataset/images/train
val: /path/to/dataset/images/val
- 正しいパスを指定したら、以下のコマンドで学習を再開します。
python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
4. メモリエラー: Out of Memory
GPUのメモリが不足している場合、YOLOは学習中にメモリエラーを出します。このエラーは、特に高解像度の画像や大きなバッチサイズを扱うときに発生しやすいです。
解決策
- 画像サイズを縮小して学習します。例えば、640から512に変更するなど、以下のように設定します。
python train.py --img 512 --batch 8 --epochs 50 --data data.yaml --weights yolov5s.pt
バッチサイズを小さくして、GPUにかかる負荷を減らします。
--batch
オプションを8や4など、GPUのメモリに合わせて調整します。それでも解決しない場合、GPUを搭載していないPCであれば、CPUモードで実行することもできます。
python train.py --device cpu --img 512 --batch 4 --epochs 50 --data data.yaml --weights yolov5s.pt
サンプルコードの実行結果
例えば、上記の手順でエラーを解消した後、以下のコードでYOLOv5を使用して学習を行うと、学習が正常に開始されます。
python train.py --img 512 --batch 8 --epochs 50 --data data.yaml --weights yolov5s.pt
実行結果
Epoch 1/50 0/49 loss: 0.234 accuracy: 0.85 val_loss: 0.120 val_accuracy: 0.88 1/49 loss: 0.210 accuracy: 0.87 val_loss: 0.115 val_accuracy: 0.89 ... Training complete. Best model saved to runs/train/exp/weights/best.pt
これで、学習が正常に行えるようになりました!もし同じようなエラーで悩んでいた方がいたら、ぜひこの手順を試してみてくださいね。
次回のテーマ
次回は「YOLOv5での物体検出を実際に使ってみよう!リアルタイム検出の手順」をお届けします。ぜひお楽しみに!またね!