第7回目の実例紹介になります。
今回は新機能の輝度分類を使って色情報を用いたクラス分類を行う例を紹介したいと思います。
以下のように様々な色のビニールテープがあった場合に、何色なのか判定していきたいと思います。
クラス分類も同じことが出来ますが、輝度分類の方が処理時間が短くなることが多いと思います。
今回は輝度分類とクラス分類の処理時間も比較したいと思います。
領域検出と輝度分類でビニールテープの色検出
-
ビニールテープ検出用の領域検出を追加
高速化のため、前処理でサイズを1/8にしています。
-
ビニールテープ検出のアノテーション及び学習
ここでは結果だけ表示します。
-
テープの色分類用の輝度分類を追加
-
テープの色輝度分類のクラス設定
クラス名の編集、追加、色変更を行います。
緑、黄、赤、青の4クラス定義しました。
-
緑検出用のRGBヒストグラム追加
ブロックを追加すると左にヒストグラム、真ん中に結果、右にパラメータが表示されます。
ヒストグラムを綺麗にするためにマスクを使用します。(マスクなし/マスクあり)
ちなみに赤と黄のテープのRヒストグラムは全て255のため右端に1本だけ立っている状態です。
次にパラメータを設定します。
まず割り当てるクラスを設定します。
次にRのヒストグラムの有効範囲を決めます。
値を変更するとヒストグラムの黄色のバーが連動して動きます。
ここでは赤の山が黄色いバーの中に収まるように設定します。
次に割合を設定します。
割合は赤の総数に対して、有効範囲に収まった赤の割合に対する閾値となります。
Rの設定をしたところ、緑と青のテープが緑クラスに割り当てられ、他は不明となしました。
同様にB,Gを設定します。
緑だけ緑クラスにすることが出来ました。 -
黄検出用のRGBヒストグラム追加
5と同様に設定した結果です。
-
赤検出用のRGBヒストグラム追加
5と同様に設定した結果です。
-
青検出用のRGBヒストグラム追加
5と同様に設定した結果です。
これで全てのビニールテープのすべての色を検出することが出来ました。
領域検出とクラス分類でビニールテープの色検出
-
ビニールテープ検出用の領域検出を追加
高速化のため、前処理でサイズを1/8にしています。
-
ビニールテープ検出のアノテーション及び学習
ここでは結果だけ表示します。
-
テープの色分類用のクラス分類を追加
高速化のため、前処理でサイズを1/8にしています。
-
テープの色クラス分類のアノテーション及び学習
ここでは結果だけ表示します。
全てのビニールテープのすべての色を検出することが出来ました。
パラメータの設定が少ない分、クラス分類の方が簡単でした。
処理速度比較
条件
- 画像サイズ : 2500x2500
- CPU : Inter(R) Core™ i9-9900K 3.60Hz
- GPU : NVIDIA Geforce RTX 2080 Ti
- RAM : 32GB
領域検出(1/8)+輝度分類
領域検出(1/8)+クラス分類(1/8)
タスク | 輝度分類 | クラス分類 |
---|---|---|
処理時間(ms) | 31 | 75 |
となりました。 | ||
輝度分類はクラス分類と比べて設定に手間がかかりますが、 | ||
処理は高速であることがわかりました。 | ||
クラス数が少ない場合はそんなに手間ではないかもしれません。 | ||
今回はクラス分類も1/8にリサイズ(100x100未満)しているので元々高速でしたが、 | ||
画像が大きくなるにつれて処理速度の差は顕著になると思います。 |
輝度分類の使いどころ
- 処理時間の短縮
- 明確な色の基準がある場合
- クラス分類では上手くいかない場合(神技的なチューニング技術が必要かもしれません)
- 分類対象が増えた時に追加学習が不要(ブロックの追加は必要です)
機能が増えてきて色々なことが出来るようになった反面、
課題解決へのアプローチ方法が増えてきて、
どれを使ったら良いか迷うことが増えてきたと感じています。
なるべく迷わないように使いやすい機能の提供を心掛けていますが、
こうしたらもっと使いやすいのに、等ご意見頂ければと思います。
そしてAIの専門家でない人達が、
専門家でもびっくりするようなAIを作っていただける日をお待ちしております。
私のこともびっくりさせてください、インスピレーションが沸いてきそうです。
動画版もあります。
ビニールテープの例は以上となります。