今回はWindowsでPyTorchとYOLOv5を使った物体検出を行う方法を解説していきます。
また、Jetson NanoでYOLOv5を使う方法を以下の記事で解説していますので、あわせてご覧ください。

\ 機械学習を学びたい人には自宅で学べるUdemyがおすすめ! /
講座単位で購入できます!
PyTorchのインストール
以下のPyTorchサイトを開きます。
インストールの条件を設定するUIがありますので、必要に応じて選択してください。私は今回ノートPCでやるためCPUを選択しました。

私の場合は以下のコマンドが生成されましたのでコマンドプロンプトで実行します。
pip3 install torch torchvision torchaudio

YOLOv5をダウンロードしてインストール
ダウンロード
続いてYOLOv5をインストールします。以下のリポジトリをダウンロードしてください。
gitコマンドが使える方は以下でダウンロードできます。
git clone https://github.com/ultralytics/yolov5
インストール
ダウンロードしたYOLOのディレクトリに移動し、インストールを実行します。
cd yolov5
pip install -r requirements.txt
以下のように表示されたらインストール完了です。
Successfully installed seaborn-0.12.1 thop-0.1.1.post2209072238
動作確認
インストールを完了したら、動作確認をします。
pythonを起動して以下のコードを実行します。
python
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
以下のように表示されたら無事に動作しています。
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients
Adding AutoShape...

作成したソースコード
ここからは実際にPyTorchとYOLOを使って推論していきます。
今回はYOLOのディレクトリないの「data」フォルダにある「bus.jpg」という画像を使って実行してみます。
以下のようなコードを作成しました。
import cv2
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = cv2.imread('(YoloV5のフォルダの場所)\\data\\images\\bus.jpg')
result = model(img)
result.render()
cv2.imshow('result', result.ims[0])
cv2.waitKey(0)
実行結果
先ほど作成したプログラムを実行すると、「bus.jpg」のファイルが読み込まれ推論結果が表示されました。
バスや人間を正しく判別できています。

まとめ
今回はPyTorchとYOLOv5を使って物体検出を実行してみました。たった5行程度のコードで簡単に実行できたのはとても驚きでした。これからD435を使って実際にカメラ映像のリアルタイム検出を試していきたいと思います。
また、PyTorchとYOLOv5を使って検出したオブジェクトのバウンディングボックスの情報を取得する方法を以下の記事で解説していますので、あわせてご覧ください。

機械学習を効率よく学びたい方には、自分のペースで動画で学べるUdemyの以下の講座がおすすめです。数学的な理論からPythonでの実装までを習得できます。(私自身もこの講座を受講しています)

それでは、また次の記事でお会いしましょう。


\ 機械学習を学びたい人には自宅で学べるUdemyがおすすめ! /
講座単位で購入できます!
コメント