物体検知アルゴリズムのYOLOv3を試してみる
1. はじめに
皆さん、こんにちは!
コロナの影響でリモートワークになったのをきっかけに、ずっと家に引きこもっているみやもとです。
最近会社の同僚と話していて「機械学習を勉強しているんです」と言ったところ、「クレジットカードをカメラで認識する機能を作ってよ(笑)」と言われました。「そういえば、w2のパッケージにはそういった機能がなかったな」と思い、今回は『物体検知』を試したいと思います。
今回は、結構前 (2年前ぐらい)からスゴイ!と言われていた物体検知アルゴリズムの“YOLO”を試してみたいと思います。実は、私はTEDという動画サイトで以前からYOLOを知っていました。しかし、その時はとても難しそうだなと思いトライしなかったので、この機会にYOLOを試したいと思います。
2. YOLOとは
YOLOとは、『You Only Look Once』(一目見ただけで)の頭文字をとり、着後一目見るだけで物体を検知できる特徴があります。YOLOは、“RCNN(Region-Convolutional Neural Network)”を使用して物体検知を行うアルゴリズムとなっています。
YOLOについては開発者のプレゼンテーションがあるので、是非ご覧ください。どのようなものかわかりやすいです。
3. YOLOv3を試す
実行環境
実行環境は下記のようになっています。
・OS:Windows10
・CPU:i7-6700HQ
・Anaconda:1.7.2
※この後出てくるwgetコマンドやgitコマンドなどは、Windowsに標準で入っていないので、使用する環境に適宜ダウンロードしてください。
conda環境作成
下記のコマンドを使用してAnacondaでconda環境を作成します。
conda環境とは、簡単に言うと仮想環境のようなものです。conda環境は複数作成することができ、例えばPythonのバージョンを2系と3系で分けて使いたいときに、conda環境を作成してインストールすると分けることができるので、とても便利なものです。
conda create -n yolo_v3 python=3.6 pip
作成したconda環境に切り替えます。
activate yolo_v3
パッケージのインストール
YOLOv3で使用するパッケージをconda環境にインストールしていきます。
(yolo_v3) conda install pandas opencv
(yolo_v3) conda install pytorch torchvision -c pytorch
(yolo_v3) pip install matplotlib cython
YOLOv3のソースをダウンロード
YOLOv3の公式サイトにも物体検知を行えるコードがあるようですが、今回はgithub上に公開されているPyTorchを使った物体検知を使用したいと思います。
(yolo_v3) git clone https://github.com/ayooshkathuria/pytorch-yolo-v3.git
YOLOv3にはすでに学習済みのモデルがアップされているので、そちらをダウンロードします。
(yolo_v3) cd pytorch-yolo-v3
(yolo_v3) wget https://pjreddie.com/media/files/yolov3.weights --no-check-certificate
画像の物体検知実行
YOLOではお馴染みと言われている、犬と自転車の画像を使って物体検知を行いたいと思います。
下記のコマンドを実行します。
python detect.py --images imgs --det det
実行完了したら下記が出力されます。
物体検知が完了すると、下記のような画像が出力されました。
犬はdogで囲まれており、自転車はbicycleの枠で囲まれています。さらに後ろにある車もtruckという枠で囲まれました。
4. まとめ
驚くほど簡単に画像の物体検知が出来ました。YOLOはすでに学習済みのモデルを公開しているため、機械学習で特徴量をいじる必要もなく、ソフトウェア開発の経験さえあれば物体検知で作れるようになっていました。TEDでのプレゼンでは、スマホにYOLOを入れてリアルタイムで物体検知を行っていたため、今後はそちらをできるようにしていきたいと思います。