事前トレーニングされたイメージ分析モデル

Visionは、イメージ内のオブジェクト、テキストおよびシーン全体を見つけてタグ付けできる事前トレーニング済イメージ分析AIモデルを提供します。

事前トレーニング済モデルを使用すると、データ・サイエンスの経験がなくてもAIを使用できます。イメージをVisionサービスに提供し、独自のモデルを作成することなく、イメージ内のオブジェクト、テキスト、シーンおよびフェースに関する情報を取り戻します。

使用例

ここでは、事前トレーニング済イメージ分析モデルのユースケースをいくつか示します。

デジタル資産管理
デジタル・メディアのようなイメージにタグ付けして、より優れた索引付けと取得を実現します。
シーン・モニタリング
アイテムが小売棚にあるか、電力線の監視イメージで植生が増加しているか、トラックが配送または出荷のために多く利用可能かどうかを検出します。
顔検出
  • プライバシー: 顔検出機能から返された顔の位置情報を使用して、画像にぼかしを追加して、IDを非表示にします。
  • 生体認証の前提条件: 顔の品質スコアを使用して、顔が明確で妨害されていないかどうかを判断します。
  • デジタル・アセット管理: イメージに顔の情報でタグ付けして、より優れた索引付けと取得を実現します。

サポートされている形式

Visionは、複数のイメージ分析フォーマットをサポートしています。

イメージは、ローカル・ストレージまたはOracle Cloud Infrastructure Object Storageからアップロードできます。イメージは次の形式にできます。
  • JPG
  • PNG

事前トレーニング済モデル

Visionには4つのタイプの事前トレーニング済イメージ分析モデルがあります。

事前トレーニング済モデルは次のとおりです。

オブジェクト検出

オブジェクト検出は、イメージ内のオブジェクトの検索および識別に使用されます。たとえば、リビングルームのイメージがある場合、Visionは椅子、ソファ、テレビなどのオブジェクトを検索します。次に、各オブジェクトの境界ボックスを提供し、それらを識別します。

Visionは、識別されたオブジェクトごとに信頼度スコアを提供します。信頼度スコアは10進数です。スコアが1に近いとオブジェクト分類の信頼性が高いことを示しますが、スコアが小さいと信頼度スコアが低くなります。各ラベルの信頼度スコアの範囲は0から1です。

サポートされている機能は次のとおりです。
  • ラベル
  • 信頼性スコア
  • オブジェクト境界ポリゴン
  • 単一のリクエスト
  • バッチ・リクエスト
オブジェクト検出の例

Visionでのオブジェクト検出の使用例。

入力イメージ
図1. オブジェクト検出の入力イメージ
Oracleが書かれた、道路を運転する車の図。一方はバスで、もう一方はタクシーです。
APIリクエスト:
{ "analyzeImageDetails":
 { "compartmentId": "",
   "image": 
           { "namespaceName": "",
             "bucketName": "",
             "objectName": "",
             "source": "OBJECT_STORAGE" },
   "features": [ { "featureType": "OBJECT_DETECTION", "maxResults": 50 } ] } }
出力:
図2. オブジェクト検出の出力イメージ
入力と同じイメージですが、関心のあるすべての項目の周りに境界ボックスが描画されるようになりました。
APIレスポンス:
{ "imageObjects": 
 [ { "name": "Bus",
     "confidence": 0.98872757,
     "boundingPolygon": 
                       { "normalizedVertices": 
                                              [ { "x": 0.232, 
                                                  "y": 0.16114457831325302 },
                                                { "x": 0.407,
                                                  "y": 0.16114457831325302 }, 
                                                { "x": 0.407,
                                                  "y": 0.36596385542168675 },
                                                { "x": 0.232,
                                                  "y": 0.36596385542168675 } ]
                       } },
   }, ... }

イメージ分類

イメージ分類を使用して、イメージ内のシーンベースのフィーチャおよびオブジェクトを識別できます。ユースケースおよびイメージ内のアイテム数に応じて、1つの分類または複数の分類を設定できます。たとえば、実行している個人のイメージがある場合、Visionによって個人、衣類および履物が識別されます。

Visionは、ラベルごとに信頼度スコアを提供します。信頼度スコアは10進数です。スコアが1に近いとラベルの信頼性が高いことを示しますが、スコアが小さいと信頼性が低いことを示します。各ラベルの信頼度スコアの範囲は0から1です。

サポートされている機能は次のとおりです。
  • ラベル
  • 信頼性スコア
  • オントロジークラス
  • 単一のリクエスト
  • バッチ・リクエスト
イメージ分類の例

Visionでのイメージ分類の使用例。

