#はじめに
前回に引き続き、物体検出に関する方法について忘備録としてまとめました。
Google Colaboratory上でYOLOv5とtorch hubを使用して、物体検出の推論結果の中身を見ていきます。
#前回のおさらい
物体検出やYOLOv5の説明は以下の記事をご覧ください。
#torch Hub
YOLOv5のtorch Hubについて興味がある方は以下のリンクを参照してください。
#YOLOv5の準備
まずはGoogle ColaboratoryでYOLOv5の準備をします。
!git clone https://github.com/ultralytics/yolov5
%cd yolov5/
!pip install -qr requirements.txt
以上で準備は完了です。
#torch hubで物体検出してみる
まずはモデルをダウンロードします。
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5x', pretrained=True)
次に物体検出する画像を指定します。
ローカルの画像を使用する場合はパスを指定します。
imgs = ['https://ultralytics.com/images/zidane.jpg']
results = model(imgs)
結果を保存します。
results.print()
results.save()
前回と同様に物体検出ができました。
画像は/content/yolov5/runs/hub/exp/
に zidane.jpg
として保存されます。
#torch Hubで結果を確認する
推論結果の内容を確認していきます。
results.pandas().xyxy[0]
実行すると以下の出力を得ます。
物体検出の結果が一覧で表示されました。
各物体に対して、左から物体検出位置の座標、confidence(確信度)、番号、物体名となります。
なお、検出位置の座標は左上が原点(0,0)となることに注意してください。
画像と表を見比べてみると内容がわかりやすいかと思います。
#モデルの中身を確認する
今回使用したモデルの物体名と番号は以下のように確認ができます。
print(model.names)
['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']
personは0番目、tieは27番目であることがわかります。
YOLOv5のモデルを使えば、上記リストにある物体の検出が可能となります。
#結果をcsvに出力する
先ほどで出力した表をcsvファイルとして出力します。
results.pandas().xyxy[0].to_csv('/content/yolov5/result.csv')
#終わりに
最後までご覧いただきましてありがとうございました。