画像の背景を削除する
重要
この機能は非推奨になりました。 2025 年 1 月 10 日に、Azure AI Image Analysis 4.0 Segment API と背景削除サービスは廃止されます。 この日付以降、このサービスに対するすべての要求は失敗します。
モデルのスムーズな操作を維持するには、オープンソースの Florence 2 モデルをインストールし、その Region to segmentation (領域からセグメント化) 機能を使用します。これにより、同様の背景削除操作が可能になります。
この記事では、Image Analysis 4.0 API を呼び出して画像をセグメント化する (前景と背景を分離する) 方法を見ていただきます。 また、返された情報を解析する方法も示します。
重要
背景の削除は、REST API を直接呼び出したときにのみ使用できます。 SDK では使用できません。
前提条件
このガイドは、クイックスタートページで説明されている手順に正しく従っていることを前提としています。 これは、以下を意味します。
- このガイドでは、既に Vision リソースを作成し、キーとエンドポイント URL を取得していることを前提としています。
- サービスへの
curl.exe
呼び出しが正常に行われています (または別のツールが使用されています)。 ここでの例に基づいて、curl.exe
呼び出しを変更します。
こちらのクイックスタートでは、画像から視覚的特徴量を抽出する方法が示されています。 ただし、その概念は背景の削除に似ています。 そのため、そのクイックスタートを最初に行ってから変更するとメリットがあります。
重要
背景の削除は、特定の Azure リージョンでのみ使用できます。 「利用可能なリージョン」を参照してください
サービスに対する認証
Image Analysis サービスに対して認証するには、Computer Vision キーとエンドポイント URL が必要です。
ヒント
キーは、コードに直接含めないようにし、公開しないでください。 Azure Key Vault などのその他の認証オプションについては、Azure AI サービスのセキュリティに関する記事を参照してください。
認証は、HTTP 要求ヘッダー Ocp-Apim-Subscription-Key を追加し、それを Vision キーに設定することで行われます。 呼び出す URL は <endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview
であり、<endpoint>
は一意の Computer Vision エンドポイント URL です。 この URL に追加する別のクエリ文字列については、「モードを選択する」セクションを参照してください。
分析する画像を選択する
このガイドにあるコードでは、URL によって参照されるリモートの画像を使用します。 画像解析機能の全機能を確認するには、さまざまな画像を自分で試してみることをお勧めします。
リモートの画像を分析する場合、要求本文を {"url":"https://learn.microsoft.com/azure/ai-services/computer-vision/images/windows-kitchen.jpg"}
のような形式にして、画像の URL を指定します。 Content-Typeは application/json
である必要があります。
ローカルの画像を分析するには、バイナリ画像データを HTTP 要求本文に配置します。 コンテンツ タイプは application/octet-stream
または multipart/form-data
である必要があります。
モードを選択する
クエリ文字列の mode は、次の 2 つの値のどちらかに設定します。 画像のセグメント化を行いたい場合、このクエリ文字列は必須です。
URL パラメーター | 値 | 説明 |
---|---|---|
mode |
backgroundRemoval |
検出された前景 オブジェクトのイメージを、透明な背景で出力します。 |
mode |
foregroundMatting |
検出された前景オブジェクトの不透明度を示すグレースケールアルファマット画像を出力します。 |
backgroundRemoval の設定された URL は次のようになります:<endpoint>/computervision/imageanalysis:segment?api-version=2023-02-01-preview&mode=backgroundRemoval
サービスから結果を取得する
このセクションでは、API 呼び出しを行い、結果を解析する方法について説明します。
サービスから Content-Type: image/png
と共に 200
HTTP 応答が返され、その本文には、返された PNG 画像がバイナリストリームの形式で含まれています。
例として、次の図では背景の削除が実行されているとします。
背景の削除の呼び出しが成功した場合、次の 4 チャネル PNG 画像が backgroundRemoval
モードの応答です。
次の 1 チャネル PNG 画像が foregroundMatting
モードの応答です。
API は、foregroundMatting
モードの場合は元のサイズと同じサイズの画像を返しますが、backgroundRemoval
モードの場合は (画像の縦横比を保持しながら) 最大 1600 万画素の画像を返します。
エラー コード
エラーが発生した場合、Image Analysis サービスの応答には、エラー コードとエラー メッセージを含む JSON ペイロードが含まれています。 また、内部エラー コードとメッセージの形式で他の詳細を含めることもできます。 次に例を示します。
{
"error":
{
"code": "InvalidRequest",
"message": "Analyze query is invalid.",
"innererror":
{
"code": "NotSupportedVisualFeature",
"message": "Specified feature type is not valid"
}
}
}
一般的なエラーとその原因の一覧を次に示します。 リスト アイテムは次の形式で表示されます。
- HTTP 応答コード
- JSON 応答内のエラー コードとメッセージ
- [省略可能] JSON 応答内のエラー コードとメッセージ
- JSON 応答内のエラー コードとメッセージ
一般的なエラーの一覧:
400 Bad Request
InvalidRequest - Image URL is badly formatted or not accessible
画像の URL が有効でパブリックにアクセスできることを確認します。InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes
圧縮したり、サイズを変更したりして、画像のサイズを小さくし、要求を再送信します。InvalidRequest - The feature 'Caption' is not supported in this region
この機能は、特定の Azure リージョンでのみサポートされています。 サポートされている Azure リージョンの一覧については、「クイック スタートの前提条件」を参照してください。InvalidRequest - The provided image content type ... is not supported
次の要求中の HTTP ヘッダー Content-Type は、許可される型ではありません。- 画像の URL の場合、Content-Type は
application/json
である必要があります - バイナリ画像データの場合、Content-Type は
application/octet-stream
またはmultipart/form-data
である必要があります
- 画像の URL の場合、Content-Type は
InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter
InvalidRequest - Image format is not valid
InvalidImageFormat - Image format is not valid
サポートされている画像形式については、「画像の要件」セクションを参照してください。
InvalidRequest - Analyze query is invalid
NotSupportedVisualFeature - Specified feature type is not valid
features クエリ文字列に有効な値が含まれることを確認します。NotSupportedLanguage - The input language is not supported
次の表に基づいて、language クエリ文字列に、選択した視覚機能に対する有効な値が含まれることを確認します。BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
401 PermissionDenied
401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource
404 Resource Not Found
404 - Resource not found
サービスは、model-name
クエリ文字列によって指定された名前に基づくカスタム モデルを見つけることができませんでした。
ヒント
Azure AI Vision の操作中に、このサービスによって適用されたレート制限によって一時的な障害が発生したり、ネットワークの停止など、他の一時的な問題が発生したりする可能性があります。 これらの種類の障害の処理については、クラウド設計パターン ガイドの「再試行パターン」および「サーキット ブレーカー パターン」を参照してください。