6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

YOLOv5 環境構築でつまったところ まとめ

Last updated at Posted at 2022-03-18

はじめに

Deep Learning 初心者が、 YOLOv5 の環境構築をしていてつまったポイントと、その解決方法をまとめました。

YOLOv5 とは

物体の位置と種類を検出する機械学習アルゴリズムです。

既に学習済みのモデルを使って物体検出したり、一からモデルに学習させたりすることができます。

GitHubで公開されています。

環境構築でつまったところ

今回は少し古めのバージョン4.0で環境を構築しました(最新はバージョン6.1)。

当方のPC環境は Windows10 で、 RTX3080 Ti を積んでいます。

Linuxな環境(WSL等)は使わずに、コマンドプロンプトのみで構築しました。

pip install -U -r requirements.txt 実行時に ERROR: Could not build wheels for pycocotools, which is required to install pyproject.toml-based projects と言われる

pipコマンドを使ってインストールする際、途中でC/C++でのコンパイルが必要になります。

しかし、利用中のWindows環境には必要なバージョンのコンパイラがないので、このエラーが出ています。

ダウンロードページから Microsoft Visual C++ vs_buildtools をインストールし、pip install -U -r requirements.txtを再実行することで解決しました。

detect.py 実行時に AttributeError: Can't get attribute 'SPPF' on <module 'models.common' from '~\\yolov5\\models\\common.py'> と言われる

detect.py の初回実行時に、検出に使用する学習済みモデル(.pt)を指定しなかった場合、その時点での最新の学習済みモデルがダウンロードされ使用されます。

その際、今回構築した v4.0 の環境と v6.1 の最新のモデルで、何かしらの整合性が取れていないのだと思われます。

v4.0 のリリースノートから v4.0 時点の学習済みモデルをダウンロードして、差し替えることで解決しました。

train.py 実行時にUnicodeDecodeError: 'cp932' codec can't decode byte 0x99 in position 78: illegal multibyte sequenceと言われる

Windows は str型(UTF-8)を byte型(cp932)に勝手に変換しようとしますが、何らかの理由で変換できないため UnicodeDecodeError が発生しています。

私の場合は、現在使用している Python のデフォルトエンコーディングを UTF-8 にしたら解決しました。

参考: Windows 上の Python で UTF-8 をデフォルトにする

学習や物体検出がGPU動作ではなくCPU動作になってしまう

  • YOLOv5のプログラムが GPU or CPU のどちらで動作しているか
  • 使用している pytorch のバージョン

は、detect.py や train.py を実行した時のログで確認できます ↓
ここにGPUの名前が出てこない場合は、使用する GPU と pytorch、Driver、CUDA、CuDNN のバージョンを合わせる必要があります。

yolov5>python train.py --data data.yaml --cfg yolov5m.yaml --weights '' --epochs 100
Using torch 1.10.2+cu113 CUDA:0 (NVIDIA GeForce RTX 3080 Ti, 12287.5MB)

 

以下を参考に、バージョンが合ってないものをインストールし直します。
Pytorch – GPU と対応するドライバ、CUDA、CuDNN のバージョン

バージョンを合わせたら、CUDA と CuDNN の PATHが通っていることを確認します。
キャプチャ.PNG
システム環境変数がこんな感じになっていたらOKです。

train.py 実行時に OSError: [WinError 1455] ページング ファイルが小さすぎるため、この操作を完了できません。 と言われる

仮想メモリサイズを増やしたら解決しました。
参考: 仮想メモリのサイズを変更する方法 | ドスパラ サポートFAQ よくあるご質問|お客様の「困った」や「知りたい」にお応えします。

仮想メモリが大きければ学習のスピードは上がりますが、その分ストレージを圧迫するのでバランスを考える必要があります。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?