コンピュータビジョンでは、セマンティックセグメンテーションは、同じラベルを持つピクセルが特定の特性を共有するように、既知のラベルセットからのクラスで画像内のすべてのピクセルを分類するタスクです。 入力画像のセグメンテーションマスクを生成します。 たとえば、次の画像は、 cat
ラベル。
11月2018では、 アマゾンセージメーカー SageMakerセマンティックセグメンテーションアルゴリズムの立ち上げを発表しました。 このアルゴリズムを使用すると、パブリックデータセットまたは独自のデータセットを使用してモデルをトレーニングできます。 人気のある画像セグメンテーションデータセットには、Common Objects in Context(COCO)データセットとPASCAL Visual Object Classes(PASCAL VOC)が含まれますが、それらのラベルのクラスは制限されているため、公開データセット。 この場合、あなたは使用することができます Amazon SageMakerグラウンドトゥルース 独自のデータセットにラベルを付けます。
この投稿では、次のソリューションを示します。
- GroundTruthを使用してセマンティックセグメンテーションデータセットにラベルを付ける
- GroundTruthからの結果をSageMakerの組み込みセマンティックセグメンテーションアルゴリズムに必要な入力形式に変換する
- セマンティックセグメンテーションアルゴリズムを使用してモデルをトレーニングし、推論を実行する
セマンティックセグメンテーションデータラベリング
セマンティックセグメンテーションの機械学習モデルを構築するには、データセットにピクセルレベルでラベルを付ける必要があります。 Ground Truthは、人間のアノテーターを使用するオプションを提供します Amazon Mechanical Turk、サードパーティベンダー、またはあなた自身の民間労働力。 労働力の詳細については、を参照してください。 労働力の作成と管理。 ラベリングの労働力を自分で管理したくない場合は、 Amazon SageMaker グラウンド トゥルース プラス は、高品質のトレーニングデータセットをすばやく作成し、コストを最大40%削減できる、新しいターンキーデータラベリングサービスとしてのもうXNUMXつの優れたオプションです。 この投稿では、Ground Truthの自動セグメント機能を使用してデータセットに手動でラベルを付け、MechanicalTurkの従業員を使用してクラウドソーシングにラベルを付ける方法を紹介します。
GroundTruthによる手動ラベル付け
2019年XNUMX月、Ground Truthは、セマンティックセグメンテーションラベリングユーザーインターフェースに自動セグメンテーション機能を追加して、ラベリングスループットを向上させ、精度を向上させました。 詳細については、を参照してください。 Amazon SageMakerGroundTruthでセマンティックセグメンテーションラベリングを実行する際のオブジェクトの自動セグメンテーション。 この新機能を使用すると、セグメンテーションタスクのラベル付けプロセスを高速化できます。 ぴったりとフィットするポリゴンを描画したり、ブラシツールを使用して画像内のオブジェクトをキャプチャしたりする代わりに、オブジェクトの最上部、最下部、左端、右端のXNUMXつのポイントのみを描画します。 Ground Truthは、これらのXNUMXつのポイントを入力として受け取り、Deep Extreme Cut(DEXTR)アルゴリズムを使用して、オブジェクトの周囲にぴったりとフィットするマスクを生成します。 画像のセマンティックセグメンテーションラベリングにGroundTruthを使用するチュートリアルについては、以下を参照してください。 画像セマンティックセグメンテーション。 以下は、オブジェクトのXNUMXつの極値点を選択した後、自動セグメンテーションツールがセグメンテーションマスクを自動的に生成する方法の例です。
MechanicalTurkの労働力によるクラウドソーシングのラベリング
大規模なデータセットがあり、数百または数千の画像に手動でラベルを付けたくない場合は、Mechanical Turkを使用できます。MechanicalTurkは、オンデマンドでスケーラブルな人間の労働力を提供し、人間がコンピューターよりも優れた仕事を完了できるようにします。 Mechanical Turkソフトウェアは、都合の良いときに断片的な仕事をしたいと思っている何千人もの労働者への求人を形式化します。 ソフトウェアはまた、実行された作業を取得し、それをコンパイルします。要求者は、満足のいく作業に対して労働者に支払います(のみ)。 Mechanical Turkの使用を開始するには、以下を参照してください。 AmazonMechanicalTurkの紹介.
ラベリングジョブを作成する
以下は、ウミガメのデータセットに対するMechanicalTurkのラベル付けジョブの例です。 ウミガメのデータセットはKaggleコンテストのものです ウミガメの顔検出、およびデモンストレーションの目的でデータセットの300枚の画像を選択しました。 ウミガメは公開データセットでは一般的なクラスではないため、大規模なデータセットにラベルを付ける必要がある状況を表すことができます。
- SageMakerコンソールで、 ラベル付けジョブ ナビゲーションペインに表示されます。
- 選択する ラベル付けジョブを作成する.
- 仕事の名前を入力してください。
- 入力データの設定選択 自動データ設定.
これにより、入力データのマニフェストが生成されます。 - 入力データセットのS3の場所、データセットのパスを入力します。
- タスクカテゴリ、選択する 画像.
- タスクの選択選択 セマンティックセグメンテーション.
- 労働者のタイプ選択 Amazon Mechanical Turk.
- タスクのタイムアウト、タスクの有効期限、およびタスクごとの価格の設定を構成します。
- ラベルを追加します(この投稿では、
sea turtle
)、およびラベル付けの指示を提供します。 - 選択する 創造する.
ラベリングジョブを設定した後、SageMakerコンソールでラベリングの進行状況を確認できます。 完了としてマークされたら、ジョブを選択して結果を確認し、次のステップに使用できます。
データセット変換
Ground Truthから出力を取得したら、SageMakerの組み込みアルゴリズムを使用して、このデータセットでモデルをトレーニングできます。 まず、SageMakerセマンティックセグメンテーションアルゴリズムの要求された入力インターフェイスとして、ラベル付けされたデータセットを準備する必要があります。
要求された入力データチャネル
SageMakerセマンティックセグメンテーションは、トレーニングデータセットがに保存されることを期待しています Amazon シンプル ストレージ サービス (Amazon S3)。 Amazon S3のデータセットは、XNUMXつのチャネルで提示されることが期待されています。 train
と1つの validation
、XNUMXつのディレクトリを使用します。XNUMXつは画像用、XNUMXつは注釈用です。 注釈は非圧縮のPNG画像であることが期待されます。 データセットには、注釈マッピングがどのように確立されるかを説明するラベルマップが含まれている場合もあります。 そうでない場合、アルゴリズムはデフォルトを使用します。 推論のために、エンドポイントは image/jpeg
コンテンツタイプ。 データチャネルに必要な構造は次のとおりです。
トレインディレクトリと検証ディレクトリのすべてのJPG画像には、同じ名前の対応するPNGラベル画像があります。 train_annotation
& validation_annotation
ディレクトリ。 この命名規則は、アルゴリズムがトレーニング中にラベルを対応する画像に関連付けるのに役立ちます。 列車、 train_annotation
、検証、および validation_annotation
チャネルは必須です。 注釈はシングルチャンネルPNG画像です。 この形式は、画像のメタデータ(モード)が、アルゴリズムが注釈画像を単一チャネルの8ビット符号なし整数に読み取るのに役立つ限り機能します。
GroundTruthラベリングジョブからの出力
Ground Truthラベリングジョブから生成された出力は、次のフォルダー構造になります。
セグメンテーションマスクはに保存されます s3://turtle2022/labelturtles/annotations/consolidated-annotation/output
。 各注釈画像は、ソース画像のインデックスとこの画像のラベル付けが完了した時刻にちなんで名付けられた.pngファイルです。 たとえば、以下は、Mechanical Turkの労働力(1_0-2022-02T10:17:41.png)によって生成されたソース画像(Image_04.724225.jpg)とそのセグメンテーションマスクです。 マスクのインデックスがソースイメージ名の番号とは異なることに注意してください。
ラベリングジョブからの出力マニフェストは、 /manifests/output/output.manifest
ファイル。 これはJSONファイルであり、各行はソース画像とそのラベルおよびその他のメタデータ間のマッピングを記録します。 次のJSON行は、表示されたソース画像とその注釈の間のマッピングを記録します。
ソース画像の名前はImage_1.jpgで、注釈の名前は0_2022-02-10T17:41:04.724225.pngです。 SageMakerセマンティックセグメンテーションアルゴリズムに必要なデータチャネル形式としてデータを準備するには、ソースJPG画像と同じ名前になるようにアノテーション名を変更する必要があります。 また、データセットをに分割する必要があります train
& validation
ソース画像と注釈のディレクトリ。
GroundTruthラベリングジョブからの出力を要求された入力形式に変換します
出力を変換するには、次の手順を実行します。
- ラベリングジョブのすべてのファイルをAmazonS3からローカルディレクトリにダウンロードします。
- マニフェストファイルを読み取り、注釈の名前をソース画像と同じ名前に変更します。
- トレインと検証のデータセットを分割します。
- セマンティックセグメンテーションアルゴリズムのデータチャネルに必要な形式でディレクトリを作成します。
- トレインイメージと検証イメージ、およびそれらの注釈を、作成されたディレクトリに移動します。
- 画像の場合は、次のコードを使用します。
- アノテーションには、次のコードを使用します。
- トレインと検証のデータセットとそれらのアノテーションデータセットをAmazonS3にアップロードします。
SageMakerセマンティックセグメンテーションモデルのトレーニング
このセクションでは、セマンティックセグメンテーションモデルをトレーニングする手順について説明します。
サンプルノートブックに従って、データチャネルを設定します
あなたはの指示に従うことができます セマンティックセグメンテーションアルゴリズムがAmazonSageMakerで利用可能になりました ラベル付けされたデータセットにセマンティックセグメンテーションアルゴリズムを実装します。 このサンプル ノート は、アルゴリズムを紹介するエンドツーエンドの例を示しています。 ノートブックでは、完全畳み込みネットワークを使用してセマンティックセグメンテーションモデルをトレーニングおよびホストする方法を学習します(FCN)を使用したアルゴリズム PascalVOCデータセット トレーニング用。 Pascal VOCデータセットからモデルをトレーニングする予定はないため、このノートブックのステップ3(データの準備)をスキップしました。 代わりに、私は直接作成しました train_channel
, train_annotation_channe
, validation_channel
, validation_annotation_channel
画像と注釈を保存したS3の場所を使用する:
SageMakerEstimatorで独自のデータセットのハイパーパラメーターを調整します
ノートブックをフォローして、SageMaker推定オブジェクトを作成しました(ss_estimator
)セグメンテーションアルゴリズムをトレーニングします。 新しいデータセット用にカスタマイズする必要があることのXNUMXつは、 ss_estimator.set_hyperparameters
:変更する必要があります num_classes=21
〜へ num_classes=2
(turtle
& background
)、そして私も変更しました epochs=10
〜へ epochs=30
10はデモ目的のみであるためです。 次に、設定してモデルトレーニングにp3.2xlargeインスタンスを使用しました instance_type="ml.p3.2xlarge"
。 トレーニングは8分で完了しました。 最高の みお (ユニオン上の平均交差)0.846は、エポック11で達成されます。 pix_acc
(正しく分類された画像内のピクセルの割合)0.925。これは、この小さなデータセットにとってはかなり良い結果です。
モデル推論の結果
低コストのml.c5.xlargeインスタンスでモデルをホストしました。
最後に、トレーニングされたセグメンテーションモデルの推論結果を確認するために、10個のカメ画像のテストセットを準備しました。
次の画像は結果を示しています。
ウミガメのセグメンテーションマスクは正確に見えます。MechanicalTurkのワーカーによってラベル付けされた300枚の画像データセットでトレーニングされたこの結果に満足しています。 また、次のような他の利用可能なネットワークを探索することもできます ピラミッドシーン解析ネットワーク(PSP) or DeepLab-V3 データセットを含むサンプルノートブック。
クリーンアップ
継続的なコストが発生しないように、終了したらエンドポイントを削除します。
まとめ
この投稿では、SageMakerを使用してセマンティックセグメンテーションデータのラベル付けとモデルトレーニングをカスタマイズする方法を示しました。 まず、自動セグメンテーションツールを使用してラベリングジョブを設定するか、Mechanical Turkの従業員(およびその他のオプション)を使用できます。 5,000を超えるオブジェクトがある場合は、自動データラベル付けを使用することもできます。 次に、Ground Truthラベリングジョブからの出力を、SageMakerの組み込みセマンティックセグメンテーショントレーニングに必要な入力形式に変換します。 その後、高速コンピューティングインスタンス(p2やp3など)を使用して、次のセマンティックセグメンテーションモデルをトレーニングできます。 ノート モデルをより費用効果の高いインスタンス(ml.c5.xlargeなど)にデプロイします。 最後に、数行のコードを使用して、テストデータセットの推論結果を確認できます。
SageMakerセマンティックセグメンテーションを始めましょう データラベリング & モデルトレーニング お気に入りのデータセットで!
著者について
カラヤン AWSProfessionalServicesのデータサイエンティストです。 彼女は、AWSクラウドサービスを使用して顧客がビジネス目標を達成できるよう支援することに情熱を注いでいます。 彼女は、組織が製造、自動車、環境の持続可能性、航空宇宙などの複数の業界にわたってMLソリューションを構築するのを支援してきました。
- '
- "
- 000
- 10
- 100
- 11
- 2019
- a
- 私たちについて
- 加速する
- 加速された
- 正確な
- 達成する
- 達成
- 越えて
- 追加されました
- 航空宇宙
- アルゴリズム
- アルゴリズム
- すべて
- Amazon
- 発表の
- 別の
- 周りに
- 仲間
- 自動化
- 自動的に
- 自動車
- 利用できます
- AWS
- 背景
- なぜなら
- BEST
- より良いです
- の間に
- ビルド
- 内蔵
- ビジネス
- キャプチャー
- 場合
- 一定
- 変化する
- チャンネル
- 選択する
- class
- クラス
- 分類された
- クラウド
- クラウドサービス
- コード
- コマンドと
- コンペ
- コンプリート
- コンピュータ
- コンピューター
- コンピューティング
- 信頼
- 領事
- コンテンツ
- 利便性
- 対応する
- コスト効率の良い
- コスト
- 作ります
- 作成した
- Customers
- カスタマイズ
- データ
- データサイエンティスト
- 深いです
- 実証します
- 展開します
- 異なります
- 直接に
- 描画
- 間に
- 各
- 可能
- 端から端まで
- エンドポイント
- 入力します
- 環境の
- 設立
- 例
- 除く
- 予想される
- 期待する
- 探る
- 極端な
- 顔
- 特徴
- 名
- フォロー中
- 形式でアーカイブしたプロジェクトを保存します.
- から
- 生成された
- 目標
- 良い
- グレー
- 素晴らしい
- ハッピー
- 助けました
- 助け
- ことができます
- 高品質
- 主催
- 認定条件
- How To
- HTTPS
- 人間
- 人間
- 何百
- 画像
- 画像
- 実装する
- 改善します
- include
- 含まれました
- 増える
- index
- 産業
- 情報
- インタフェース
- 交差点
- 導入
- IT
- ジョブ
- Jobs > Create New Job
- 既知の
- ラベル
- ラベリング
- ラベル
- 大
- 起動する
- LEARN
- 学習
- レベル
- 限定的
- LINE
- ライン
- リスト
- ローカル
- 場所
- 場所
- 長い
- 見て
- 機械
- 機械学習
- 管理します
- 義務的な
- 手動で
- 製造業
- 地図
- マッピング
- mask
- マスク
- 大規模な
- 機械的な
- かもしれない
- ML
- モデル
- 他には?
- の試合に
- 名
- 命名
- ナビゲーション
- ネットワーク
- ネットワーク
- 次の
- ノート
- 数
- オファー
- オプション
- オプション
- 組織
- その他
- 自分の
- 情熱的な
- パーセント
- 実行
- ポイント
- ポリゴン
- 人気
- 準備
- かなり
- ブランド
- プライベート
- プロセス
- 作り出す
- プロ
- 提供します
- は、大阪で
- 公共
- 目的
- すぐに
- RE
- 記録
- 表す
- の提出が必要です
- 必要
- 結果
- レビュー
- 同じ
- ド電源のデ
- 科学者
- SEA
- セグメンテーション
- 選択
- サービス
- サービス
- セッションに
- 設定
- シェアする
- 表示する
- 示す
- 簡単な拡張で
- 状況
- 小さい
- So
- ソフトウェア
- ソリューション
- split
- 開始
- ストレージ利用料
- 3つの柱
- ターゲット
- タスク
- チーム
- test
- ソース
- もの
- サードパーティ
- 数千
- 介して
- スループット
- 時間
- ツール
- トレーニング
- トレーニング
- 最適化の適用
- 組合
- つかいます
- ベンダー
- ビジョン
- 誰
- 仕事
- 労働者
- 労働人口
- 作品
- あなたの