YOLOのオリジナルデータ学習手順 #1 環境設定

**Chapters**

📘 **Chapter #0**　[YOLOとは](https://qiita.com/tfukumori/items/65056a4d51b531cdd45c)
📘 **Chapter #1**　[環境設定](https://qiita.com/tfukumori/items/6f33af8f9dc2ac974f43)
📘 **Chapter #2**　[アノテーション](https://qiita.com/tfukumori/items/0911c8fe1f5319530d4b)
📘 **Chapter #3**
　📗 **Chapter #3-1**　[YOLOv3 Keras版実装](https://qiita.com/tfukumori/items/d1f79078803d8a7fe103)
　📗 **Chapter #3-2**　[YOLOv3 Darknet版](https://qiita.com/tfukumori/items/15edd532e0a04c0a4672)
📘 **Chapter #A**
　📗 **Chapter #A-1**　[YOLOの各バージョンについてまとめ](https://qiita.com/tfukumori/items/519d84bf3feb8d246924)
　📗 **Chapter #A-2**　[YOLOv3 Keras版実装に関して関連記事のまとめ](https://qiita.com/tfukumori/items/9e62c4a7acd7ea6ddd3b)
　📗 **Chapter #A-3**　[ONNX変換・確認ライブラリ、アプリケーションまとめ](https://qiita.com/tfukumori/items/3f438294e722bc29fe16)

---

# TL;DR

- ここでは、YOLOでオリジナルデータを学習させる際のソフトウェアインストール、環境設定手順について記載します。

# ソフトウェアについて

|ソフトウェア|目的|
|:--|:--|
|IrfanView|アノテーション作業前の、不要なファイルの整理、画像確認の際に使用する|
|Vott|アノテーション作業|
|Winget|Gitなどのインストール|
|Anaconda/Miniconda|アノテーション時のリサイズ、YOLOv3 Keras実装・YOLOv5の学習と推論|
|Visual Studio Code|Pythonのコードをデバッグする|
|Git|関連ソースの取得|

# 1. ソフトウェアインストール手順

## 1.1. IrfanView

[IrfanView](https://forest.watch.impress.co.jp/library/software/irfanview/)をインストールする。

右クリックにIrfanViewで開くを追加しておくと作業が効率的となります（必要に応じてレジストリのバックアップをお勧めします）。

以下のファイルをShift-JISで作成し実行します。

```:右クリックにOpenWithIrfanViewを追加.reg
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\IrfanView]
@="Open with IrfanView"
"Icon"=hex(2):43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,20,\
  00,46,00,69,00,6c,00,65,00,73,00,5c,00,49,00,72,00,66,00,61,00,6e,00,56,00,\
  69,00,65,00,77,00,5c,00,69,00,5f,00,76,00,69,00,65,00,77,00,36,00,34,00,2e,\
  00,65,00,78,00,65,00,00,00

[HKEY_CLASSES_ROOT\*\shell\IrfanView\command]
@="\"C:\\Program Files\\IrfanView\\i_view64.exe\" \"%1\""
```

不要なファイル整理時の作業が楽になるように設定を変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204150/fe4ae929-060b-f084-68de-41a02a05df4c.png)

## 1.2 Vott


[GitHub](https://github.com/microsoft/VoTT/releases/)からインストールします。

## 1.3. winget

wingetを[公式サイト](https://github.com/microsoft/winget-cli/releases)よりインストールします。

## 1.4. Anaconda

[インストーラーを使用してインストール](https://www.anaconda.com/products/individual)

`winget install -e --id Anaconda.Anaconda3`でも構いませんが、ユーザーインストールではなく、PC全体へのインストールとなります。

💡 商用利用の場合には、[MiniConda](https://docs.conda.io/en/latest/miniconda.html)を使用する。[環境構築の手順](https://qiita.com/dddmm/items/f91adea7901052efdf6a)

## 1.5. Visual Studio Code

[公式サイト](https://code.visualstudio.com/download)より、User Installer版をインストールします。

`winget Install -e --id Microsoft.VisualStudioCode`でも構いませんが、オプションが指定できないので右クリックにCodeで開くが追加されません（後からインストーラー上書き指定することで追加は可能です）。

## 1.6. Git

Git for Windowsが入っていない場合にはインストールします。

以下の2つのコマンドを実行し、Gitのインストールと改行コードに関する設定を行います。

```posh
winget install -e --id Git.Git
```

💡 PATH環境変数にすぐには反映されないので、一度コマンドラインウインドウを閉じます。

```posh:改行コードを自動で書き換えないようにする
git config --global core.autocrlf input
```

参考：
https://qiita.com/uggds/items/00a1974ec4f115616580
https://qiita.com/chomado/items/9a86d3bca24dcd15a460

# 2. 環境設定手順

## 2.1. Anaconda

### 2.1.1. Condaのパスを追加

Condaが起動できるように、環境変数（ユーザーでよい）の`Path`に以下を追加します。

```
C:\Users\<ユーザー名>\Anaconda3
C:\Users\<ユーザー名>\Anaconda3\Scripts
```

[Conda Createコマンドなどのエラー対策](https://qiita.com/kizul/items/43a15a21346d121907c6)で、環境変数（ユーザーでよい）の`Path`に以下を追加します。

```
C:\Users\<ユーザー名>\Anaconda3\Library\bin
```

💡 MiniCondaの場合にはパス名が異なります。

## 2.2. PowerShell

VSCodeで使用するPowerShellで実行します。
※私の環境では、VSCodeで使用されるPowerShellの既定はWindows PowerShell（PowerShell（クロスプラットフォーム）ではない）でした。

### 2.2.1. 実行ポリシーを変更

実行ポリシーを確認し、`Restricted`の場合は`RemoteSigned`に変更します。

```posh:実行ポリシーの確認（管理者権限）
Get-ExecutionPolicy
```

```posh:実行ポリシーの変更（管理者権限）
Set-ExecutionPolicy RemoteSigned
```

### 2.2.2. Conda用にPowerShellを設定

PowerShellから`conda activate`できない問題への対処となります。[^1]

[^1]: [Anaconda がやっと PowerShell に公式対応した](https://qiita.com/yniji/items/668f805a72a6ced6a2bd)

```posh:conda用にPowerShellを設定
conda init powershell
```

initが見つからないというエラーが表示された場合には、conda自身が古いので表示されたメッセージに従ってconda自身の更新を行います。

また、Powershellの通常使用で仮想環境が自動activateされるのが気になる場合は[こちらのページ](https://code-graffiti.com/base-is-displayed-at-the-top-of-the-terminal-on-mac/)を参考に以下の設定を行います。

**通常のPowerShell起動時の仮想環境自動activateを抑止する設定**

```posh
conda config --set auto_activate_base False
```

**VSCodeのターミナル起動時の仮想環境自動activateを抑止する設定**

- VSCodeの設定で、"Activate Python Environment in Terminal created using the Extension."チェックボックスをOFFに設定する


## 2.3. Visual Studio Code

VSCodeからPythonのスクリプトをデバッグ・実行した際に作業フォルダが現在のフォルダとならない場合は、`launch.json`で`"cwd": "${fileDirname}"`と指定することで、ファイルがあるフォルダでデバッグ・実行されます。

```json:launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"
        }
    ]
}
```