この記事では、YOLOv5について解説しています。
本記事の内容
- YOLOv5とは?
- YOLOv5のシステム要件
- YOLOv5のインストール
- YOLOv5の動作確認
それでは、上記に沿って解説していきます。
YOLOv5とは?
YOLOv5は、COCOデータセットでトレーニングされた物体検出技術です。
技術とは、アーキテクチャとモデルを指しています。
YOLOvシリーズの最新版と言うことになります。
YOLOv5がリリースされたのは、2020年6月9日です。
YOLOvシリーズでは、処理速度・精度が最も高いとのことです。
そりゃ、そうですよね。
そうじゃないと、新たにバージョンアップする必要がありませんから。
また、それまでとは異なり、YOLOv5はDarknetを利用していません。
その代わりに、PyTorchで実装されています。
ここでPyTorchについて、少し触れておきます。
PyTorchは、機械学習のフレームワークで最も勢いがあります。
上の条件で調べた結果が、次のグラフです。
ここ1~2年の間に、PyTorchがTensorFlowを抜きました。
時代は、PyTorchになったのです。
この流れに、YOLOv5も乗ったと言えます。
以上、YOLOv5についての説明でした。
次は、YOLOv5のシステム要件を確認します。
YOLOv5のシステム要件
現時点(2021年8月)でのYOLOv5の最新バージョンは、5.0となります。
この最新バージョンは、2021年4月12日にリリースされています。
YOLOv5のシステム要件として、以下がポイントとなります。
- OS
- Python
- PyTorch
それぞれを下記で説明します。
OS
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
OSに関しては、Pythonが動けばどこでもOKのようです。
検証で利用しているOSは、Windows 10となります。
Python
サポート対象となるバージョンは、Python 3.6以降です。
ただし、Python 3.6はそのうちサポート対象外になるかもしれません。
以下は、Pythonの公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
これを見る限り、Python 3.6のサポート期限は2021年末までとなっています。
なお、Python 3.6からPython 3.9へのアップグレードは簡単です。
アップグレードの手順には、次の記事でまとめています。
検証では、以下のPythonを利用しています。
>python -V Python 3.9.6
PyTorch
PyTorch 1.7以降が、必須となります。
PytTorchのインストールに関しては、次の記事で説明しています。
検証では、以下のPyTorchをインストールしています。
>python -c "import torch; print(torch.__version__)" 1.9.0+cu111
まとめ
仮想環境の利用をおススメします。
requirements.txt
https://github.com/ultralytics/yolov5/blob/master/requirements.txt
上記を確認すると、多くのパッケージが記載されています。
インストールすると、さらに多くの依存パッケージがインストールされます。
よって、YOLOv5は仮想環境へのインストールをおススメします。
IDEにPyCharmを利用すれば、意識しなくても仮想環境の利用が可能です。
プロジェクト毎に仮想環境にすることができます。
また、以下のようにコマンドでも簡単に仮想環境を利用できます。
以上、YOLOv5のシステム要件に関しての説明でした。
次は、YOLOv5をインストールしていきます。
YOLOv5のインストール
まずは、現状のインストール済みパッケージを確認しておきます。
PyTorchをインストールしただけの状況です。
>pip list Package Version ----------------- ------------ numpy 1.21.1 Pillow 8.3.1 pip 21.2.3 setuptools 57.4.0 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 typing-extensions 3.10.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、YOLOv5のインストールです。
そのためには、まずはGitHubからソースをダウンロードします。
git clone https://github.com/ultralytics/yolov5
Windowsでgitコマンドを動かすためには、次の記事が参考になります。
gitコマンドを使えない場合、次のページからダウンロードしてもOKです。
https://github.com/ultralytics/yolov5
ダウンロード(解凍)した「yolov5」フォルダを確認します。
「requirements.txt」を利用して、インストールします。
「yolov5」フォルダに移動してから、次のコマンドを実行。
pip install -r requirements.txt
インストールには、しばらく時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ----------------------- --------------------- absl-py 0.13.0 cachetools 4.2.2 certifi 2021.5.30 charset-normalizer 2.0.4 colorama 0.4.4 cycler 0.10.0 google-auth 1.34.0 google-auth-oauthlib 0.4.5 grpcio 1.39.0 idna 3.2 kiwisolver 1.3.1 Markdown 3.3.4 matplotlib 3.4.2 numpy 1.21.1 oauthlib 3.1.1 opencv-python 4.5.3.56 pandas 1.3.1 Pillow 8.3.1 pip 21.2.3 protobuf 3.17.3 pyasn1 0.4.8 pyasn1-modules 0.2.8 pyparsing 2.4.7 python-dateutil 2.8.2 pytz 2021.1 PyYAML 5.4.1 requests 2.26.0 requests-oauthlib 1.3.0 rsa 4.7.2 scipy 1.7.1 seaborn 0.11.1 setuptools 57.4.0 six 1.16.0 tensorboard 2.6.0 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.0 thop 0.0.31.post2005241907 torch 1.9.0+cu111 torchaudio 0.9.0 torchvision 0.10.0+cu111 tqdm 4.62.0 typing-extensions 3.10.0.0 urllib3 1.26.6 Werkzeug 2.0.1 wheel 0.36.2
かなりの数のパッケージが、インストールされました。
やはり、YOLOv5は仮想環境にインストールすべきですね。
以上、YOLOv5のインストールを説明しました。
最後に、YOLOv5の動作確認を行います。
YOLOv5の動作確認
「yolov5」フォルダに移動しておきます。
次のコマンドを実行して、YOLOv5の動作確認を行います。
python detect.py --source ./data/images/ --weights yolov5s.pt --conf 0.4
「–source」で指定した場所にある画像を対象に物体検出を実施します。
ダウンロードした時点では、次の画像が用意されています。
「–weights 」で指定したモデルを物体検出時に利用します。
ダウンロードした時点では、「yolov5s.pt」は存在していません。
存在していない場合は、「yolov5s.pt」がダウンロードされます。
存在していれば、それ以降はダウンロードの処理は実施されません。
では、実際に上記のコマンドを実行します。
処理には、少し時間がかかります。
Results saved to runs\detect\exp Done. (0.123s)
上記が表示されると、物体検出は完了となります。
そして、その結果は「runs\detect\exp」に保存されています。
何やら、枠で囲ってありますね。
男性二人の映っている方を見てみましょう。
さすがに「ジダン」とは出ないのですね。
「ネクタイ」は、ちゃんと検出・認識できています。
「tie 0.66」における数字「0.66」は、確率値となります。
YOLOv5がどれだけ自信を持って認識したのかを示す数値と言えます。
スクリプト実行時に「–conf 0.4」と指定していました。
これは、確率値が0.4以下は表示しないということです。
ちなみに、「–conf 0.2」と指定して実行した結果は以下。
personが1個、ネクタイが1個、さらに追加で検出されました。
YOLOv5の動作確認としては、ここまでで十分でしょう。
以上、YOLOv5の動作確認の説明でした。