AIと電子工作系ブログ

趣味でやっている電子工作とtennsorflow等を使った何かを書いていきます。

yolov8をGPUで動作させる方法

ここではyolov5をgeforceGPUで動作させる方法について記述します。

この記事ではyolov8のCPU導入がされている前提でやり方を書かせていただきます。
www.soiyasoiya.com


・環境
OS :windows10
CPU :Ryzen5 3600
GPUGeforce GTX 3060Ti

導入バージョンは以下の通りです
・yolov8(ultralytics)
・pyhon 3.8.16
・pytorch 2.0.1
・cuda 11.8
・cudnn 8.9.0.131


GeForceGPUで動作させるには、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アプリケーションを作成してください。

Visual Studio2019 Pythonアプリケーション作成

Pythonアプリケーションを作成した後にultralytics-main\ultralytics\cfg\datasetsのフォルダの中にあるcoco128.yamlをコピーしてVisual Studio2019で作成したPythonアプリケーションフォルダの中にcoco128.yamlを入れてください。

coco128.yaml
Visual Studio2019 Pythonアプリケーションフォルダ

次に下記のように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コード

コードを実行すると作成したPythonアプリケーションフォルダの下にdatasetsとrunsフォルダが作成されdatasetsの中にはcoco128.yaml用に学習するためのデータが保存され、runsファイルの中には学習結果が保存されています。

datasetsとrunsフォルダ

runsフォルダの中は下画像のように学習過程が示された画像等が保存されています。weightsフォルダは学習後のptファイルが生成されます。

runsフォルダ

GPU版が導入されていればそれなりの速度で学習が進み、RTX 3060Tiだと1epochあたり2~3秒くらいで終わります。