フルーツでの物体検出をやってみた 【YOLOv5】

Machine Learning

YOLOv5 のデフォルトの学習済みデータを使って物体検出をやってみました。結果を簡単にまとめておきます。フルーツでの物体検出です。

環境: Windows 10 パソコン、USBカメラ(動作確認用)、Anaconda、Python 3.X、YOLOv5 をインストール済み。

背景

2020年に YOLOv5 がリリースされ、2021年4月には YOLOv5-P6 がリリースされています。
YOLOv5 については、以前に、Windows パソコン(GPU 付き)の Anaconda 環境でインストールを試みていました(下記の関連リンク参照)。
Windows パソコンに USB カメラをつなぐと YOLOv5 がすぐに動く状態となっていますので、試しに物体検出をやってみました。結果の画像程度ですがアップしておきます。

物体検出の結果まとめ

設定について

・ フルーツを使った物体認識の結果は、上記の画像に示した通りです。
・ USBカメラのライブ画像を使って YOLO を実行すると、物体検出後、結果が動画で保存されます。
上に挙げた画像は、動画からフレームをいくつか引き抜いて gif 画像化することで、データを軽くしています。
・ 使っている学習モデルは、YOLOv5 のデフォルトのままとしています。
・ 学習モデルで使っている学習対象の種類は 80 種類とのことです。apple、orange、banana あたりは入っているようですが、kiwi、lemon は入っていないようです。(詳細確認中)
https://cocodataset.org/#home

物体認識の結果について

・ 赤色のリンゴ apple、黄色のリンゴ、オレンジ orange については、検出結果のラベルが正解となっています。結果も安定しています。黄色のリンゴはたまたま買ってきたものです。色だけをみると他のフルーツと間違えそうですが、よく認識できるなと思う程度に判別ができています。赤色のリンゴとオレンジは、confidence の値が 0.7 の程度、黄色のリンゴはやや低く 0.6 前後となっています。
・ キウイ kiwi とレモン lemon については、学習用データに入っていないようです(確認中)。そのため、orange 等と認識しています。confidence の値も 0.2 ~ 0.6 程度となっており、リンゴなどの正解しているフルーツと比べると、相対的に低い値となっています。
とはいえ、果物としての領域抽出はできているので、特に問題はない結果、精度となっています(学習を行えば正解するであろうと思われます)。
・ カメラを動かしても、遠近を変えても、フルーツの側を動かしても、検出領域が追従します。confidence の値も、上記の画像と同様の結果となっています。
・ パソコンは GPU 付きのものを使っていますが、学習ではなく物体検出であれば、負荷も軽く、特に問題はありません。

その他、所感

・ ネットで kaggle dataset などとして学習データのサンプルを調べると、一般的なフルーツの学習用データには、緑色のリンゴなども入っているようです。(日本では緑色のリンゴはあまり見ないようにも思いますが。)
・ また、実行している Python のスクリプト(detect.py)を調べていけば、各オブジェクトの位置や大きさを取得したり、領域を切り出すこともできそうです。こうしたデータを取得して、さらに別の画像処理やハードウェアの動作処理を追加することも可能そうです。
例えば、安定した光源を設定してカラーバランスと明るさを調整し、カメラの距離・位置を固定して寸法を評価するためのキャリブレーションをすれば、果物の大きさや鮮度を自動判定し、選別も自動で行うなど、応用ができそうです。ほとんどできているようなものだと思います。

まとめ

簡単ですが、YOLO を使った物体検出を行ってみました。
今回は Windows と YOLOv5 の組み合わせとしました。果物や野菜程度であれば、上記の画像のとおり、検出精度は高くできそうです。

ロボットアームのような動くモノがあれば、自動選別のロボットなども実現しそうです。スマート農業、無人野菜工場なども実現できるのではという印象を受けます。

関連リンク
・ YOLOv5 のインストール手順 【Windows10 & Anaconda】
・ 動作確認済み USB カメラ 【おすすめ】
・ Anaconda Prompt コマンド一覧 【仮想環境設定】
・ Raspberry Pi で物体検出をやってみた 【Tensorflow Lite】

タイトルとURLをコピーしました