🐥

【Python】YOLOv5で画面上をリアルタイムで推論する【M1/Mac】

2023/03/29に公開

環境

  • M1Mac
    • Ventura 13.2.1(22D68)
  • python
    • Python 3.9.6
  • pythonライブラリ
ライブラリを表示
> pip list
Package                 Version
----------------------- --------------------
absl-py                 1.4.0
appnope                 0.1.3
asttokens               2.2.1
backcall                0.2.0
cachetools              5.3.0
certifi                 2022.12.7
charset-normalizer      3.1.0
contourpy               1.0.7
cycler                  0.11.0
decorator               5.1.1
executing               1.2.0
filelock                3.10.7
fonttools               4.39.3
gitdb                   4.0.10
GitPython               3.1.31
google-auth             2.17.0
google-auth-oauthlib    0.4.6
grpcio                  1.53.0
idna                    3.4
importlib-metadata      6.1.0
importlib-resources     5.12.0
ipython                 8.11.0
jedi                    0.18.2
Jinja2                  3.1.2
kiwisolver              1.4.4
Markdown                3.4.3
MarkupSafe              2.1.2
matplotlib              3.7.1
matplotlib-inline       0.1.6
mpmath                  1.3.0
mss                     7.0.1
networkx                3.0
numpy                   1.24.2
oauthlib                3.2.2
opencv-python           4.7.0.72
packaging               23.0
pandas                  1.5.3
parso                   0.8.3
pexpect                 4.8.0
pickleshare             0.7.5
Pillow                  9.4.0
pip                     21.2.4
prompt-toolkit          3.0.38
protobuf                4.22.1
psutil                  5.9.4
ptyprocess              0.7.0
pure-eval               0.2.2
pyasn1                  0.4.8
pyasn1-modules          0.2.8
Pygments                2.14.0
pyparsing               3.0.9
python-dateutil         2.8.2
pytz                    2023.2
PyYAML                  6.0
requests                2.28.2
requests-oauthlib       1.3.1
rsa                     4.9
scipy                   1.10.1
seaborn                 0.12.2
setuptools              67.6.1
six                     1.16.0
smmap                   5.0.0
stack-data              0.6.2
sympy                   1.11.1
tensorboard             2.12.0
tensorboard-data-server 0.7.0
tensorboard-plugin-wit  1.8.1
thop                    0.1.1.post2209072238
torch                   2.0.0
torchvision             0.15.1
tqdm                    4.65.0
traitlets               5.9.0
typing_extensions       4.5.0
urllib3                 1.26.15
wcwidth                 0.2.6
Werkzeug                2.2.3
wheel                   0.40.0
zipp                    3.15.0

結論

main.py
import torch
import cv2
import numpy as np
from mss import mss

model=torch.hub.load('ultralytics/yolov5', 'yolov5s')

with mss() as sct:
    
    monitor={"top":200,"left":200,"width":200,"height":200}

    while True:
	# mssでスクショしたものをnp配列に
        screenshot=np.array(sct.grab(monitor))
        
	# 入力
        results=model(screenshot,size=640)
	# 推論結果をコンソールに
        results.print()
	# 画像にバウンディングボックスを表示
        results.render()
        
	# cv2でフレームを表示
        cv2.imshow("frame",results.ims[0])

        if(cv2.waitKey(1)==ord("q")):
            cv2.destroyAllWindows()
            break

参考記事

https://farml1.com/yolov5/#toc3
https://zenn.dev/opamp/articles/b4005309740fa6

Discussion