EasyCV Mask2Former easily implements image segmentation
関連タグ:1.Alibaba Cloud ビッグデータコンサルティングサービス(リテール向け)
2. ビッグデータとは
画像セグメンテーションとは、ピクセルレベルでの画像分類を指します。分類の粒度に応じて、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションの 3 つのカテゴリに分けられます。画像セグメンテーションはコンピュータビジョンの主要な研究方向の 1 つであり、医用画像解析、自動運転、ビデオ監視、拡張現実、画像圧縮などの分野で重要な応用価値を持っています。EasyCV フレームワークでは、これら 3 種類のセグメンテーションの SOTA アルゴリズムを統合し、関連するモデルの重みを提供しています。EasyCV を使用すると、セグメンテーションマップの予測とカスタムセグメンテーションモデルのトレーニングを簡単に行えます。本稿では、EasyCV を使用したインスタンスセグメンテーション、パノプティックセグメンテーション、セマンティックセグメンテーションの実装方法と、関連するアルゴリズムの概要を説明します。
EasyCV は、COCO データセットでトレーニングされたインスタンスセグメンテーションモデルとパノプティックセグメンテーションモデル、および ADE20K でトレーニングされたセマンティックセグメンテーションモデルを提供しています。EasyCV クイックスタート( https://github.com/alibaba/EasyCV/blob/master/docs/source/quick_start.md )を参照して依存環境の設定が完了すれば、これらのモデルを直接使用して画像のセグメンテーションマップ予測をすぐに行えます。関連するモデルのリンクはリファレンスに記載されています。
本例の Mask2Former アルゴリズムは Deformable Attention を使用しているため(DETR シリーズのアルゴリズムでこのオペレーターを使用すると、収束速度と計算効率を効果的に向上できます)、このオペレーターの追加コンパイルが必要です。
cd thirdparty/deformable_ attention
python setup. py build install
Mask2FormerPredictor を使用した画像のインスタンスセグメンテーション予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_instance_export.pth',task_mode='instance')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
instance_ img = predictor. show_ instance(img, **predict_out[0])
cv2.imwrite('instance_out.jpg',instance_img)
出力結果は以下のようになります。
パノプティックセグメンテーション予測
Mask2FormerPredictor を使用したパノプティックセグメンテーションの予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_pan_export.pth',task_mode='panoptic')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
pan_ img = predictor. show_ panoptic(img, **predict_out[0])
cv2.imwrite('pan_out.jpg',pan_img)
出力結果は以下のようになります。
セマンティックセグメンテーション予測
Mask2FormerPredictor を使用したセマンティックセグメンテーションマップの予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_semantic_export.pth',task_mode='semantic')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
semantic_ img = predictor. show_ panoptic(img, **predict_out[0])
cv2.imwrite('semantic_out.jpg',semantic_img)
使用画像の出典:COCO データセット
Alibaba Cloud 機械学習プラットフォーム PAI での Mask2Former モデルの使用
PAI-DSW(Data Science Workshop)は、Alibaba Cloud 機械学習プラットフォーム PAI が開発したクラウドベースの IDE で、さまざまな開発者向けにインタラクティブなプログラミング環境を提供しています。DSW Gallery(リンク)では、DSW の活用方法やさまざまな機械学習アプリケーションの構築を簡単に学べるよう、多数のノートブック例を提供しています。DSW Gallery には、Mask2Former を使用した画像セグメンテーション用のサンプルノートブック(下図参照)も用意されています。ぜひお試しください。
Mask2Former アルゴリズムの解説
上記の例で使用されているモデルは Mask2Former に基づいて実装されています。Mask2Former は、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションを同時に実行できる統合セグメンテーションアーキテクチャで、SOTA の結果を達成しています。COCO データセットでのパノプティックセグメンテーション精度は 57.8 PQ、インスタンスセグメンテーション精度は 50.1 AP、ADE20K データセットでのセマンティックセグメンテーション精度は 57.7 mIoU です。
Mask2Former は、セグメンテーションをマスク分類の形式で扱います。すなわち、モデルを通じて一連のバイナリマスクを予測し、それを最終的なセグメンテーションマップに結合します。各バイナリマスクはカテゴリまたはインスタンスのいずれかを表現でき、セマンティックセグメンテーションやインスタンスセグメンテーションなど、異なるセグメンテーションタスクを実現します。
マスク分類タスクにおける核心的な課題は、バイナリマスクを効果的に学習する方法です。たとえば、先行研究の Mask R-CNN はバウンディングボックスで特徴領域を制限し、その領域内でセグメンテーションマップを予測していました。この方法のため、Mask R-CNN はインスタンスセグメンテーションのみしか実行できません。Mask2Former は DETR の手法を参照し、固定数のオブジェクトクエリを使用してバイナリマスクを表現し、Transformer Decoder でデコードしてマスク群を予測します。(補足:DETR の解説については、EasyCV に基づく DETR、DAB-DETR、Object Query のリファレンスを参照してください。)
DETR シリーズのアルゴリズムにおける重要な欠点の 1 つは、Transformer Decoder 内のクロスアテンションがグローバル特徴を処理することです。これにより、モデルが本当に注目したい領域に集中しにくくなり、収束速度と最終的なアルゴリズム精度が低下します。この問題に対し、Mask2Former はマスクアテンション付きの Transformer Decoder を提案しています。各 Transformer Decoder ブロックはアテンションマスクを予測し、しきい値 0.5 で二値化します。そして、そのアテンションマスクが次のブロックの入力として使用され、アテンションモジュールが計算時にマスクの前景部分のみに集中できるようになります。
モデル構造
Mask2Former は 3 つの部分で構成されています。
1. Backbone(ResNet、Swin Transformer)が画像から低解像度の特徴を抽出します。
2. Pixel Decoder が低解像度の特徴から段階的にアップサンプリングデコードを実行し、低解像度から高解像度への特徴ピラミッドを取得します。これは循環的に Transformer Decoder の V および K の入力として使用されます。マルチスケール特徴を使用して、異なるスケールの対象物に対する予測精度を確保します。

1 層の Transformer コードは以下のとおりです。(補足:モデルの収束速度をさらに高速化するため、Pixel Decoder 内で Deformable Attention モジュールが使用されています。)
3. マスクアテンション付きの Transformer Decoder は、Object Query と Pixel Decoder で得られたマルチスケール特徴を使用して、バイナリマスクマップをレイヤーごとに段階的に洗練し、最終結果を得ます。
中核部分のマスククロスアテンションでは、前のレイヤーで予測されたマスクを MultiheadAttention の attention_mask 入力として使用し、アテンションの計算をクエリの前景に制限します。具体的な実装コードは以下のとおりです。
補足:トレーニングの工夫
Pixel Decoder 内で、元画像の 1/32、1/16、1/8 のスケールの特徴ピラミッドがデコードされ、対応する Transformer Decoder ブロックの K および V の入力として使用されます。Deformable DETR の手法を参照し、正弦波位置エンベディングと学習可能なスケールレベルエンベディングを各入力に追加します。解像度の低い順に入力し、L 回繰り返します。
PointRend によりトレーニング中のメモリ消費を削減します。主に 2 つの部分に効果があります。a. ハンガリアンアルゴリズムで予測マスクと正解ラベルをマッチングする際、完全なマスクマップの代わりに均一にサンプリングされた K 個の点集合を使用してマッチングコストを計算します。b. 損失の計算時に、完全なマスクマップの代わりに重点サンプリング戦略に従ってサンプリングされた K 個の点集合を使用して損失を計算します。(実験結果により、PointRend 方式に基づく損失計算がモデルの精度を効果的に向上させることが示されています。)
a. セルフアテンションとクロスアテンションの順序を入れ替えました。セルフアテンション→クロスアテンションを、クロスアテンション→セルフアテンションに変更しました。
b. クエリを学習可能なパラメーターにしました。クエリの教師あり学習は、領域提案と同様の役割を果たします。実験により、学習可能なクエリがマスク提案を生成できることが実証されています。
c. Transformer Decoder 内のドロップアウト操作を削除しました。実験により、この操作が精度を低下させることが示されています。
2. ビッグデータとは
1:はじめに
画像セグメンテーションとは、ピクセルレベルでの画像分類を指します。分類の粒度に応じて、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションの 3 つのカテゴリに分けられます。画像セグメンテーションはコンピュータビジョンの主要な研究方向の 1 つであり、医用画像解析、自動運転、ビデオ監視、拡張現実、画像圧縮などの分野で重要な応用価値を持っています。EasyCV フレームワークでは、これら 3 種類のセグメンテーションの SOTA アルゴリズムを統合し、関連するモデルの重みを提供しています。EasyCV を使用すると、セグメンテーションマップの予測とカスタムセグメンテーションモデルのトレーニングを簡単に行えます。本稿では、EasyCV を使用したインスタンスセグメンテーション、パノプティックセグメンテーション、セマンティックセグメンテーションの実装方法と、関連するアルゴリズムの概要を説明します。
EasyCV を使用したセグメンテーションマップの予測
EasyCV は、COCO データセットでトレーニングされたインスタンスセグメンテーションモデルとパノプティックセグメンテーションモデル、および ADE20K でトレーニングされたセマンティックセグメンテーションモデルを提供しています。EasyCV クイックスタート( https://github.com/alibaba/EasyCV/blob/master/docs/source/quick_start.md )を参照して依存環境の設定が完了すれば、これらのモデルを直接使用して画像のセグメンテーションマップ予測をすぐに行えます。関連するモデルのリンクはリファレンスに記載されています。
インスタンスセグメンテーション予測
本例の Mask2Former アルゴリズムは Deformable Attention を使用しているため(DETR シリーズのアルゴリズムでこのオペレーターを使用すると、収束速度と計算効率を効果的に向上できます)、このオペレーターの追加コンパイルが必要です。
cd thirdparty/deformable_ attention
python setup. py build install
Mask2FormerPredictor を使用した画像のインスタンスセグメンテーション予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_instance_export.pth',task_mode='instance')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
instance_ img = predictor. show_ instance(img, **predict_out[0])
cv2.imwrite('instance_out.jpg',instance_img)
出力結果は以下のようになります。
パノプティックセグメンテーション予測
Mask2FormerPredictor を使用したパノプティックセグメンテーションの予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_pan_export.pth',task_mode='panoptic')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
pan_ img = predictor. show_ panoptic(img, **predict_out[0])
cv2.imwrite('pan_out.jpg',pan_img)
出力結果は以下のようになります。
セマンティックセグメンテーション予測
Mask2FormerPredictor を使用したセマンティックセグメンテーションマップの予測
import cv2
from easycv.predictors. segmentation import Mask2formerPredictor
predictor = Mask2formerPredictor(model_path='mask2former_semantic_export.pth',task_mode='semantic')
img = cv2.imread('000000123213.jpg')
predict_ out = predictor(['000000123213.jpg'])
semantic_ img = predictor. show_ panoptic(img, **predict_out[0])
cv2.imwrite('semantic_out.jpg',semantic_img)
使用画像の出典:COCO データセット
Alibaba Cloud 機械学習プラットフォーム PAI での Mask2Former モデルの使用
PAI-DSW(Data Science Workshop)は、Alibaba Cloud 機械学習プラットフォーム PAI が開発したクラウドベースの IDE で、さまざまな開発者向けにインタラクティブなプログラミング環境を提供しています。DSW Gallery(リンク)では、DSW の活用方法やさまざまな機械学習アプリケーションの構築を簡単に学べるよう、多数のノートブック例を提供しています。DSW Gallery には、Mask2Former を使用した画像セグメンテーション用のサンプルノートブック(下図参照)も用意されています。ぜひお試しください。
Mask2Former アルゴリズムの解説
上記の例で使用されているモデルは Mask2Former に基づいて実装されています。Mask2Former は、セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションを同時に実行できる統合セグメンテーションアーキテクチャで、SOTA の結果を達成しています。COCO データセットでのパノプティックセグメンテーション精度は 57.8 PQ、インスタンスセグメンテーション精度は 50.1 AP、ADE20K データセットでのセマンティックセグメンテーション精度は 57.7 mIoU です。
コアとなる考え方
Mask2Former は、セグメンテーションをマスク分類の形式で扱います。すなわち、モデルを通じて一連のバイナリマスクを予測し、それを最終的なセグメンテーションマップに結合します。各バイナリマスクはカテゴリまたはインスタンスのいずれかを表現でき、セマンティックセグメンテーションやインスタンスセグメンテーションなど、異なるセグメンテーションタスクを実現します。
マスク分類タスクにおける核心的な課題は、バイナリマスクを効果的に学習する方法です。たとえば、先行研究の Mask R-CNN はバウンディングボックスで特徴領域を制限し、その領域内でセグメンテーションマップを予測していました。この方法のため、Mask R-CNN はインスタンスセグメンテーションのみしか実行できません。Mask2Former は DETR の手法を参照し、固定数のオブジェクトクエリを使用してバイナリマスクを表現し、Transformer Decoder でデコードしてマスク群を予測します。(補足:DETR の解説については、EasyCV に基づく DETR、DAB-DETR、Object Query のリファレンスを参照してください。)
DETR シリーズのアルゴリズムにおける重要な欠点の 1 つは、Transformer Decoder 内のクロスアテンションがグローバル特徴を処理することです。これにより、モデルが本当に注目したい領域に集中しにくくなり、収束速度と最終的なアルゴリズム精度が低下します。この問題に対し、Mask2Former はマスクアテンション付きの Transformer Decoder を提案しています。各 Transformer Decoder ブロックはアテンションマスクを予測し、しきい値 0.5 で二値化します。そして、そのアテンションマスクが次のブロックの入力として使用され、アテンションモジュールが計算時にマスクの前景部分のみに集中できるようになります。
モデル構造
Mask2Former は 3 つの部分で構成されています。
1. Backbone(ResNet、Swin Transformer)が画像から低解像度の特徴を抽出します。
2. Pixel Decoder が低解像度の特徴から段階的にアップサンプリングデコードを実行し、低解像度から高解像度への特徴ピラミッドを取得します。これは循環的に Transformer Decoder の V および K の入力として使用されます。マルチスケール特徴を使用して、異なるスケールの対象物に対する予測精度を確保します。

1 層の Transformer コードは以下のとおりです。(補足:モデルの収束速度をさらに高速化するため、Pixel Decoder 内で Deformable Attention モジュールが使用されています。)
3. マスクアテンション付きの Transformer Decoder は、Object Query と Pixel Decoder で得られたマルチスケール特徴を使用して、バイナリマスクマップをレイヤーごとに段階的に洗練し、最終結果を得ます。
中核部分のマスククロスアテンションでは、前のレイヤーで予測されたマスクを MultiheadAttention の attention_mask 入力として使用し、アテンションの計算をクエリの前景に制限します。具体的な実装コードは以下のとおりです。
補足:トレーニングの工夫
1. 効率的なマルチスケール戦略
Pixel Decoder 内で、元画像の 1/32、1/16、1/8 のスケールの特徴ピラミッドがデコードされ、対応する Transformer Decoder ブロックの K および V の入力として使用されます。Deformable DETR の手法を参照し、正弦波位置エンベディングと学習可能なスケールレベルエンベディングを各入力に追加します。解像度の低い順に入力し、L 回繰り返します。
2. PointRend
PointRend によりトレーニング中のメモリ消費を削減します。主に 2 つの部分に効果があります。a. ハンガリアンアルゴリズムで予測マスクと正解ラベルをマッチングする際、完全なマスクマップの代わりに均一にサンプリングされた K 個の点集合を使用してマッチングコストを計算します。b. 損失の計算時に、完全なマスクマップの代わりに重点サンプリング戦略に従ってサンプリングされた K 個の点集合を使用して損失を計算します。(実験結果により、PointRend 方式に基づく損失計算がモデルの精度を効果的に向上させることが示されています。)
3. 最適化の改善
a. セルフアテンションとクロスアテンションの順序を入れ替えました。セルフアテンション→クロスアテンションを、クロスアテンション→セルフアテンションに変更しました。
b. クエリを学習可能なパラメーターにしました。クエリの教師あり学習は、領域提案と同様の役割を果たします。実験により、学習可能なクエリがマスク提案を生成できることが実証されています。
c. Transformer Decoder 内のドロップアウト操作を削除しました。実験により、この操作が精度を低下させることが示されています。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
