認識イメージ機能の使用

Oracle Machine Learning Servicesでは、事前構築済のONNXイメージ・モデルを使用したイメージ分類およびイメージ特徴抽出という2つの認識イメージ機能がサポートされています。

これらの2つの機能の入力は、次の2つの方法で指定できます:
  • 単一のイメージ・ファイルを入力としてアップロードします。この場合、アップロードされたイメージの同等のテンソル形式が、モデルの適切な前処理とともに生成されます。サポートされているイメージ・ファイル形式は次のとおりです:
    • ビットマップ(.bmp)
    • ポータブル・ビットマップ(.pbm)
    • ポータブル・グレーマップ(.pgm)
    • ポータブル・ピックスマップ(.ppm)
    • Sunラスター・グラフィック(.sr)
    • ラスター・グラフィック(.ras)
    • Joint Photographic Expert Group (.jpeg、.jpg、.jpe、.jp2)
    • タグ・イメージ・ファイル形式(.tiff, .tif)
    • Portable Network Graphics (.png)
  • スコアリング入力レコードのコレクションをアップロードします。ここでは、ONNXイメージ・モデルを使用したミニバッチ・スコアリングが<model_attribute_name, value/array>ペアを使用して実行されます。ここで、value/arrayは、base64文字列内のエンコードされたイメージ、または処理されたイメージ・ピクセル値を格納する4D配列のいずれかです。4D配列の形状は1x3x224x224である必要があります。
Linuxユーティリティjqを使用して、JSON出力を読取り可能な形式に解析します。jqユーティリティは、主要なLinux配布リポジトリのすべてに含まれています。Oracle LinuxおよびRed Hatシステムでは、次のコマンドを実行して、このユーティリティをインストールできます:
$ sudo yum install jq

ノート:

cURLコマンドでjqを使用しても、HTTPレスポンスは返されません。HTTPレスポンスを返すには、jqコマンドを削除し、curlコマンドに-iフラグを追加します。
この項では、次の方法を示す例をリストします:
  • モデル・エンドポイントのリストの取得
  • イメージのtopNカテゴリとそれぞれの確率の取得
  • 入力イメージの特徴抽出結果の取得

1: モデル・エンドポイントのリストの取得

この例では、モデル・エンドポイントのリストを取得する方法を示します。次のコマンドを実行して、モデル・エンドポイントのリストを取得します:
curl -X GET --header "Authorization: Bearer ${token}" "<oml-cloud-service-location-url>/omlmod/v1/cognitive-image"

このコマンドは、次の詳細を返します。

{
    "items": [
        {
            "name": "classification",
            "description": "A cognitive image scoring endpoint that returns the classification of the images.",
            "links": [
                {
                    "rel": "classification",
                    "href": "http://adb.us-sanjose-1.oraclecloud.com/omlmod/v1/cognitive-image/classification"
                },
                {
                    "rel": "self",
                    "href": "http://adb.us-sanjose-1.oraclecloud.com/omlmod/v1/cognitive-image/."
                }
            ]
        },
        {
            "name": "feature-extraction",
            "description": "A cognitive image scoring endpoint that extracts features of the images.",
            "links": [
                {
                    "rel": "feature-extraction",
                    "href": "http://adb.us-sanjose-1.oraclecloud.com/omlmod/v1/cognitive-image/feature-extraction"
                },
                {
                    "rel": "self",
                    "href": "http://adb.us-sanjose-1.oraclecloud.com/omlmod/v1/cognitive-image/."
                }
            ]
        }
    ],
    "links": [
        {
            "rel": "self",
            "href": "http://adb.us-sanjose-1.oraclecloud.com/omlmod/v1/cognitive-image"
        }
    ]
}

2: イメージの上位Nカテゴリの取得

この例では、cognitive-image/classificationエンドポイントにPOSTリクエストを送信して、.jpg形式のイメージの上位Nカテゴリを取得する方法を示します。この例は、入力イメージが属する各カテゴリの確率も返します。

次のコマンドを実行して、イメージimg.jpgが属している可能性のある上位4つのカテゴリと確率を取得します:
curl -X POST --header "Authorization: Bearer $token" <oml-cloud-service-location-url>/omlmod/v1/cognitive-image/classification \
-F imageData=@img.jpg
-F topN=4
この例の説明は、次のとおりです。
  • $tokenは、認可APIを介して取得されたトークンに割り当てられる環境変数です。
  • img.pngは、イメージ・ファイルのパスです。この例では、写真には小さな犬が含まれています。
  • 4は、モデルによって返される、対応する確率を持つ上位クラスの数です。
  • topNは、分類エンドポイントのオプション・パラメータです。入力の一部としてこのパラメータを渡して、確率でソートされた各イメージについて返されるカテゴリの数を決定します。topN>=0である必要があります。デフォルトでは、確率が最も高い上位5クラスが返されます。topN=0の場合、ソートされていない分類出力リスト全体が返されます。

このコマンドは、上位4つのクラスをそれぞれの確率とともに返します。スコアリング結果は次のとおりです:

{
    "scoringResults": [
        {
            "classifications": [
                {
                    "label": "Dog",
                    "probability": 0.9995992183685303
                },
                {
                    "label": "Puppy",
                    "probability": 0.9975613355636597
                },
                {
                    "label": "Companion dog",
                    "probability": 0.997296154499054
                },
                {
                    "label": "Dog breed",
                    "probability": 0.9910918474197388
                }
            ]
        }
    ]
}

3: イメージ特徴抽出結果の取得

この例では、cognitive-image/feature-extractionエンドポイントにPOSTリクエストを送信して、入力イメージのイメージ特徴抽出結果を取得する方法を示します。この機能では、スコアリングに事前構築済ONNXイメージ・モデルが使用されます。

次のcURLコマンドを実行して、最も関連するキーワードを取得します:

curl -X POST --header "Authorization: Bearer $token" 
<oml-cloud-service-location-url>/omlmod/v1/cognitive-image/feature-extraction \
-F imageData=@img.png

このコマンドは、すべての特徴の重みを返します。

{
    "scoringResults": [
        {
            "weights": [
                0.1776999,
                0.30117133,
                0.0,
                0.0,
                0.0,
                0.06017106,
                0.0,
                0.007070067,
                0.0,
                0.0,
                0.0
            ]
        }
    ]
}