[Amazon SageMaker] オブジェクト検出におけるGround Truthを中心としたデータセット作成環境について

2020.04.27

1 はじめに

CX事業本部の平内(SIN)です。

Deep Learningでオブジェクト検出をする場合、データの準備作業は、非常に重要になると思います。

Amazon SageMaker(以下、SageMaker)では、Ground Truthというサービスが提供されており、作業の分担や外部への展開などが軽易に行えます。

そして、Ground Truthで作成されたデータは、Amazon RekognitionCustom Labelsや、SageMakerのビルトインアルゴリズムであるobject-detectionで、そのまま利用可能です。

しかし、実際に学習を始める前には、データの品質や精度を一定の水準に保つ作業が、非常に大事になってきます。

最近、その事を念頭に、Ground Truthで作成されたデータ(形式)を中心に、その一部修正したり、確認したり、また、追加する作業を、色々確認してみました。

図中の各番号に関する内容は、ブログで紹介させて頂きました。
① VoTTで作成したデータをCustom Labelsで利用可能なAmazon SageMaker Ground Truth形式に変換してみました
② Amazon SageMaker Ground Truth で作成したデータをオブジェクト検出で利用可能なイメージ形式に変換してみました
③ Amazon SageMaker Ground Truth で作成したデータをオブジェクト検出で利用可能なRecordIO形式に変換してみました
④ Amazon SageMaker Ground Truth で作成したデータを使用してオブジェクト検出でモデルを作成してみました
⑤ Amazon SageMaker Ground Truth で作成したデータのビューアーを作ってみました
⑥ Amazon SageMaker Ground Truth で作成したデータをVoTT形式のデータに変換してみました
⑦ Amazon SageMaker Ground Truth で作成したデータをOpenCVで増幅してみました
⑧ 撮影と同時にアノテーションを追加してAmazon SageMaker Ground Truth形式のデータを作成してみました

今回は、上記ブログの総括という位置づけで、各種の作業や、変換について纏めました。

2 イメージ形式・RecordIO形式・拡張マニフェストイメージ形式(②、③、④)

SageMakerのオブジェクト検出アルゴリズム(object-detection)では、下記の3種類のデータ形式が利用可能です。(カッコ内は図中の矢印の番号になります)

  • イメージ形式( ② )
  • RecordIO形式( ③ )
  • 拡張マニフェストイメージ形式( ④ )

イメージ形式は、画像とアノテーション情報(JSON)が別になっているため、一番、分かりやすいのですが、推奨されるのは、速度が出せるRecordIO形式となっています。

優先的には、RecordIO形式を利用し、「データセットに不安がある」というような場合に、、イメージ形式で確かめながら作業する手法をとっています。

また、Ground Truthの出力がそのまま利用できる拡張マニフェストイメージ形式は、非常に簡単ですが、既存のmodel(model.tag.gz)を指定して、続きの学習を進める事ができる段階的トレーニングでは、利用できないので、「Epoch数を徐々に増やしながら確認してみよう」というような場合には利用できないと思います。

なお、SageMakerで使用するためには、学習データと検証データを用意する必要がありますが、これを適切に分割できるように各種ツールでは工夫を入れております。

3 VoTT(①、⑥)

ローカルで、アノテーション作業ができる、 VoTT(Visual Object Tagging Tool)は、非常に快適なツールです。

是非、作業環境に組み込みたいのですが、如何せんMicrosoft製であることか、SageMakerやRekognitionに利用可能なデータを、Exportする機能はありません。

そこで、Ground Truth形式のデータを相互に変換できるツールを作成してみました。

VoTTでは、アノテーション情報を保持するファイルが、VoTTによって生成されるため、Ground Truthの出力をVoTTに変換する場合は、「VoTTのプロジェクトを先に作る必要がある」という成約が残りましたが、データ自体はJSON形式なので、相互の変換は問題有りません。

Ground Truthで整備したデータの一部を修正したいような場合には、非常に有効に利用可能だと感じています。

4 ビューア(⑤)

ビューアーは、単純に、Ground Truthのデータをブラウザで一覧するだけのものですが、アノテーション情報も表示されますので、全体を俯瞰するには便利だと思います。

5 自動アノテーション(⑧)

なんだかんだ言ってもアノテーション作業は、時間を要し大変です。そこで、一定の条件下での利用となりますが、画像を撮影すると同時に、アノテーションを行うツールを作成しました。

クリックするだけで、画像の撮影とアノテーションが、どんどん出来ますので、「とりあえずデータを沢山作りたい」というような場合、便利に使用できるのでは無いでしょうか。

6 増幅(⑦)

OpenCVを使用して、次の手法を使用して、画像の増幅を行うツールを作成しました。

  • 彩度
  • 明度
  • コントラスト
  • モザイク
  • ガウスノイズ
  • ごま塩ノイズ

増幅することで、アノテーションの作業が発生することが無いように、回転や変形などは行わず、増幅された画像に対応したアノテーション情報も併せて増幅されるようになっています。

各手法は、パラメータを指定することで、色々とバリエーションを展開できますが、どういうパラメータで増幅するのが、適切かという指標は、ちょっと分かっておりません。

利用目的(環境)を想定して、工夫が必要になると考えています。 例えば、小さい対象物が検出対象となるなら、ドット数を下げたデータを用意するという意味で、モザイク処理したものを利用したりするのは有効ではないかと考えております。

7 最後に

今回は、Ground Truthで作成されたデータ(形式)を中心した、作業環境について、これまで確認してきたことを列挙してみました。

オブジェクト検出では、データセットの準備が非常に重要だという事を認識し、少しでも精度を上げて行きたいと思います。