LoginSignup
4
1

More than 1 year has passed since last update.

【UiPath】物体検出モデルを使ってみる(AI Center)

Posted at

はじめに

この記事はUiPathブログ発信チャレンジ2022サマーの4日目の記事です。

昨日は@RPA_Journeyさんの記事、明日は@masatomixさんの記事です。


AI Centerでプリセットされている機械学習モデル「物体検出(Object Detection)」を深堀りしてみます。
AI Centerの大まかな使い方は以下の記事で説明しています。

つかうもの

※クラウド環境は2022年6月時点のもの

  • Automation Cloud(AI Center) Enterprise版

モデルの概要

概要1.png
物体検出とは、深層学習(ディープラーニング)を使用したデジタル画像内に映っている特定のクラス(人間、建物、車といったカテゴリ)の物体を検出するモデルです。
AI Centerで用意されているものは、YOLO v3を使ったモデルです。GPUはサポートさせていません。

COCOデータセットを使って事前学習がされているので、以下の80個のクラスであれば、再トレーニングをしなくても検出することが可能です。
一覧にないクラスを検出するのであれば、自分でデータセットを準備し、再トレーニングします。

cocoデータセット1.png

事前学習済みのクラス
person, backpack, umbrella, handbag, tie, suitcase
bicycle, car, motorcycle, airplane, bus, train, truck, boat
traffic light, fire hydrant, stop sign, parking meter, bench
bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe
frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket
banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake
chair, couch, potted plant, bed, dining table, toilet
tv, laptop, mouse, remote, keyboard, cell phone
microwave, oven, toaster, sink, refrigerator
book, clock, vase, scissors, teddy bear, hair drier, toothbrush

データセット

再トレーニングするためのデータは、PASCAL VOCという形式に準拠したセットを用意する必要があります。

  • 画像ファイル(.jpgまたは.pjeg)とアノテーションファイル(.xml)の1対1で用意する
  • 画像ファイルとアノテーションファイルのファイル名は同じにする
  • 画像ファイルは同じサイズに統一する(推奨 800*600)

データセット1.png
データセット2.png

用意するデータセットの目安です(あくまで参考です)。

  • 最低限のレベルは、1クラスに対して、100枚程度
  • 標準的なレベルで、1クラスに対して、500~1,000枚程度
  • 高精度(似た物体を分けて認識するなど)なレベルで、1クラスに対して、5,000枚以上

データ準備とラベリング作業は、かなり大変です。
アノテーションファイルを手作業で作成するのは、コスト的に現実的ではないので、何かしらのツールを使います。
オープンデータセットを活用する手もあります(ものによっては、PASCAL VOCでダウンロード可能です)。

パイプライン

フルパイプライン(トレーニング+評価)のみサポートされています。
実行時に指定できる環境変数(ハイパーパラメータ)は、以下の通りです。

  • learning_rate:学習率(ディープラーニングを実行する際、勾配をどれくらい変化させるかを示したもの)。デフォルトは、0.0001。

フルパイプラインの実行時間は、経験上、250件程度のデータセットを用意して、6時間半くらいかかりました(あくまで参考です)。

実行結果

MLスキル1.png

入力は、画像ファイルのパスです(String型)。
出力は、検出したクラスとスコアを含むJSONです(String型)。
スコアは、0~1の間の数値で、1に近いほど信頼できる予測となります。
検出した物体の座標値は出力されないので、これらが欲しい場合は、Pythonのコードを修正する必要がありそうです(試したことはありません)。

{
  "Predicted Class ": "[
    {'class': 'package', 'score': ' 0.93'}
  ]",
  "Predicted ByteArray": "..."
}

「Predicted ByteArray」はエンコードされた画像データです。以下の処理で画像ファイルに戻すことができます。
sample1.jpg
ファイル作成1.png

おわりに

実際の業務で使用する場合は、COCOデータセットではなく、業務データを使って再学習するケースがほとんどかと思います。
物体検出モデルはよく使用されるモデルなので、使い方を覚えておいて損はないかと思います。
機会があれば、他のモデルも試したいと思います。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1