うちのPCは Intel(R) Core(TM) i5-6600 CPU @ 3.30GHz 3.30 GHz ……第6世代のCorei5という古いマシンなのですが、GeForce RTX 2060というグラフィックボードが搭載されています。
ゲームしているわけじゃないんですが、1年位前に税込みで4万円を切る価格で販売されていてなんとなく装着したのです。2021年6月5日現在6万円後半の値付けになっていて驚きなんですが。
で、GPU機能を使ったyolov5を動かしてみたわけです。
結論から言うと、ちゃんと動作しています。
レシピを残しておきましょう。
環境:
OS:Windows10(バージョン21H1)
GPU:GeForce RTX 2060
CUDA:11.3.109
miniconda利用
0.GeForceのドライバーのインストール
これはさすがにインストール済みだと思うが、念のためにここからダウンロードしてインストールすることが可能。
https://www.nvidia.com/Download/index.aspx?lang=en-us
1.Visual Studioをインストールする
https://visualstudio.microsoft.com/ja/downloads/
からCommunityバージョンをダウンロード・インストールする。
僕が使用したのは、Visual Studio 2019でした。
途中でワークロードについて問われるので、「C++によるデスクトップ開発」を選択しておく必要があります。
2.CUDA Toolkitをインストールする
https://developer.nvidia.com/cuda-toolkit-archive
ここから、CUDA Toolkitをダウンロードしてきます。
今回はCUDA Toolkit 11.3.1(May2021)をインストールします。
Pathが通っているか確認するため、スタートキーの設定ボタンから→システム→詳細情報→システムの詳細設定→環境設定へ移動
ユーザー環境変数Pathのところで
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\libnvvp
が存在しているか確認(バージョンが変われば上記の記述は変わってゆくことでしょう。また、何らかの理由でCUDAのイントールドライブ、フォルダが異なれば変わってゆくことでしょう)。
システム環境変数で、
変数名:CUDA_PATH
変数値:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
変数名:CUDA_PATH_V11_3
変数値:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
になっていれば、まずはOK。
PCをリブートしてPathの設定を有効にします。
PCのリブートが終わったらコマンドプロンプトでも、PowerShellでもどちらでもよいので立ち上げて動作テストをします。
> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0
と表示されればCUDAのインストールは成功しています。
3.cuDNNをインストール
ダウンロードするにあたってnvidiaにアカウントを作る必要があります(無料)。
https://developer.nvidia.com/cuDNN
このページの「Download cuDNN」ボタンをクリックし、ログインページを進んでゆきます。
「Download cuDNN v8.2.0 (April 23rd, 2021), for CUDA 11.x」を選択。
cuDNN Library for Windows(x86)を選択し、ダウンロードしてきます。
ローカルでzipファイルを展開します。
展開したフォルダにcudaがありますからそこに入ると、
bin
include
lib
の3つのフォルダをコピーし、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
で上書き貼り付け(要は貼り付け)します。
先ほどのCUDAでPathを通したように、環境変数のところへ行き、システム環境設定に新規で下記情報を書き込みます。
変数名:CUDNN_PATH
変数値:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3
PCをリブートしてシステム環境設定を有効にします。
PCのリブートが終わったらコマンドプロンプトを立ち上げて動作テストをします。
a>where cudnn64_8.dll
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin\cudnn64_8.dll
と表示されれば、cuDNNのインストールは成功です。
4.Minicondaをインストール
ノーマルにPythonをインストールして構築する方法もあるのですが、個人的にM1 Mac miniでMinicondaを動かしている関係で、Minicondaベースで構築します。
https://docs.conda.io/en/latest/miniconda.html
からPython 3.9をバージョンであるMiniconda3 Windows64-bitをダウンロード・インストールします。(僕は個人的事情でDドライブにインストールしました)
途中でPathを環境変数に登録するか尋ねられますが、僕はチェックを入れてインストーラーに登録してもらいました。
インストールが終わったらPCをリブートします。
スタートメニューにAnaconda Powershell Prompt(miniconda3)と、Anaconda Prompt(miniconda3)の二つがいると思います。僕はPowershellバージョンを使用しています。
> conda -V
conda 4.9.2
> python --version
Python 3.9.1
と表示されれば問題なしと思います。
Anaconda本体をアップデートしておきましょう。
> conda update -n base conda
僕の環境ではcondaのバージョンがconda 4.10.1にアップデートされました。
Anacondaのすべてのパッケージをアップデートしておきます。
> conda update --all
僕の環境ではPythonのバージョンがPython 3.9.5になっていました。
進化が速いですね。。。
5.gitをインストール
インストール済みの人はスキップしてください。
未インストールの人は下記を参考にインストールします。
https://www.curict.com/item/60/60bfe0e.html
6.Minicondaで仮想環境を作る
下記を入力します。環境名の部分はお好きな文字で。
> conda create -n 環境名 python
僕はべたにyolov5としたので下記のようになりました。
> conda create -n yolov5 python
仮想環境で作業するときは、Anaconda Powershell Promptを立ち上げて、
> conda activate 環境名
を入力することで仮想環境に入って行けます。
★以降は仮想環境に入った状態であることが前提で進みます。
7.YOLOv5のダウンロードとインストール
下記コマンドを入力すると、Windpwsユーザーフォルダ内にyolov5というフォルダが作られます。
> git clone https://github.com/ultralytics/yolov5.git
作られたyolov5のフォルダに移動します。
下記コマンドを実行します。
>pip install -U -r requirements.txt
インストール作業が進んで行きます(トラブルのないインストールは見てて楽しい)。
Collecting matplotlib>=3.2.2
Using cached matplotlib-3.4.2-cp39-cp39-win_amd64.whl (7.1 MB)
Collecting numpy>=1.18.5
Using cached numpy-1.20.3-cp39-cp39-win_amd64.whl (13.7 MB)
Collecting opencv-python>=4.1.2
Using cached opencv_python-4.5.2.52-cp39-cp39-win_amd64.whl (34.7 MB)
Collecting Pillow
Using cached Pillow-8.2.0-cp39-cp39-win_amd64.whl (2.2 MB)
Collecting PyYAML>=5.3.1
Using cached PyYAML-5.4.1-cp39-cp39-win_amd64.whl (213 kB)
Collecting scipy>=1.4.1
Using cached scipy-1.6.3-cp39-cp39-win_amd64.whl (32.7 MB)
Collecting torch>=1.7.0
Using cached torch-1.8.1-cp39-cp39-win_amd64.whl (190.5 MB)
Collecting torchvision>=0.8.1
Using cached torchvision-0.9.1-cp39-cp39-win_amd64.whl (852 kB)
Collecting tqdm>=4.41.0
Using cached tqdm-4.61.0-py2.py3-none-any.whl (75 kB)
Collecting tensorboard>=2.4.1
Using cached tensorboard-2.5.0-py3-none-any.whl (6.0 MB)
Collecting seaborn>=0.11.0
Using cached seaborn-0.11.1-py3-none-any.whl (285 kB)
Collecting pandas
Using cached pandas-1.2.4-cp39-cp39-win_amd64.whl (9.3 MB)
Collecting pycocotools>=2.0
Using cached pycocotools-2.0.2-cp39-cp39-win_amd64.whl
Collecting thop
Using cached thop-0.0.31.post2005241907-py3-none-any.whl (8.7 kB)
Collecting cycler>=0.10
Using cached cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Collecting pyparsing>=2.2.1
Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting kiwisolver>=1.0.1
Using cached kiwisolver-1.3.1-cp39-cp39-win_amd64.whl (51 kB)
Collecting python-dateutil>=2.7
Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting typing-extensions
Using cached typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)
Collecting tensorboard-data-server<0.7.0,>=0.6.0
Using cached tensorboard_data_server-0.6.1-py3-none-any.whl (2.4 kB)
Collecting grpcio>=1.24.3
Using cached grpcio-1.38.0-cp39-cp39-win_amd64.whl (3.2 MB)
Collecting tensorboard-plugin-wit>=1.6.0
Using cached tensorboard_plugin_wit-1.8.0-py3-none-any.whl (781 kB)
Requirement already satisfied: wheel>=0.26 in d:\miniconda3\envs\yolov5\lib\site-packages (from tensorboard>=2.4.1->-r requirements.txt (line 15)) (0.36.2)
Collecting werkzeug>=0.11.15
Using cached Werkzeug-2.0.1-py3-none-any.whl (288 kB)
Collecting markdown>=2.6.8
Using cached Markdown-3.3.4-py3-none-any.whl (97 kB)
Collecting protobuf>=3.6.0
Downloading protobuf-3.17.2-py2.py3-none-any.whl (173 kB)
|████████████████████████████████| 173 kB 6.8 MB/s
Collecting absl-py>=0.4
Using cached absl_py-0.12.0-py3-none-any.whl (129 kB)
Collecting google-auth<2,>=1.6.3
Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB)
Collecting requests<3,>=2.21.0
Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting google-auth-oauthlib<0.5,>=0.4.1
Using cached google_auth_oauthlib-0.4.4-py2.py3-none-any.whl (18 kB)
Requirement already satisfied: setuptools>=41.0.0 in d:\miniconda3\envs\yolov5\lib\site-packages (from tensorboard>=2.4.1->-r requirements.txt (line 15)) (52.0.0.post20210125)
Collecting pytz>=2017.3
Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB)
Collecting cython>=0.27.3
Using cached Cython-0.29.23-cp39-cp39-win_amd64.whl (1.7 MB)
Collecting six
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting rsa<5,>=3.1.4
Using cached rsa-4.7.2-py3-none-any.whl (34 kB)
Collecting cachetools<5.0,>=2.0.0
Using cached cachetools-4.2.2-py3-none-any.whl (11 kB)
Collecting pyasn1-modules>=0.2.1
Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting requests-oauthlib>=0.7.0
Using cached requests_oauthlib-1.3.0-py2.py3-none-any.whl (23 kB)
Collecting pyasn1<0.5.0,>=0.4.6
Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting chardet<5,>=3.0.2
Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB)
Collecting idna<3,>=2.5
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Requirement already satisfied: certifi>=2017.4.17 in d:\miniconda3\envs\yolov5\lib\site-packages (from requests<3,>=2.21.0->tensorboard>=2.4.1->-r requirements.txt (line 15)) (2021.5.30)
Collecting oauthlib>=3.0.0
Downloading oauthlib-3.1.1-py2.py3-none-any.whl (146 kB)
|████████████████████████████████| 146 kB 6.4 MB/s
Installing collected packages: urllib3, pyasn1, idna, chardet, six, rsa, requests, pyasn1-modules, oauthlib, cachetools, typing-extensions, requests-oauthlib, pytz, python-dateutil, pyparsing, Pillow, numpy, kiwisolver, google-auth, cycler, werkzeug, torch, tensorboard-plugin-wit, tensorboard-data-server, scipy, protobuf, pandas, matplotlib, markdown, grpcio, google-auth-oauthlib, cython, absl-py, tqdm, torchvision, thop, tensorboard, seaborn, PyYAML, pycocotools, opencv-python
Successfully installed Pillow-8.2.0 PyYAML-5.4.1 absl-py-0.12.0 cachetools-4.2.2 chardet-4.0.0 cycler-0.10.0 cython-0.29.23 google-auth-1.30.1 google-auth-oauthlib-0.4.4 grpcio-1.38.0 idna-2.10 kiwisolver-1.3.1 markdown-3.3.4 matplotlib-3.4.2 numpy-1.20.3 oauthlib-3.1.1 opencv-python-4.5.2.52 pandas-1.2.4 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pycocotools-2.0.2 pyparsing-2.4.7 python-dateutil-2.8.1 pytz-2021.1 requests-2.25.1 requests-oauthlib-1.3.0 rsa-4.7.2 scipy-1.6.3 seaborn-0.11.1 six-1.16.0 tensorboard-2.5.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.0 thop-0.0.31.post2005241907 torch-1.8.1 torchvision-0.9.1 tqdm-4.61.0 typing-extensions-3.10.0.0 urllib3-1.26.5 werkzeug-2.0.1
インストールが終わったら動作確認をしてみます。
yolov5ではおなじみのヤツです。