物体検出を行うプログラムの実行方法

物体検出を行うプログラムを実行するための環境構築の方法などを解説する。
多人数人物認識を行うプログラムの実行方法」環境を流用するため、このページが終わっていることが前提である。



YOLOv5 による物体検出の実行

yolov5 から、「Code」→「Download ZIP」で圧縮されたプログラムをダウンロードする。

zip ファイルを右クリックで「すべて展開」を選択して、プログラムを展開する。

Windows のスタートメニューから Anaconda Prompt (pytorch) を起動し、先頭に (pytorch) と書かれたプロンプトで下記を実行し、ultralytics をインストールする。
conda install -c conda-forge ultralytics

上記ページから YOLOv5s のリンクをクリックし、 yolov5s.pt をプログラムが複数あるのと同じフォルダにダウンロードする。

Windows のスタートメニューから Spyder (pytorch) を起動し、 yolov5-master フォルダ内にある detect.py を開く。
実行時は「ファイルごとの設定」で「カスタム設定でファイルを実行」→「外部システムターミナルで実行」を選択する。
さらに、一般設定のコマンドラインオプションは以下に設定する。source の数値はカメラ番号である。
device の数値 0 は GPU を使う場合で、CPU を使う場合は --device cpu と書く。
--source 0 --device 0 --weights yolov5s.pt 
終了するときは黒い画面を閉じて強制終了。


SSD による物体検出の実行

Single Shot MultiBox Detector (SSD) の実行を行う。

pytorch-ssd から、「Code」→「Download ZIP」で圧縮されたプログラムをダウンロードする。

zip ファイルを右クリックで「すべて展開」を選択して、プログラムを展開する。

さらに、上記ページに Google Drive へのリンクがあるので、そこから の3ファイルを、models フォルダにダウンロードする。

Windows のスタートメニューから Spyder (pytorch) を起動し、pytorch-ssd-master フォルダ内にある run_ssd_live_demo.py を開く。
実行時は「ファイルごとの設定」で「カスタム設定でファイルを実行」→「外部システムターミナルで実行」を選択する。
さらに、一般設定のコマンドラインオプションは以下に設定する。

MobilenetV1 SSD を実行する場合。
mb1-ssd models/mobilenet-v1-ssd-mp-0_675.pth models/voc-model-labels.txt 
MobileNetV2 SSD Lite を実行する場合。
mb2-ssd-lite models/mb2-ssd-lite-mp-0_686.pth models/voc-model-labels.txt
なお、MobileNetV2 SSD Lite を GPU ありで利用する場合、run_ssd_live_demo.py に下記の変更を施す必要がある。
# 10行目に以下を追加
import torch

# 56行目(元は55行目)に以下の変更を施す
    predictor = create_mobilenetv2_ssd_lite_predictor(net, candidate_size=200)
→
    predictor = create_mobilenetv2_ssd_lite_predictor(net, candidate_size=200, device=torch.device('cuda'))
いずれの場合も、終了時は映像上で「q」をタイプして終了。

なお、カメラを変更したい場合は、21 行目の下記を直接変更するしかない。
cap = cv2.VideoCapture(0)