M1 Mac+Python+YOLO V3で物体検出に挑戦

YOLO AI

随分以前ですがこちらのサイトを参考にYOLOで遊んでいました。

https://ai-coordinator.jp/yolo-v3-pytorch

AIと聞くと敷居が高いように感じますが、このように情報発信してくださる方々のおかげで気軽にAIと関わりをもてるのは本当に有難いことです。感謝!

ということで、今回メインマシンをM1 Macに移行したので久しぶりにYOLOによる物体検出に挑戦してみました。

YOLOとは?

You Only Look Onceの頭文字を取ってヨーローです。以前ご紹介したOpenCVやOpenVINOとはまた異なる仕組みで物体検出を行います。

「一度しか見ないから早いんだな」くらいの感じでいきましょう。逆の言い方をすれば他の仕組みは「何度も見ている」ということですね。

動作環境

私の環境です。

  • MacBook Pro M1(メモリ8GB SSD512GB)
  • macOS Big Sur(バージョン11.2.2)
  • Miniforge3
  • Python 3.8

セットアップしていきなり実行

ターミナルを起動し下記のコマンドを順に入力してきましょう!

解析がスタートします。

あっという間に終わり、解析結果が~/darknet/predictions.jpgに出力されます。

何度見てもすごい!と感じずにいられません。

内蔵カメラでリアルタイム物体検出をするには

ここからは事前準備が必要です。具体的にはPythonとPyTorchのセットアップをはじめに行いますが、M1 Macの場合は環境構築方法が限定されますので注意が必要です(2021年3月1日時点)。

Miniforge3インストール

Python実行環境にはMiniforge(Anacondaの小型版と思っておけば良いと思います)を利用します。

まずはこちらのサイトのDownloadから「OS X arm64(Apple Silicon)」を取得し、以下のコマンドを実行します。

bash Miniforge3-MacOSX-arm64.sh

インストールが終わったらYOLO用の環境を作成しましょう。Pythonは3.8にしました。

conda create -n yolo python=3.8

ここは「conda create -n 好きな名前 python=希望バージョン」です。こんな風に環境を作ったり削除したりできるのは便利ですね。ちなみに削除は「conda remove -n 名前 –all」です。allの前はハイフンが2つ続きますので注意してくださいね。

「動かねー」という方はパスが通っているか確認しましょう!

~/.zshrc

source ~/miniforge3/etc/profile.d/conda.sh

では、早速作成した環境へ入って作業を続けます。

conda activate yolo

PyTorchインストール

以前はPyTorchの公式サイトから環境に応じたコマンドを取得していました。

PyTorch
An open source machine learning framework that accelerates the path from research prototyping to production deployment.

M1 Macの場合は別の手順を踏まねばなりません。環境構築全般、参考にさせて頂いた記事をご紹介させて頂きます。良記事公開、有難うございます!

M1搭載MacにおけるPytorchのインストール - Qiita
重要!(2021-06-19現在) 継続的に更新されている,M1 Macの環境構築に関する次のとてもためになる記事でも言及されていますが,現在,簡単にpip installでインストール可能になりました。 pip instal...
Apple Silicon(M1) Mac+tensorflow-macosでディープラーニングする

まずは必須となるものをインストールしていきます。

conda install numpy
conda install matplotlib
conda install pandas
conda install opencv

続いてPythonのバージョンに応じ下記のリンクからwheel(パッケージ)をダウンロードします。3.8用はGoogle Drive、3.9用はgitへのリンクです。

Python 3.8 Python 3.9

警告が表示されたら続行できるように選択を続け、次にインストールです。

コンソールの最終行はこんな感じです。

Successfully installed torch-1.8.0a0 typing-extensions-3.7.4.3

セットアップを続けます。

imagesにdog.jpgを指定した結果はこんな感じです。

フォルダ「det」に「det_dog.jpg」というファイルが作成されていることを確認しましょう。

下記サンプルはimgsに「img3.jpg」を指定しました。

画像はこんな感じです(det_img3.jpg)。

すごい!

リアルタイム物体検出

お待たせしました。カメラを使ってリアルタイム物体検出のお時間です。

こちらのコマンドをどうぞ!

python cam_demo.py

自分が映り込まないようかなりアクロバティックな姿勢で撮影したためツッコミどころは色々ありますがスルーでお願いしますw

iPhoneがlaptopになっていたりミニカーがcell phoneだったりはしますが、検知速度・判定結果いずれもなかなかです。ピント位置や被写体との距離を調整すればより良い結果が得られると思います。

まとめ

おしりたんていはpersonでした!

コメント