やりたいこと
最新のYolov5をRaspberryPiで動かしたい
※最新はyolov5のバージョン5を指している(07/2021現在)
環境
Raspberry Pi 4B 32b OS
Python3.7
torch 1.7
torchvision 0.8.0
記事を書いた理由
簡単に環境構築できるYolov5だが、yolov5のバージョン4以降は、torch1.7以上が必要なため、raspberryPiで環境構築するときに工夫が要る。
いくつか参考になる記事はあったが、pytorch1.7では動かすことを諦めて、yolov5のバージョンをダウングレードしたりしてたので、この記事ではyolov5バージョン5をpytorch1.7を使って動かす方法をまとめた。
RaspberryPiでGithubのReadMe通りに環境構築するとどうなる?
偉大なる本家様→【github】yolov5
requrements.txtをpip3 installするとき下記エラーが発生する。
pip3 install -r requirements.txt
Could not find a version that satisfies the requirement torch>=1.7.0 (from -r requirements.txt (line 10)) (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2)
No matching distribution found for torch>=1.7.0 (from -r requirements.txt (line 10))
torch1.7が見つからないみたい。
→torch1.7を別で用意する必要がある!!
参考にしたけど、うまくいかなかった記事たち
その1
Raspberry Pi上で物体検出(YOLO v5)をやってみる
この記事通りだと、とりあえずyolov5を動かすことはできるが、yolov5のバージョンを下げなければいけない上に、pytorchは1.6を使っている。
今回は、最新のバージョン(ver5 07/2021現在)を動かしたい。
その2
Install PyTorch on a Raspberry Pi 4.
pytorch1.7以降のバージョンはraspberry Pi OSの64bitではなければ難しいと書いてる。
試しに、64bit版でやってみたが、Yolov5を動かそうとすると他のところでエラーが出まくった。
32bitOSで動かしたい。
解決方法
下記githubでtorch1.7とtorchvision0.8.0のwhlを用意してくれてるので、こちらを利用する。
pytorch-armv7l
手順
まずはgithubからyolov5をclone
git clone https://github.com/ultralytics/yolov5.git
pytorch1.7とtorchvision0.8をダウンロードする
下記サイトからダウンロードする。他のサイトのtorch1.7のwhlだと動かなかった。
pytorch-armv7l
ダウンロードが終わったら、それぞれをpip3 installする
sudo pip3 install torch-1.7.0a0-cp37-cp37m-linux_armv7l.whl
sudo pip3 install torchvision-0.8.0a0+45f960c-cp37-cp37m-linux_armv7l.whl
pytorchがちゃんと動くか確認
python3
> import torch
libopenblas.so.0がないと怒られる。
ImportError: libopenblas.so.0: cannot open shared object file: No such file or directory
インストールすれば解決
sudo apt-get install libopenblas-dev
再度動くか確認して、何もエラーがでなければtorchのインストールはOK
torchのバージョンが1.7になってることをpip3 listで一応確認はしておく
ライブラリをrequerement.txtからインストール
requrement.txtからtorchとtorchvisionをコメントアウト
pip3 install -r requirements.txt
とりあえず動くか確認する
yolov5s.ptは予めダウンロードしておく。
https://github.com/ultralytics/yolov5/releases
python3 detect.py --source data/images/ --weights yolov5s.pt --conf 0.4
ibcblas.so.3がないというエラーが出た場合
ImportError: libcblas.so.3: cannot open shared object file: No such file or director
下記をインストールして解決
sudo apt-get install libatlas-base-dev
もう一度、detect.pyを実行して、daga/imagesの下の画像が、推論されて出力先に保存されればOK!!