物体検出のYOLOv5やーる（Windows10、Python3.6、PyTorch1.5.1）

# はじめに
物体検出のYOLOv5をやってみます。

# 開発環境
- Windows10
- Anaconda
- Python 3.6
- PyTorch 1.5.1

# 導入
1．[ここ](https://github.com/ultralytics/yolov5)からクローンします。

2．YOLOv5環境を作成します。

~~~
conda create -n yolov5 python=3.6
conda activate yolov5
cd yolov5
~~~

3．各ライブラリをインストールします。

先にPyTorchをインストールします。

~~~
pip install torch===1.5.1 torchvision===0.6.1 -f https://download.pytorch.org/whl/torch_stable.html
~~~

次にrequirements.txtからライブラリをインストールします。

~~~
pip install -U -r requirements.txt
~~~

# 実行

下記コマンドを実行し、ウェブカメラの映像を入力します。

~~~
python detect.py --source 0
~~~

SnapCameraなどにウェブカメラを占有される場合は、utils/datasets.pyのLoadStreamsクラス237行目の

~~~
cap = cv2.VideoCapture(0 if s == '0' else s)
~~~

の0のところを1などに変えてみてください。

~~~
cap = cv2.VideoCapture(1 if s == '0' else s)
~~~

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Object Detection VOLOv5<a href="https://twitter.com/hashtag/Python?src=hash&amp;ref_src=twsrc%5Etfw">#Python</a> <a href="https://twitter.com/hashtag/OpenCV?src=hash&amp;ref_src=twsrc%5Etfw">#OpenCV</a> <a href="https://twitter.com/hashtag/AI?src=hash&amp;ref_src=twsrc%5Etfw">#AI</a> <a href="https://twitter.com/hashtag/DeepLearning?src=hash&amp;ref_src=twsrc%5Etfw">#DeepLearning</a> <a href="https://twitter.com/hashtag/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92?src=hash&amp;ref_src=twsrc%5Etfw">#機械学習</a> <a href="https://twitter.com/hashtag/PyTorch?src=hash&amp;ref_src=twsrc%5Etfw">#PyTorch</a> <a href="https://t.co/iWYxNdnuWi">pic.twitter.com/iWYxNdnuWi</a></p>&mdash; 藤本賢志(ガチ本)@pixivFANBOXはじめました (@sotongshi) <a href="https://twitter.com/sotongshi/status/1291249792329199617?ref_src=twsrc%5Etfw">August 6, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[ここ](https://drive.google.com/drive/folders/1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J)から他のモデルをダウンロードし、下記の--weightsオプションでパスを指定し実行することも可能です。

~~~
python detect.py --source 0 --weights yolov5x.pt
~~~

各モデルの比較はこちらの記事[YOLO V5(V3との比較有)を簡単サクッと試す！](https://ai-coordinator.jp/yolov5?fbclid=IwAR2SVFRS49bwdMBU2cgFZZfL2AUxefyU-vX5NB_mrZY-v_zeE5lbGUVMqPI)が参考になります。

スノボーとスケボー、認識できていてすごい！！
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">動画ファイル(昔のiPhoneで撮ったmp4)を YOLOv5に。スノボとスキーを認識してる。 <a href="https://twitter.com/hashtag/%E3%82%AC%E3%83%81%E3%83%A9%E3%83%9C?src=hash&amp;ref_src=twsrc%5Etfw">#ガチラボ</a> <a href="https://t.co/w7QNicwxiJ">pic.twitter.com/w7QNicwxiJ</a></p>&mdash; まこらぎ (@makoragi) <a href="https://twitter.com/makoragi/status/1288113435255816196?ref_src=twsrc%5Etfw">July 28, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">YoloV5、環境整えるのにscipyとweightを手動で入れるくらいで、まあまあすぐに動かせれた(といっても初心者な俺は2時間かかった…)。動いてよかった…<br>v3に比べて軽いモデルでも精度が高い。リアルタイムでもいけんことなさそうやけど、他の手法と比べてどういう場面でアドバンテージあるかはわからん <a href="https://t.co/pOAPrsM4b6">pic.twitter.com/pOAPrsM4b6</a></p>&mdash; 水たまりの水を飲んだことがある桟よしお (@katapad) <a href="https://twitter.com/katapad/status/1287392938046050305?ref_src=twsrc%5Etfw">July 26, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">動画ファイル(昔のWHILLハッカソンで撮ったmp4)を YOLOv5に。WHILLが椅子認識してる <a href="https://twitter.com/sotongshi?ref_src=twsrc%5Etfw">@sotongshi</a> もしっかり認識してる。<br> <a href="https://twitter.com/hashtag/%E3%82%AC%E3%83%81%E3%83%A9%E3%83%9C?src=hash&amp;ref_src=twsrc%5Etfw">#ガチラボ</a> <a href="https://twitter.com/hashtag/WHILL?src=hash&amp;ref_src=twsrc%5Etfw">#WHILL</a> <a href="https://t.co/sDJgLt6f32">pic.twitter.com/sDJgLt6f32</a></p>&mdash; 組長＠圧 (@kumi0708) <a href="https://twitter.com/kumi0708/status/1288119396959805441?ref_src=twsrc%5Etfw">July 28, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

お疲れ様でした。