YOLOv5 で物体認識

Macbook

Apple Silicon の Macbook Pro でサクッと YOLOv5 を動かしたので手順を書き留めておきます。Mac のターミナルは Rosetta2 環境で実行しています。

環境の準備

システム環境を汚したくないので Python の環境を切っておきます。

コマンドプロンプトの前に環境名 (yoloenv) と表示されます。

YOLOv5をインストール

GitHubからYOLOv5をクローンします。

エラーが出ていない事を確認したら完了。

物体認識をためす

WEBカメラで物体認識する。コマンド実行してから少し時間かかります。

動画を認識させる。ファイルは実行ディレクトリに置いておきます。結果は実行ディレクトリの の runs/detect 以下に保存されます。

写真を認識させる。ファイルは実行ディレクトリに置いておきます。結果は実行ディレクトリの の runs/detect 以下に保存されます。

レストランのワーフさんの写真を借りてきました。

終了

Python環境を抜ける

この記事はここを参考にしました。https://umilcl.com/yolov5-environment-setup/

Windows 10

Windows 10 で同様にやってみました。WSL はカメラやグラフィック環境の扱いが難しいので Anaconda を使います。

環境の準備

Anaconda Prompt を使います。

コマンドプロンプトの前に環境名 (yoloenv) と表示されます。

YOLOv5をインストール

エラーが出るので torch だけ別のコマンドでインストールします。Pytorchの公式ページ にアクセスして条件を設定すると正しいインストールコマンドを教えてくれます。

筆者の場合は下記のコマンドでした。インストール方法を間違うと後でエラーが発生します。

さきほど pip3 コマンドを失敗しているのでもう一度やっておきます。

今度はエラーは出ません。

物体認識をためす

WEBカメラで物体認識する。conda 環境のコマンドは python3 ではなく python です。

動画を認識させる。ファイルは実行ディレクトリに置いておきます。

写真を認識させる。ファイルは実行ディレクトリに置いておきます。

終了

Python環境を抜ける

Raspberry Pi

まず、YOLOv5をラズパイにインストールするのはとても大変だということを覚悟してください。関連するライブラリやYOLO自身も日々変化しており、昨日動いた手順が今日も正しいとは限りません。色々なエラーを自力で解決できて、さらに運が良ければ成功するかもしれません。筆者の場合はBusterで成功したことがありますが、現在その作業手順を再現しようとしたら失敗しました。

Raspberry Pi OS

2022年1月現在、Raspberry Pi OS の最新版は Bullseye ですが、色々と変更が多く、リリースされてから日が浅いのでネット情報も不十分です。Python は 3.9 が入っていますが、あとで説明するように PyTorch をインストールするには 3.7 が必要です。まず Python3.7 のインストールから始めてください。

一方、ひとつ古いバージョンの Buster は Python2 と Python3.7 が共存しています。間違って Python2 を使わないように常に意識していなければなりません。

OSを起動したらまずここから初めてください。

動作環境

virtualenv を使った動作環境の作成は常道ですが、Raspberry Pi の場合は pip3 コマンドでインストール出来ないものが多々あり、結局 sudo apt <ライブラリ名> のコマンドを使うことになります。その結果、pip3 でインストールしたものと apt でインストールしたものが混在してしまい、余計な問題が発生してしまいます。virtualenv を使用できればそのほうが良いのですが、困難を感じたら諦めて素のOS上にインストールしてください。

PyTorchのインストール

Raspberry Pi はARM系のCPUなのでIntel CPU用にコンパイルされたライブラリは動作しません。PyTorchのソースコードをコンパイルするのは大変なので、GitHubで公開されているコンパイル済のものを利用させてもらいます。いくつかありますが、例えばここを使いましょう。

GitHub - torchsmoke/Python3-Wheels: Wheels for Python 3
Wheels for Python 3. Contribute to torchsmoke/Python3-Wheels development by creating an account on GitHub.

pytorch と torchvision のフォルダからそれぞれ良さそうなバージョンを選んでダウンロードします。他のライブラリとの相性がありますので最新のものが良いとは限りません。ファイル拡張子は .whl です。ダウンロードした PyTorch と TorchVision をインストールします。

ちなみに、ファイル名に cp37 という文字列が含まれていますが、これは Python3.7 でコンパイルされたことを意味します。Bullseye 標準のPython3.9では動作しません。

YOLOv5をインストール

YOLOv5 そのものは GitHub からクローンします。

ただし、最新版だと他のライブラリと不整合が起きるので、少し古いバージョンを使ったほうが良いかもしれません。

必要なライブラリのインストール

YOLOv5 のフォルダにある requirements.txt に従って各ライブラリをインストールしていきます。torch と torchvision はインストール済なのでその2行をコメントアウトします。

本来、あとは pip3 install -r requirements.txt のコマンドで一気に必要なライブラリをインストールするところですが、慎重にひとつずつインストールすることをオススメします。

pip3 install Cython       問題ないはず。
pip3 install matplotlib   時間がかかるので sudo apt install python3-matplotlib を実行したほうが速いかも。
pip3 install numpy      1.16.2がインストール済だと表示されます。requirements.txtには1.18.5以上と指定されているのが気持ち悪い。
pip3 install opencv-python    時間がかかるので断念。別途インストールする方法を調べてください。
pip3 install pillow        問題ないはず。
pip3 install PyYAML    問題ないはず。
pip3 install scipy         これも sudo apt install python3-scipy とすべきか?
pip3 install tensorboard   問題ないはず。
pip3 install tqdm         問題ないはず。

物体認識をためす

WEBカメラで物体認識する。コマンド実行してから少し時間かかります。

あなたがよほどの幸運な人でなければ、おそらくここでもエラーが発生します。ひとつづつ解決してください。

コメント