🐕

M1 MacでYOLOv5 その1

2021/10/27に公開

これ
https://github.com/ultralytics/yolov5

インストール

上記URLの通りやって詰まったところのメモです。
正直申し上げますと、中途半端に開発環境の整備状態した状態からスタートしているので、以下だけでは不足しているものも多々あると思います。
その際は各自解決をお願いします。

scipyインストール問題の解決方法

openblasが足りていませんでした。

brew install openblas

No module named '_lzma'の解決方法

pyenv使っています。以下をそのままです。
YOLOは描画にpandasで使っているんですね。最終的に要らないとは思いますが。
https://gokugetsu.plala.jp/【pandas】userwarning-could-not-import-the-lzma-module-が発生する/

torchとtorchvisionのバージョン整合

インストール後にはまった問題です。
pip list | grep torchでバージョン整合を確認してください。
私はtorchのバージョンを1.10.0から1.9.0に変更する必要がありました。
https://github.com/pytorch/vision#installation

[追記]torchとtorchvisionについて

何が原因かわかりませんが、環境を再構築しようとした際にインストールできませんでした。
以下のPipfileで無理矢理解決しました。
参考

[packages]
...
# torch = "==1.9.0"
# torchvision = "==0.10.0"
torch = {file = "https://download.pytorch.org/whl/cpu/torch-1.9.0-cp39-none-macosx_11_0_arm64.whl"}
torchvision = {file = "https://download.pytorch.org/whl/cpu/torchvision-0.10.0-cp39-cp39-macosx_11_0_arm64.whl"}

インストール

Pythonの仮想環境構築にはpipenvを使っています。
scipyのビルドに結構な時間がかかります。

export OPENBLAS=$(/opt/homebrew/bin/brew --prefix openblas)
export CFLAGS="-falign-functions=8 ${CFLAGS}"
mkdir lm-yolo; cd lm-yolo
pipenv install --python 3.9
git clone https://github.com/ultralytics/yolov5
pipenv install -r yolov5/requirements.txt

detect.py

チュートリアル通りに使ってみます。
多分うまく行きました。

$ python detect.py
detect: weights=yolov5s.pt, source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5 🚀 v6.0-35-ga4fece8 torch 1.9.0 CPU

Fusing layers...
Model Summary: 213 layers, 7225885 parameters, 0 gradients
image 1/2 /Users/shotaro/work/lm-yolov5/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.116s)
image 2/2 /Users/shotaro/work/lm-yolov5/yolov5/data/images/zidane.jpg: 384x640 2 persons, 1 tie, Done. (0.077s)
Speed: 0.4ms pre-process, 96.8ms inference, 0.8ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/detect/exp2

ローモバ

ここから本題で、ローモバでYOLOv5(物体検出)を使って何がやりたいのか、という話です。

3D

ローモバって3Dなんです。
3Dで何が起こるかというと、例えば領地内で上下にスワイプすると商船の大きさが変わります。多くの自動化プログラムの画像認識では、テンプレートとなる画像との一致度から判定します。一般的な画像認識(テンプレートマッチング)は大きさの変化に非常に弱いです。

こういう意味で、領地外の3D化のアップデートはボットの排除に非常に有効です(特に低レベルなプログラマーの作るボットにとって)。皆さんの周りでボットが動いていない、または消えてしまっていませんか?ただのクソアプデじゃなかったんです。

detect.py

ここから利用規約的に微妙なところがありますが、ご了承ください。

領地内のスクショをdetect.pyに通してみました。
スーツケースと携帯電話が見つかったようです笑

detect.pyは一般的な物体の学習済みのモデルを元に物体検知しています。だからスーツケースが出てくるわけです。
今回は領地内の様々な建物を学習させたモデルを作成しようと思います。

とりあえずここまで。

Discussion