【機械学習】PythonライブラリYOLOv5の使い方を解説

機械学習を学んでいると様々なプラットフォーム・アルゴリズム・ライブラリが登場し、どれを使ってよいかがわからない。
どのアルゴリズムが優秀なのかがわからないなどがあるかと思います。
今回はその中でもPyTorch上で機械学習モデルとして使用することのできるYOLOv5の使い方について実際に用意されているサンプルを使用しながら解説します。
ここでの実行環境はGoogle Colabの使用を前提とします。
また、ここではGoogle Colabの解説はしませんのでご了承ください。

YOLOv5とは

Python上で動作する機械学習・深層学習のライブラリとして使用されています。
YOLOv5は2020年6月に公開された最新の物体検出方法で、他の方法と比べ、リアルタイムでの実行ができるということの強みがあります。
代表的なものとして、自動運転・顔の検出などがあげられます。
また、データセットを自作し簡単にYOLOv5でモデルデータを作成することができるのも特徴です。
YOLOv5の詳しい内容については、公式のドキュメントがわかりやすいです。

YOLOv5を使ってみる

YOLOv5について理解したところで、インストール・実行してみましょう。
今回はGoogle Colaboratoryと呼ばれるクラウドサービスを利用し、実行します。

YOLOv5のインストール

まずは、機械学習に使うためのYOLOv5本体をインストールします。
YOLOv5自体はGitHub上でオープンソースで開発されているライブラリです。
そのためGitHub上からダウンロード・インストールをします。
必要なライブラリとYOLOv5をインストールするために、Google Colab上でコードセルを作成し下記コードを実行します。

!git clone https://github.com/ultralytics/yolov5
!pip install -r yolov5/requirements.txt

上記セルを実行し、以下の様なログが出力されれば正常にインストールされています。

Cloning into 'yolov5'...
remote: Enumerating objects: 10488, done.
~~~省略~~~
Installing collected packages: thop, PyYAML
  Attempting uninstall: PyYAML
    Found existing installation: PyYAML 3.13
    Uninstalling PyYAML-3.13:
      Successfully uninstalled PyYAML-3.13
Successfully installed PyYAML-6.0

YOLOv5の実行

YOLOv5には事前に学習済みのモデルデータが配布されています。 今回はこの配布されている学習済みデータを利用して画像認識(物体認識)をしてみたいと思います。
新規セルを作成した後に下記コードを実行することでYOLOv5を使用することができます。

%cd yolov5
!python detect.py --source data/images/zidane.jpg --conf 0.5 --weights yolov5s.pt
/content/yolov5
Downloading https://ultralytics.com/assets/Arial.ttf to /root/.config/Ultralytics/Arial.ttf...
detect: weights=[yolov5s.pt], source=data/images/zidane.jpg, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.5, iou_thres=0.45, max_de
~~~省略~~~
Speed: 0.4ms pre-process, 28.8ms inference, 44.6ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/detect/exp

上記の様なログが出力されると、runs/detect/expフォルダ内に以下の様な物体検出をした画像ファイルが出力されています。
YOLOv5では同梱されているdetect.pyを実行すると、初回起動時にYOLOv5の学習済みモデルをダウンロードします。
このデータは人、物について事前に学習したモデルになります。
上記画像から実際に学習されたモデルを使用して実行できることが確認できます。
この画像では人が二人、ネクタイが一つ取得できています。囲われている数値は百分率になっていて、0.57の場合person(人物)である割合が57%ということになります。

PyTorchでの利用

実際にPyTorchを使用して、YOLOv5で事前に学習されたモデルを使用して画像ファイルから物体を検出していきたいと思います。
PyTorchはGoogle Colabで導入されており、コードを打つだけで使用することができます。

import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://ultralytics.com/images/zidane.jpg'
result = model(img)
result.print()

PyTorchではtorch.hub.loadメソッドでモデルを呼び出し、画像ファイルを読み込むことで物体識別をすることができるようになっています。

YOLOv5 2022-1-10 torch 1.10.0+cu111 CUDA:0 (Tesla K80, 11441MiB)
Collecting PyYAML>=5.3.1
~~~省略~~~
Adding AutoShape...
image 1/1: 720x1280 2 persons, 1 tie
Speed: 389.6ms pre-process, 99.8ms inference, 44.6ms NMS per image at shape (1, 3, 384, 640)

実際に実行することで上記の様なログが出力されimage 1/1: 720x1280 2 persons, 1 tieから画像の中に2 persons, 1tieが見つかったことがわかります。
先ほどdetect.pyで物体を識別した物と全く同じ結果ですので、PyTorchでモデルを読み込み物体認識ができました。

まとめ

Pythonで動作するYOLOv5の使い方を解説しました。
世界的に見ても機械学習は最近話題になってきている物です。
YOLOv5を使用して機械学習に興味を持ってもらえる人が少しでも増えればいいなと思っています!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA