Macbook
Apple Silicon の Macbook Pro でサクッと YOLOv5 を動かしたので手順を書き留めておきます。Mac のターミナルは Rosetta2 環境で実行しています。
環境の準備
システム環境を汚したくないので Python の環境を切っておきます。
1 2 3 |
$ cd test # 適当に作ったワークディレクトリで作業開始 $ virtualenv yoloenv # yoloenvという名前で環境を作る $ source yoloenv/bin/activate # 専用環境を有効化 |
コマンドプロンプトの前に環境名 (yoloenv) と表示されます。
YOLOv5をインストール
GitHubからYOLOv5をクローンします。
1 2 3 |
(yoloenv) $ git clone https://github.com/ultralytics/yolov5 (yoloenv) $ cd yolov5 # yolov5というディレクトリができているので潜っていく (yoloenv) $ pip3 install -r requirements.txt # 必要なものをインストール |
エラーが出ていない事を確認したら完了。
物体認識をためす
WEBカメラで物体認識する。コマンド実行してから少し時間かかります。
1 |
(yoloenv) $ python3 detect.py --source 0 |
動画を認識させる。ファイルは実行ディレクトリに置いておきます。結果は実行ディレクトリの の runs/detect 以下に保存されます。
1 |
(yoloenv) $ python3 detect.py --source video.mp4 |
写真を認識させる。ファイルは実行ディレクトリに置いておきます。結果は実行ディレクトリの の runs/detect 以下に保存されます。
1 |
(yoloenv) $ python3 detect.py --source photo.jpg |
レストランのワーフさんの写真を借りてきました。
終了
Python環境を抜ける
1 |
(yoloenv) $ deactivate |
この記事はここを参考にしました。https://umilcl.com/yolov5-environment-setup/
Windows 10
Windows 10 で同様にやってみました。WSL はカメラやグラフィック環境の扱いが難しいので Anaconda を使います。
環境の準備
Anaconda Prompt を使います。
1 2 3 4 |
$ cd test # 適当に作ったワークディレクトリで作業開始 (base) $ conda deactivate # condaの(base)環境から抜ける $ conda create -n yoloenv python=3.8 # yoloenvという名前で環境を作る $ conda activate yoloenv # 専用環境を有効化 |
コマンドプロンプトの前に環境名 (yoloenv) と表示されます。
YOLOv5をインストール
1 2 3 |
(yoloenv) $ git clone https://github.com/ultralytics/yolov5 (yoloenv) $ cd yolov5 # yolov5というディレクトリができているので潜っていく (yoloenv) $ pip3 install -r requirements.txt # 必要なものをインストール |
筆者の場合は下記のコマンドでした。インストール方法を間違うと後でエラーが発生します。
1 |
(yoloenv) $ conda install pytorch torchvision torchaudio cpuonly -c pytorch |
さきほど pip3 コマンドを失敗しているのでもう一度やっておきます。
1 |
(yoloenv) $ pip3 install -r requirements.txt |
今度はエラーは出ません。
物体認識をためす
WEBカメラで物体認識する。conda 環境のコマンドは python3 ではなく python です。
1 |
(yoloenv) $ python detect.py --source 0 |
動画を認識させる。ファイルは実行ディレクトリに置いておきます。
1 |
(yoloenv) $ python detect.py --source video.mp4 |
写真を認識させる。ファイルは実行ディレクトリに置いておきます。
1 |
(yoloenv) $ python detect.py --source photo.jpg |
終了
Python環境を抜ける
1 |
(yoloenv) $ conda deactivate |
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を起動したらまずここから初めてください。
1 2 |
$ sudo apt update $ sudo apt upgrade -y |
動作環境
virtualenv を使った動作環境の作成は常道ですが、Raspberry Pi の場合は pip3 コマンドでインストール出来ないものが多々あり、結局 sudo apt <ライブラリ名> のコマンドを使うことになります。その結果、pip3 でインストールしたものと apt でインストールしたものが混在してしまい、余計な問題が発生してしまいます。virtualenv を使用できればそのほうが良いのですが、困難を感じたら諦めて素のOS上にインストールしてください。
PyTorchのインストール
Raspberry Pi はARM系のCPUなのでIntel CPU用にコンパイルされたライブラリは動作しません。PyTorchのソースコードをコンパイルするのは大変なので、GitHubで公開されているコンパイル済のものを利用させてもらいます。いくつかありますが、例えばここを使いましょう。
pytorch と torchvision のフォルダからそれぞれ良さそうなバージョンを選んでダウンロードします。他のライブラリとの相性がありますので最新のものが良いとは限りません。ファイル拡張子は .whl です。ダウンロードした PyTorch と TorchVision をインストールします。
1 2 |
$ pip3 install ./torch-1.5.0a0+4ff3872-cp37-cp37m-linux_armv7l.whl $ pip3 install ./torchvision-0.6.0a0+b68adcf-cp37-cp37m-linux_armv7l.whl |
ちなみに、ファイル名に cp37 という文字列が含まれていますが、これは Python3.7 でコンパイルされたことを意味します。Bullseye 標準のPython3.9では動作しません。
YOLOv5をインストール
YOLOv5 そのものは GitHub からクローンします。
1 2 |
$ git clone https://github.com/ultralytics/yolov5 $ cd yolov5 # yolov5というディレクトリができているので潜っていく |
ただし、最新版だと他のライブラリと不整合が起きるので、少し古いバージョンを使ったほうが良いかもしれません。
必要なライブラリのインストール
YOLOv5 のフォルダにある requirements.txt に従って各ライブラリをインストールしていきます。torch と torchvision はインストール済なのでその2行をコメントアウトします。
1 2 |
#torch>=1.7.0 #torchvision>=0.8.1 |
本来、あとは 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カメラで物体認識する。コマンド実行してから少し時間かかります。
1 |
$ python3 detect.py --source 0 |
あなたがよほどの幸運な人でなければ、おそらくここでもエラーが発生します。ひとつづつ解決してください。
コメント