ここではyolov5をgeforceのGPUで動作させる方法について記述します。
この記事ではyolov8のCPU導入がされている前提でやり方を書かせていただきます。
www.soiyasoiya.com
・環境
OS :windows10
CPU :Ryzen5 3600
GPU :Geforce GTX 3060Ti
導入バージョンは以下の通りです
・yolov8(ultralytics)
・pyhon 3.8.16
・pytorch 2.0.1
・cuda 11.8
・cudnn 8.9.0.131
GeForceのGPUで動作させるには、CUDAとcuDNNという物のインストールとCUDAを動かすためのコンパイラを入手するためVisual Studioが必要になります。
Visual Studio2019 は以下サイトから入手できます。Visual Studio2022では動作しない可能性があるので2019を入れてください。
docs.microsoft.com
下記サイトから「CUDA Toolkit 11.8.0」を選択してダウンロードしてください。
developer.nvidia.com
CUDAのインストールが完了したら、cuDNNをダウンロードします。
cuDNNの入手にはアカウントが必要となるので持っていない方は作成してください。
「Download cuDNN v8.9.0 (April 11th, 2023), for CUDA 11.x」を以下サイトから選択してダウンロードしてください。
developer.nvidia.com
CuDNNはダウンロードしたら解凍します。解凍したフォルダにある以下のデータがあると思います。
解凍したCuDNNデータ(bin,include,libファイル)をCUDA\v11.8.に入れます。
CUDAをインストールしたときのパスを何も変更していなければ
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
にCUDAのデータがあるはずです。移すときにデータは上書きしてください。
下の画像部分に入れます。
パスを通しておくため環境変数に「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8」を登録しておいてください。
CUDAの保存場所を変えてる場合はそれに合わせてパスを変えてください。
環境変数の編集で新規、編集、削除がグレーアウトして選択できないときは以下を参考にしてください。→https://soiyasoiya58.hatenablog.com/entry/2022/03/21/142042
環境変数に登録した後は再起動してください。
再起動した後にCUDAが入っているかを確認するため、コマンドプロントを立ち上げてください。
nvcc -Vと入力し、導入しているバージョンが表示されているか確認してください。
下の画像のようにCuda compilation tools, release 11.8, V11.8.89と表示されていればCUDAが無事に入っています。
次にAnacondaを立ち上げ、今回も新しく環境を追加してください。
pyhonのバージョンは3.8.16を選択してください。
Anacondaでターミナル画面を立ち上げ、yolov8(ultralytics)をインストールしてtorchを一度アンインストール必要があるため下記を順番に入力してください。
pip install ultralytics pip uninstall torch torchvision pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
次にGPUが正常に動作するか確認するため下記画像のように
yolo detect predict model=yolov8s.pt source="https://ultralytics.com/images/bus.jpg"
と入力して動作を確認します。(CPU動作での動作確認と同じことをします)
GPUが正しく動いていれば画像の赤線で引いているところのように「Python-3.8.18 torch-2.1.0+cu118 CUDA:0 (NVIDIA GeForce RTX 3060 Ti, 8191MiB)」と使用しているグラフィックボードの名前が表示されます。
さらにテストデータで学習を行い、動作を確認します。(一応上記の部分まででGPUの導入を確認するのが済んでいますが、GPUの速度を確認するために用意されたデータでの学習を記載しておきます)
Visual Studio2019を起動してPythonアプリケーションを作成してください。
Pythonアプリケーションを作成した後にultralytics-main\ultralytics\cfg\datasetsのフォルダの中にあるcoco128.yamlをコピーしてVisual Studio2019で作成したPythonアプリケーションフォルダの中にcoco128.yamlを入れてください。
次に下記のようにPythonコードを入力します。
from ultralytics import YOLO model = YOLO("yolov8s.pt") if __name__ == '__main__': model.train(data="coco128.yaml", imgsz=640, epochs=100, batch=8, workers=4, degrees=90.0)
コードを実行すると作成したPythonアプリケーションフォルダの下にdatasetsとrunsフォルダが作成されdatasetsの中にはcoco128.yaml用に学習するためのデータが保存され、runsファイルの中には学習結果が保存されています。
runsフォルダの中は下画像のように学習過程が示された画像等が保存されています。weightsフォルダは学習後のptファイルが生成されます。
GPU版が導入されていればそれなりの速度で学習が進み、RTX 3060Tiだと1epochあたり2~3秒くらいで終わります。