入力イメージ
図3. イメージ分類の入力イメージ
道路を横断する電気ピロンの図。
APIリクエスト:
{ "analyzeImageDetails":
 { "compartmentId": "",
   "image":
           { "namespaceName": "",
             "bucketName": "",
             "objectName": "",
             "source": "OBJECT_STORAGE" },
             "features":
                        [ { "featureType": "IMAGE_CLASSIFICATION",
                            "maxResults": 5 } ]
 } 
}
出力:
APIレスポンス:
{ "labels":
           [ { "name": "Overhead power line",
               "confidence": 0.99315816 },
             { "name": "Transmission tower",
               "confidence": 0.9927904 },
             { "name": "Plant", "confidence": 0.9924676 },
             { "name": "Sky", "confidence": 0.9924451 },
             { "name": "Line", "confidence": 0.9912027 } ] ...

顔検出

ビジョンは、イメージ内の面を検出して認識できます。

顔検出では、イメージまたはイメージのバッチをVisionに渡して、事前トレーニング済モデルを使用して次のものを検出できます。

  • それぞれのイメージにおける顔の存在。
  • 各イメージ内の面の位置。
  • それぞれの顔の目印。
  • それぞれの顔の質。

この事前トレーニング済モデルを使用するために、データ・サイエンスの経験は必要ありません。

面の例

Visionにおける顔検出の例。

入力イメージ
図4. 顔検出用入力画像
車の隣にバイクがある。
APIリクエスト:
{
  "compartmentId": "ocid1.compartment.oc1..aaaaaaaau3mwjanch4k54g45rizeqy52jcaxmiu4ii3kwy7hvn6pncs6yyba",
  "image": {
    "namespaceName": "axwlrwe7tbir",
    "bucketName": "demo_examples",
    "objectName": "FaceDetection/FaceDetection1.jpeg",
    "source": "OBJECT_STORAGE"
  },
  "features": [
    {
      "featureType": "FACE_DETECTION",
      "maxResults": 50,
      "shouldReturnLandmarks": true
    }
  ]
}
出力:
図5. 顔検出の出力イメージ
入力イメージ内のテキストは、境界ボックスで囲まれています。
APIレスポンス:
{
  "ontologyClasses": [],
  "detectedFaces": [
    {
      "confidence": 0.9838427,
      "boundingPolygon": {
        "normalizedVertices": [
          {
            "x": 0.48696465492248536,
            "y": 0.2889890061576746
          },
          {
            "x": 0.6339863777160645,
            "y": 0.2889890061576746
          },
          {
            "x": 0.6339863777160645,
            "y": 0.586297366400352
          },
          {
            "x": 0.48696465492248536,
            "y": 0.586297366400352
          }
        ]
      },
      "qualityScore": 0.9043028,
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "x": 0.5203125,
          "y": 0.41114983
        },
        {
          "type": "RIGHT_EYE",
          "x": 0.590625,
          "y": 0.41231126
        },
        {
          "type": "NOSE_TIP",
          "x": 0.553125,
          "y": 0.4715447
        },
        {
          "type": "LEFT_EDGE_OF_MOUTH",
          "x": 0.5210937,
          "y": 0.5005807
        },
        {
          "type": "RIGHT_EDGE_OF_MOUTH",
          "x": 0.5914062,
          "y": 0.5017422
        }
      ]
    },
    {
      "confidence": 0.9775677,
      "boundingPolygon": {
        "normalizedVertices": [
          {
            "x": 0.7882407665252685,
            "y": 0.26365977075734065
          },
          {
            "x": 0.9403343200683594,
            "y": 0.26365977075734065
          },
          {
            "x": 0.9403343200683594,
            "y": 0.5528718281567582
          },
          {
            "x": 0.7882407665252685,
            "y": 0.5528718281567582
          }
        ]
      },
      "qualityScore": 0.786416,
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "x": 0.81328124,
          "y": 0.37514517
        },
        {
          "type": "RIGHT_EYE",
          "x": 0.88125,
          "y": 0.39140534
        },
        {
          "type": "NOSE_TIP",
          "x": 0.8296875,
          "y": 0.44134727
        },
        {
          "type": "LEFT_EDGE_OF_MOUTH",
          "x": 0.8078125,
          "y": 0.46689895
        },
        {
          "type": "RIGHT_EDGE_OF_MOUTH",
          "x": 0.8726562,
          "y": 0.48083624
        }
      ]
    },
    {
      "confidence": 0.97464997,
      "boundingPolygon": {
        "normalizedVertices": [
          {
            "x": 0.038544440269470216,
            "y": 0.2764744597998784
          },
          {
            "x": 0.17794162034988403,
            "y": 0.2764744597998784
          },
          {
            "x": 0.17794162034988403,
            "y": 0.560027438173726
          },
          {
            "x": 0.038544440269470216,
            "y": 0.560027438173726
          }
        ]
      },
      "qualityScore": 0.8527186,
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "x": 0.08984375,
          "y": 0.3809524
        },
        {
          "type": "RIGHT_EYE",
          "x": 0.15234375,
          "y": 0.39140534
        },
        {
          "type": "NOSE_TIP",
          "x": 0.12421875,
          "y": 0.44599304
        },
        {
          "type": "LEFT_EDGE_OF_MOUTH",
          "x": 0.07734375,
          "y": 0.46689895
        },
        {
          "type": "RIGHT_EDGE_OF_MOUTH",
          "x": 0.14375,
          "y": 0.47619048
        }
      ]
    },
    {
      "confidence": 0.96874785,
      "boundingPolygon": {
        "normalizedVertices": [
          {
            "x": 0.2698225736618042,
            "y": 0.24420403492713777
          },
          {
            "x": 0.38425185680389407,
            "y": 0.24420403492713777
          },
          {
            "x": 0.38425185680389407,
            "y": 0.4686152760575457
          },
          {
            "x": 0.2698225736618042,
            "y": 0.4686152760575457
          }
        ]
      },
      "qualityScore": 0.8934359,
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "x": 0.29453126,
          "y": 0.3240418
        },
        {
          "type": "RIGHT_EYE",
          "x": 0.3484375,
          "y": 0.33681765
        },
        {
          "type": "NOSE_TIP",
          "x": 0.31328124,
          "y": 0.3821138
        },
        {
          "type": "LEFT_EDGE_OF_MOUTH",
          "x": 0.2890625,
          "y": 0.39372823
        },
        {
          "type": "RIGHT_EDGE_OF_MOUTH",
          "x": 0.3453125,
          "y": 0.40301976
        }
      ]
    },
    {
      "confidence": 0.95825064,
      "boundingPolygon": {
        "normalizedVertices": [
          {
            "x": 0.6876011371612549,
            "y": 0.10002164585942037
          },
          {
            "x": 0.8045546531677246,
            "y": 0.10002164585942037
          },
          {
            "x": 0.8045546531677246,
            "y": 0.3600864033804261
          },
          {
            "x": 0.6876011371612549,
            "y": 0.3600864033804261
          }
        ]
      },
      "qualityScore": 0.9237982,
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "x": 0.7171875,
          "y": 0.19976771
        },
        {
          "type": "RIGHT_EYE",
          "x": 0.7703125,
          "y": 0.21254355
        },
        {
          "type": "NOSE_TIP",
          "x": 0.7367188,
          "y": 0.2601626
        },
        {
          "type": "LEFT_EDGE_OF_MOUTH",
          "x": 0.7085937,
          "y": 0.2752613
        },
        {
          "type": "RIGHT_EDGE_OF_MOUTH",
          "x": 0.76640624,
          "y": 0.2857143
        }
      ]
    }
  ],
  "faceDetectionModelVersion": "1.0.27",
  "errors": []
}

