M1 MacでYOLOv5 その1
これ
インストール
上記URLの通りやって詰まったところのメモです。
正直申し上げますと、中途半端に開発環境の整備状態した状態からスタートしているので、以下だけでは不足しているものも多々あると思います。
その際は各自解決をお願いします。
scipyインストール問題の解決方法
openblas
が足りていませんでした。
brew install openblas
No module named '_lzma'
の解決方法
pyenv
使っています。以下をそのままです。
YOLO
は描画にpandas
で使っているんですね。最終的に要らないとは思いますが。
torchとtorchvisionのバージョン整合
インストール後にはまった問題です。
pip list | grep torch
でバージョン整合を確認してください。
私はtorch
のバージョンを1.10.0
から1.9.0
に変更する必要がありました。
[追記]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