はじめに
PyTorch1.4で動作するYOLOv3の実装を、Ultralytics LLCという会社が公開しているので試してみた。
備忘録的に書きなぐっているので、内容が雑なのはご容赦。
環境
- OS: Ubuntu18.04
- GPU: GeForce GTX 1070
pytorchの動作確認までの手順
-
Ubuntu18.04をインストールする。
-
パッケージを最新化する。
$sudo apt update $sudo apt upgrade
-
CUDA Toolkit 10.1 update2 Archiveのインストール
-
以下のコマンドを実行する。
-
$wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
$sudo apt-get update
$sudo apt-get install cuda-10-1
* cuda公式サイトのコマンドのままだと最新のバージョン(10.2)がインストールされるので注意。
この記事投稿時はpytorchは10.2に未対応。
apt-get install cuda-10-1 のようにバージョンを明示する必要がある。
また、aptではなく、apt-getを使っている。apt upgradeしたときに問題起こるかも。
* インストール中に、secure bootのパスワード登録が求められる。適当に登録した。よくわからなかった。
1. ".bashrc"に以下を追記する。
```
$gedit ~/.bashrc
---
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
- anacondaのインストール
- インストーラをダウンロードする。
https://www.anaconda.com/distribution/#download-section
から、以下を選択する。
Python 3.7 version
64-Bit (x86) Installer (522 MB)
-
インストーラを実行する。
$bash Anaconda3-2020.02-Linux-x86_64.sh
-
pytorch環境構築
-
適当にconda環境を切る。
-
$conda create -n pytorch1_4 python=3.7
$conda activate pytorch1_4
1. pytorchをインストールする。
```$conda install pytorch torchvision cudatoolkit=10.1 -c pytorch```
1. pytorch動作確認
以下のパイソンコードを実行する。
```python:
from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
print(torch.cuda.is_available())
''' 出力
tensor([[0.1166, 0.4387, 0.5680],
[0.2340, 0.6470, 0.9463],
[0.2673, 0.2899, 0.2766],
[0.1243, 0.6881, 0.5566],
[0.3168, 0.7495, 0.0149]])
True
'''
yolov3を動かす
-
ここのリポジトリをクローンする。
-
同ページの Pretrained Weights のリンク先から、拡張子がptのものをダウンロードして、yolov3/weights/に置く。
今回は、yolov3-tiny.ptを落とした。 -
サンプル実行する。
$cd yolov3
$python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.pt --source ./data/samples/zidane.jp
何個かモジュールが無いぞと怒られるので、適宜インストールする。
動いたらyolov3/outputに結果が出力される。
# 学習とアノテーション
### 学習手順
1. tensorboardをインストールする。( ```pip install tensorboard ``` )
2. **Pretrained Weights** のリンク先からyolov3-spp-ultralytics.ptをダウンロードしてweightsディレクトリに置く。
3. **Tutorials** の[Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)の手順を実行する。(手順5、6は必要であれば実施)。
### アノテーション
###### labelImgインストール
1. [ここ](https://github.com/tzutalin/labelImg)のリポジトリをクローンする。をクローンする。
2. 同ページの **Python 3 + Qt5 (Recommended)** のコマンドを実行する。
```terminal:
例:
$sudo apt-get update
$sudo apt-get install pyqt5-dev-tools
$cd labelImg
$pip install -r requirements/requirements-linux-python3.txt
$make qt5py3
$python labelImg.py
- 使い方(Yoloフォーマットでの出力時の注意事項が丁寧)
https://demura.net/deeplearning/14350.html
余談
最初は、ここの実装を試そうとしたが、推奨PyTorchのバージョンが古い(0.4)のでメンテされてない可能性があるのと、重みファイルのダウンロードに2度ほど失敗したのであきらめた。