光学式文字認識(OCR)

Visionは文書内のテキストを検出して認識できます。

言語分類はドキュメントの言語を識別し、OCRはイメージ内で検出された印刷テキストまたは手書きテキストの周囲に境界ボックスを描画し、テキストをデジタル化します。たとえば、停止記号のイメージがある場合、Visionはそのイメージ内のテキストを検索し、テキストSTOPを抽出します。識別されたテキストの境界ボックスが表示されます。

Visionは、各テキスト・グループに対して信頼度スコアを提供します。信頼度スコアは10進数です。スコアが1に近いと、抽出されたテキストの信頼性が高いことを示しますが、スコアが小さいと信頼度スコアが低くなります。各ラベルの信頼度スコアの範囲は0から1です。

テキスト検出は、ドキュメントAIまたはイメージ分析モデルで使用できます。

OCRのサポートは英語のみとなります。イメージ内のテキストが英語であることがわかっている場合は、言語をEngに設定します。

サポートされている機能は次のとおりです。
  • 単語抽出
  • テキスト行の抽出
  • 信頼性スコア
  • 境界ポリゴン
  • 単一のリクエスト
  • バッチ・リクエスト
OCRの例

VisionでのOCRの使用例。

入力イメージ
図6. OCRの入力イメージ
車の隣にバイクがある。
APIリクエスト:
{ "analyzeImageDetails":
 { "compartmentId": "",
   "image":
           { "namespaceName": "",
             "bucketName": "",
             "objectName": "",
             "source": "OBJECT_STORAGE" },
   "features":
              [ { "featureType": "TEXT_DETECTION" } ]
 }
}
出力:
図7. OCRの出力イメージ
入力イメージ内のテキストは、境界ボックスで囲まれています。
APIレスポンス:
...
 { "text": "585-XRP",
   "confidence": 0.9905539,
   "boundingPolygon":
                     { "normalizedVertices":
                                            [ { "x": 0.466,
                                                "y": 0.7349397590361446 },
                                              { "x": 0.552,
                                                "y": 0.7319277108433735 },
                                              { "x": 0.553,
                                                "y": 0.7831325301204819 },
                                              { "x": 0.467,
                                                "y": 0.7876506024096386 } ]
                     }
 } 
...

事前トレーニングされたイメージ分析モデルの使用

Visionは、データ・サイエンティストを必要とせずに、顧客がイメージに関するインサイトを抽出するための事前トレーニング済モデルを提供します。

事前トレーニング済モデルを使用する前に、次のものが必要です。

  • Oracle Cloud Infrastructureの有料テナンシ・アカウント。

  • Oracle Cloud Infrastructure Object Storageについて理解します。

Rest API、SDKまたはCLIを使用して、事前トレーニング済イメージ分析モデルをバッチ・リクエストとしてコールできます。コンソール、Rest API、SDKまたはCLIを使用して、事前トレーニング済イメージ分析モデルを単一のリクエストとしてコールできます。

バッチ・リクエストで許可される内容の詳細は、「制限」の項を参照してください。