Amazon Web Services ブログ
Amazon Rekognition Custom Labels でモデル精度を向上するための Tips
この記事は Tips to improve your Amazon Rekognition Custom Labels model (記事公開日: 2022 年 9 月 9 日) を翻訳したものです。
この記事は、Amazon Rekognition Custom Labels を使用してコンピュータビジョンモデルの精度を向上するためのベストプラクティスを説明します。Rekognition Custom Labels は、画像分類や物体検出などをユースケースとして、カスタムコンピュータービジョンモデルを構築するフルマネージドサービスです。Rekognition Custom Labels は、Amazon Rekognition に搭載されている、多くのカテゴリにまたがった数千万枚の画像で事前にトレーニングされたモデルを基に構築されています。何千枚もの画像を用意する代わりに、数百枚以下のユースケースに特化した少ないトレーニング画像を使って、利用を開始できます。Rekognition Custom Labels は、モデルの構築に伴う複雑さを軽減できます。例えば、学習データの検査、適切な ML アルゴリズムの選択、インスタンスタイプの選択、様々なハイパーパラメータの学習、そして最適な学習済みモデルの自動的なデプロイなど行う機能があります。また、画像のラベル付け、モデルのトレーニング、モデルのデプロイ、テスト結果の可視化など、ML ワークフロー全体を管理するための使いやすいインターフェースを AWS Management Console で提供します。
Rekognition Custom Labels を利用するにあたって、モデルの精度をより向上したいシチュエーションがあります。モデルの精度に影響を与える重要なポイントを、次に挙げます。
- 画像のアングル
- 画像の解像度
- 画像のアスペクト比
- 光の当たり具合
- 背景の明瞭さ・鮮やかさ
- カラーコントラスト
- サンプルデータのサイズ
この記事ではモデルのパフォーマンスを向上させるために、次に挙げているステップのうち、「ステップ2 : 関連するデータの収集」と「ステップ3 : トレーニングメトリクスの評価」に関するベストプラクティスに焦点を当てます。
次のリストは、本番品質に向けて Rekognition Custom Labels をトレーニングするための一般的なステップです。
- 分類のレビュー : 画像で分類を行いたい属性や商品などの一覧を定義します。
- 関連するデータの収集 : これは最も重要なステップで、実際に本番で利用する画像に合わせた形で、事前学習データを収集する必要があります。背景や照明、カメラアングルを変えて、実物の画像を撮影することもあります。そして、収集した画像を分割して、トレーニングデータセットとテストデータセットを作成します。テスト用データセットには、実際に現実世界で撮影した画像を含めた方が良く、人工的に合成して生成された画像は含めない方がよいでしょう。収集したデータのアノテーションは、モデルの性能を左右する重要なものです。バウンディングボックスがオブジェクトの周りに適切に設定され、ラベルが正確であることを確認します。適切なデータセットを構築する際に考慮すべきいくつかのヒントについては、この記事の後半で説明します。
- トレーニングメトリクスの評価 : 先ほどのデータセットを使ってモデルを学習し、F1 スコア、精度、リコールなどの学習メトリクスを確認します。トレーニングメトリクスの分析方法については、この記事の後半で詳しく説明します。
- モデルの評価 : モデルの精度を評価するために、トレーニングに使用されていない画像セットを利用します。トレーニング用の画像セットは、事前に正解ラベルがわかっているため、モデルの推論結果と比較することでモデルの評価ができます。このステップは、本番環境でモデルが期待通りに動作することを確認するために、常に実行する必要があります。
- 再トレーニング (Option) : 一般的には、機械学習モデルは、望ましい結果となるように繰り返し学習が行われますが、コンピュータビジョンのモデルも同様です。ステップ 4 の結果を見て、さらに画像を追加する必要があるかどうかを確認し、上記のステップ 3 ~ 5 を繰り返します。
関連するデータの収集
関連するデータ収集は、本番品質の Rekognition Custom Labels モデルをトレーニングする上で最も重要なステップです。具体的には、トレーニングデータとテストデータの 2 つをどのように用意するかという観点です。トレーニングデータはモデルのトレーニングに利用します。適切なトレーニングデータを用意することが必要です。Rekognition Custom Labels モデルは、テストデータを基に F1 スコアの最適化を行い、最も適したモデルを選択します。そのため、実際に分類を行う状況に合わせた現実世界の画像を、テスト用データセットとして収集することが必要です。
画像の数
分類したいラベルごとに、最低 15 ~ 20 枚の画像を用意することをお勧めします。ユースケースを反映し、より多くのパターンで画像を用意することで、モデルの精度が向上します。
データセット間のバランス
データセットの各ラベルは、同じくらいのサンプル数であることが理想的です。各ラベルの間で、用意したサンプル数に大きな格差があるのは良い状況とは言えません。例えば、用意したデータセットに含まれている 1 つのラベルについて、1,000 枚の画像を用意したとします。一方、他のラベルでは 50 枚の画像を用意したとすると、これはデータセット間でバランスが悪いと言えます。画像数が最も少ないラベルと最も多いラベルの比率が 1:50 のような偏ったシナリオは避けることをお勧めします。
画像の種類を変える
トレーニングデータセットとテストデータセットの画像は、現実世界で利用する状況に合わせると良いです。例えば、リビングルームとベッドルームの画像を分類したい場合、両方の部屋の空っぽの画像と家具付きの画像を用意した方が良いです。
以下は、家具付きのリビングルームの画像の例です。
これに対して、以下は家具のないリビングルームの例です。
以下は、家具付きベッドルームの画像の例です。
以下は、家具なしベッドルームの画像の例です。
様々な背景
異なる背景を持つ画像を含めた方が良いです。自然な状況の画像は、無地の背景よりも良い結果に繋がることがあります。
以下は、ある家の庭を撮影した画像例です。
以下は、背景を変えた別の庭の画像例です。
様々な照明条件
推論時に発生するさまざまな照明条件(例えば、フラッシュの有無など)を網羅するために、照明が変化する画像を用意した方が良いです。また、彩度、色相、明るさが変化する画像も用意すると良いでしょう。
以下は、通常の光の下で花を撮影した画像の例です。
一方、次の画像は、同じ花を明るい光の下で撮影したものです。
様々なアングル
対象物をさまざまな角度から撮影した画像を用意した方が良いです。これにより、モデルは対象物のさまざまな特性を学習することができます。
次の画像は、同じ寝室をさまざまな角度から撮影したものです。
様々な種類の画像を準備することが難しい場合もあり得ます。そのような場合、トレーニングデータセットの一部として合成画像を利用する事も可能です。一般的な画像拡張技術の詳細については、Data Augmentation を参照してください。
ネガティブラベルを追加する
ネガティブラベルを追加することで、画像分類モデルの精度を高めることができます。正解ラベルのいずれにも一致しない画像に追加するラベルがネガティブラベルです。例えば、次の画像は、完全に成長した花を識別するために使用されるラベルを表しています。
not_fully_grown
というネガティブなラベルを付けることで、fully_grown
のラベルにはない特徴をモデルに学習させることができます。
ラベル混在の対応
テストデータを使った推論テスト結果を分析し、トレーニングやテストデータで見落としてしまったパターンを認識します。画像を目で見て検証することで、そのようなパターンを簡単に発見できる場合があります。例えば、次の画像は「裏庭」と「中庭」のラベルを区別するのに苦労している例です。
この場合、データセット内のこれらのラベルにさらに画像を追加し、また各ラベルが区別できるようにラベルを再定義することで、モデルの精度を上げることができます。
データ拡張
Rekognition Custom Labels の内部では、画像のランダムな切り取り、カラージッター、ランダムなガウス雑音など、モデルトレーニングのために様々なデータ拡張を行います。一方、特定のユースケースにおいて、トレーニングデータに人の手で明確なデータ拡張を加えることが良い結果に結びつくことがあります。例えば、カラー画像・白黒画像の両方で動物を検出したい場合、同じ画像の白黒バージョンとカラーバージョンをトレーニングデータに加えることで、より高い精度を得られる可能性があります。
ただ、テストデータへの拡張は、本番のユースケースを反映した拡張でない限り、お勧めしません。
トレーニングメトリクスの評価
F1 スコア、精度、リコール、想定しきい値は、Rekognition Custom Labels を使用したモデルトレーニングの際に自動出力されるメトリクスです。モデルは、提供されたテストデータセットに基づいて、最高の F1 スコアとなるように最適化されます。想定しきい値もまた、テストデータセットに基づいて生成されます。この閾値は、精度やリコールといったビジネス要件に基づいて調整することができます。
想定しきい値は、テスト用データセットに基づいて設定されるため、適切なテスト用データセットは実際の本番ユースケースに合わせる必要があります。テストデータセットが本番ユースケースと乖離がある場合、人為的に高い F1 スコアが出てしまうことや、本番環境でモデル精度が低くなってしまうことがあります。
これらの自動出力されるメトリクスは、モデルを初期評価する際に有用です。一方、モデルの精度について、本番品質を目指す場合は、実際の現実世界に合わせた外部データセット(500~1,000枚の未利用画像)を活用して精度の評価を行うことがお勧めです。実際の画像を利用して評価することで、本番品質で利用できるモデル精度か確認できます。また、テストを通じて欠落したパターンを発見できた場合はモデルを再トレーニングすることで、さらなる改善が出来ます。F1 スコアと外部データセットの間にミスマッチが見られる場合、テストデータが現実世界のユースケースを反映しているかどうかを検証することをお勧めします。
まとめ
この投稿では、Rekognition Custom Labels モデルを改善するためのベストプラクティスを紹介しました。ぜひ、Rekognition Custom Labels の詳細を学び、画像を用意して試してみてください。
筆者
Amit Gupta
Yogesh Chaturvedi
Hao Yang
Pashmeen Mistry
翻訳はソリューションアーキテクトの杉山 卓が担当しました。原文はこちらです。