YOLOv4環境構築①

次回
[YOLOv4環境構築②](https://qiita.com/kzsDev/items/85d117195f44a86dd8fe)

参考
https://youtu.be/5pYh1rFnNZs

# システム
Windows10
GeForce GTX 960


# pythonのインストール
[python 3.7.7](https://www.python.org/downloads/windows/)をインストール
**```Add Python 3.7 to PATH```にチェックを入れる**
## numpyのインストール
コマンドプロンプトから

```
$ pip install numpy
```

### ついでにpipの更新

```
$ python -m pip install --upgrade pip
```


# Visual Studio Codeのインストール
[Visual Studio Code](https://code.visualstudio.com/download)をGitのデフォルトエディタにしたいので先にインストールする。バージョンは1.45.1
他に使ってるエディタがある人は不要

# Gitのインストール
[Git 2.26.2](https://git-scm.com/)をインストール
デフォルトのエディタを選択する画面があるので、VSCodeを選択する（デフォルトはVim）
あとはそのまま進めてOK

# CMakeのインストール
[CMake 3.17.2](https://cmake.org/download/)をインストール

# Visual Studioのインストール
[Visual Studio 16.5 コミュニティ](https://visualstudio.microsoft.com/ja/downloads/)をインストール

**python**と**デスクトップ開発**にチェックを入れてインストール
![vs_install.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17879/ca22b7f4-4553-7dc3-6e11-d74bc5755b3b.jpeg)

再起動を求められるので**PCを再起動する**

# GPUドライバの更新
[NVIDIA公式](https://www.nvidia.co.jp/Download/Scan.aspx?lang=jp)から自分の環境にドライバをダウンロードしてインストール
※他ブランドのグラフィックボードは対応していない
GTX960 445.87に更新
終わったら**PCを再起動**

# CUDAのインストール
[nvidia cuda toolkit](https://developer.nvidia.com/cuda-toolkit)を検索してダウンロード
バージョン10.2
![cuda_dl.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17879/99a2c07a-c3b9-66b1-206f-0bb524b97fdf.jpeg)

インストール先をCドライブ直下に変更
![cuda_dir.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17879/65a5141b-3022-60d7-699e-84e8e7897bba.jpeg)

あとはそのまま進める

# NVIDIA cuDNNのダウンロード
https://developer.nvidia.com/cudnn
![cudnn.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17879/8269c66b-1e30-2e59-71a5-edcdf5c7263e.jpeg)

アカウントを新規作成して**cuDNN v7.6.5**をダウンロード
![cudnn_dl.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17879/c3a516a3-e769-3237-5b3d-66b842a51578.jpeg)

ダウンロードした**zipファイルをCドライブ直下へ移動して解凍**すると```cuda```フォルダが作成される

## 解凍したcuDNN関連ファイルをCUDA配下に置く
```C:\cuda\bin```にある**cudnn64_7.dll** をコピーして
```C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin```にペーストする

同様に
```C:\cuda\include```にある**cudnn.h** をコピーして
```C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include```にペーストする

```C:\cuda\lib\x64```にある**cudnn.lib** をコピーして
```C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64```にペーストする

# OpenCVのインストール
**※OpenCV 4.3.0既知のバグについて
Video関連でバグがある模様（2020/06/02現在）
```VideoWriter()```がうまく動作しないようなので、[参考動画](https://youtu.be/5pYh1rFnNZs)とバージョンをあわせてOpenCV 4.1.0を使用するのが無難かもしれない（動作未確認）**

参考
https://software.intel.com/en-us/forums/intel-distribution-of-openvino-toolkit/topic/849044


```
[ERROR:0] global C:\opencv\opencv\modules\videoio\src\cap.cpp (563) cv::VideoWriter::open VIDEOIO(CV_IMAGES): raised OpenCV exception:

OpenCV(4.3.0-dev) C:\opencv\opencv\modules\videoio\src\cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES: can't find starting number (in the name of file): ./Demo/output.avi in function 'cv::icvExtractPattern'
```

## GitHubからopencvおよびopencv_contribをクローン
**※下記は開発版_OpenCV(4.3.0-dev)_を使用する方法**
Cドライブ直下に```opencv```ディレクトリを作成し移動する

```
git clone https://github.com/opencv/opencv
git clone https://github.com/opencv/opencv_contrib
```
同ディレクトリに```build```ディレクトリを作成する

![opencv_build.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/c7fddfac-f7d5-bc06-f32e-7125eb16ca81.jpeg)



# CMakeの設定とビルド
CMakeを起動し、ソースコードとビルド先をそれぞれ```C:/opencv/opencv```と```C:/opencv/build```に設定する
![cmake.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/de0bddd6-0afe-5342-9526-7fc0c0d80f64.jpeg)


**Configure**ポタンを押してgeneratorとplatformを```Visual Studio 16 2019```と```x64```に設定
![cmakeconfig.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/43987403-e498-12a2-9a15-0d28df1b65fa.jpeg)

リストの```BUILD_opencv_world```にチェックを入れる

![build_cvworld.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/a9f0d836-4810-8864-c255-a51d755c2826.jpeg)

エラーが無いことを確認し**Generate**を押す

# OpenCVをVisual Studioでビルド
buildフォルダ```C:\opencv\build```の**ALL_BUILD.vcxproj**を開いてVisual Studioを起動する

Releaseモードに変更し、```ALL_BUILD```と```INSTALL```をそれぞれ右クリックメニューからビルドする
![vsbuild.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644808/59dda162-71a7-beb2-42bd-3589da413636.jpeg)

## コマンドプロンプトで動作確認
コマンドプロンプトでpythonインタプリタを起動し、openCVが動作することを確認する

```
$ python
>>> import cv2
>>> cv2.__version__
'4.3.0-dev'
```


# 次回に続く

[YOLOv4環境構築②](https://qiita.com/kzsDev/items/85d117195f44a86dd8fe)