Oracle APEXのOCI Visionによる検索の強化 (2023/08/18)

Oracle APEXのOCI Visionによる検索の強化 (2023/08/18)

https://blogs.oracle.com/apex/post/empowering-search-with-oci-vision-in-oracle-apex

投稿者: Roopesh Thokala | Senior Product Manager, Oracle APEX


今日のデータドリブンの世界では、ビジュアルコンテンツから貴重なインサイトを拡張する機能が、業界全体のビジネスにとって画期的なものとなっています。人工知能(AI)は、コンピュータ・ビジョンの分野で大きな進歩を遂げ、機械はビジュアルデータを著しい精度で理解し解釈できるようになりました。


Oracle APEXは、堅牢でスケーラブルなアプリケーションを構築できるようにするローコード開発プラットフォームです。OCI Visionは、ディープラーニングベースのイメージ分析を大規模に実行するためのAIサービスです。事前にトレーニングされたモデルが用意されているため、開発者は、機械学習(ML)の専門知識がなくても、アプリケーションに画像認識とテキスト認識を簡単に構築できます。業界固有のユース・ケースでは、開発者はカスタムビジョンモデルを独自のデータとともに自動的にトレーニングできます。これらの事前構築済モデルを使用して、アプリは製造上の欠陥を視覚的に識別し、デジタルメディア資産を整理し、画像内の項目にタグ付けして、製品や出荷をカウントできます。


このブログでは、OCI Visionを使用して、イメージの分類のためにOracle APEX Social Mediaアプリケーションを拡張する方法について説明します。OCI VisionをOracle APEXと統合することで、企業はビジュアルインテリジェンスの力を活用し、データ分析機能を変革して、ユーザーエクスペリエンスに革命を起こすことができます。このブログ投稿では、OCI VisionとOracle APEXの統合による大きな可能性について説明しています。


OCI VisionとOracle APEXの統合方法を理解する前に、ソーシャルメディア・アプリケーションでAI Searchを実行する方法について見てみましょう。このソーシャルメディア・アプリケーションでは、「投稿の追加」ボタンおよびLIKEその他のイメージを使用して新しいイメージをアップロードできます。



アプリケーションには、検索語を入力できるナビゲーションバーで使用可能なAI検索フィールドがあります。[ENTER]をクリックすると、Dog、Building、Animalなどの検索語を含むイメージが検索されます。








このアプリケーションのビルドの前提条件


  1. Oracle Cloud Infrastructureアカウント
  2. OCIコンパートメント:事前構成済のテナンシ・ルート・コンパートメントを使用するか、独自のテナンシ・ルート・コンパートメントを作成できます。
  3. ログイン・ユーザーには、このコンパートメントでAutonomous Databaseインスタンスを作成および管理するために必要な権限が必要です。これらの権限は、OCI IAMポリシーを介して構成できます


アーキテクチャ図




OCIでのAPIキーの追加


Oracle Cloud Infrastructure (OCI)では、APIを介してOCIリソースにアクセスするときに、APIキーがセキュアな認証に使用されます。OCI APIキーは、公開キーと秘密キーの2つの部分で構成されます。


コンソールを使用して、秘密鍵と公開鍵のペアを生成できます。キー・ペアがすでにある場合は、公開キーのアップロードを選択できます。コンソールを使用してキー・ペアを追加すると、コンソールによって構成ファイルのプレビュースニペットも生成されます。


構成ファイルのプレビュースニペットは、次の情報で生成されます。


  • user - キー・ペアが追加されるユーザーのOCID
  • フィンガープリント- 追加されたキーのフィンガープリント
  • テナンシ- テナンシのOCID
  • region - コンソールで現在選択されているリージョン
  • key_file - ダウンロードした秘密キー・ファイルへのパス。この値を、秘密キー・ファイルを保存したファイル・システム上のパスに更新する必要があります。


API署名キー・ペアの生成方法については、ここをクリックしてください。



Oracle APEXでのWeb資格証明の作成


OCI VisionとAPEXを統合するために、APEXにWeb資格証明を作成します。Web資格証明は、外部RESTサービスまたはREST対応SQLサービスに接続するための認証資格証明を安全に格納および暗号化します。


これらの資格証明はワークスペース・レベルで格納され、すべてのアプリケーションからアクセスできるようになります。これらの資格証明を使用して、OCI Vision APIと対話します。


ここをクリックして、Web資格証明を作成する方法について学習します。




このブログ投稿では、OCI Visionサービスとソーシャルメディア・アプリケーションのシームレスな統合について説明します。開始するには、このリンクを使用してソーシャル・メディアアプリケーションをダウンロードし、APEXワークスペースにインポートします。



OCI Vision REST APIの理解


OCI Visionは、様々なカテゴリへのイメージの分類、イメージ内のオブジェクトの識別とローカライズ、非同期APIエンドポイントを使用したバッチでのイメージの処理など、様々な機能を提供します。このブログ投稿では、OCI Visionサービスの事前トレーニング済モデルの使用に重点を置いています。


OCI Visionを使用すると、イメージをアップロードして、イメージ内のオブジェクトを検出および分類できます。イメージが多数ある場合は、非同期APIエンドポイントを使用してそれらをバッチで処理できます。Visionの機能は、ドキュメント中心のイメージの場合はドキュメントAI、オブジェクトベースおよびシーンベースのイメージの場合はイメージ分析の間でテーマ的に分割されます。事前トレーニング済モデルとカスタム・モデルの両方をサポートします。


Oracle Cloud Infrastructure APIは、HTTPSリクエストおよびレスポンスを使用する一般的なREST APIです。OCIドキュメントで詳細を確認できます


ImageAnalysisを実行するには、適切なOracle Cloud Infrastructure APIを使用してAPIエンドポイントを準備する必要があります。このブログ投稿では、AshburnリージョンでホストされているOCIを使用します。APIエンドポイントは次のとおりです。


https://vision.aiservice.us-ashburn-1.oci.oraclecloud.com/20220125/actions/analyzeImage


様々なOCIサービスのAPIエンドポイントを準備する方法の詳細は、ドキュメンテーションを参照してください。


イメージを分析するには、次に示すように、リクエスト・パラメータをJSON形式で送信する必要があります。


{
   "compartmentId": "your compartment OCID",
   "image": {
      "source": "INLINE",
      "data": "'Your Data'"
   },
   "features": [
      {
         "featureType": "IMAGE_CLASSIFICATION",
         "maxResults": 5
      }
   ]
}


CompartmentIdはコンパートメントのOCIDで、featuresセクションにはリクエストされたイメージ分析のタイプが含まれ、「Image」セクションには分析するイメージの詳細が含まれます。



RESTデータソースとしてのOCI Vision REST APIの構成


OCI Vision REST APIの動作を理解したので、OCI Vision APIエンドポイントに接続するOracle APEXでRESTデータ・ソースの作成に進むことができます。


RESTデータソースは、次のパラメータで設定されます。


Restデータソース・タイプ: Oracle Cloud Infrastructure (OCI)

URLエンドポイント: https://vision.aiservice.us-ashburn-1.oci.oraclecloud.com/20220125/actions/analyzeImage

認証: 前述のWeb資格証明を使用します。


OCI VisionサービスanalyzeImageへのリクエストは、HTTP POSTリクエストです。そのため、次の設定でPOST操作を更新します。


1. 適切な代替タグを使用してリクエスト本文テンプレートを作成します。


{
   "compartmentId": "#COMPARTMENT_ID#",
   "image": {
      "source": "INLINE",
      "data": "#FILE_DATA#"
   },
   "features": [
      {
         "featureType": "#FEATURE_TYPE#",
         "maxResults": 5
      }
   ]
}


2. 「Operation」パラメータでは、「Synchronize with Body」ボタンを使用して、リクエスト本文テンプレートに定義されているすべての代替をパラメータとして取得します。

3. さらに、次の2つの操作パラメータを作成します。

    1. RESPONSE (レスポンス本文) - POSTリクエストからのJSONレスポンスを保持します
    2. Content-Type (HTTPヘッダー) - application/jsonにデフォルト設定される静的な値にできます


RESTデータソースが正常に構成されると、イメージのアップロード時にページプロセスから起動します。



ページプロセスを介したOCI Vision RESTデータ・ソースの起動


アップロードしたイメージをOCI Visionサービスに送信するには、以前に作成したOCI Vision RESTデータ・ソースを使用します。これを実現するために、「APIの起動」プロセス・タイプを使用できます。これにより、OCI Visionサービスを呼び出して、必要に応じてイメージを処理できるようになります。


1. イメージをデータベースに保存するプロセスの直後に、「実行チェーン」プロセス・タイプを作成します。エンドユーザーがイメージの索引作成を待機しないようにするには、このプロセスに対して「バックグラウンドで実行」オプションを有効にします。


実行チェーンには、次の2つの子プロセスが含まれている必要があります。

    1. RESTデータソースの起動
    2. レスポンスの解析


2. 次の属性を使用して、「Invoke REST Data Source」という最初の子プロセスを作成します。


  1. プロセス・タイプ: APIの起動
  2. 「設定」>「タイプ」: RESTソース
  3. REST Source: OCI Vision (上で作成したRESTデータ・ソースを選択します)。
  4. Operation: 転記。このRESTデータ・ソースに定義されているすべての操作パラメータが、プロセスの左側のペインに表示されます。各パラメータを選択して値を割り当てます

   1. COMPARTMENT_ID: コンパートメントOCIDまたはテナンシOCID (ルート・コンパートメント)を静的値として入力します。

   2. FEATURE_TYPE: プレーン・テキストで、イメージの分析に使用する事前トレーニング済モデルの名前を入力します。このデモでは、IMAGE_CLASSIFICATIONを使用します

   3. FILE_DATA: このパラメータは、ユーザーがアップロードしたイメージ・ファイルの送信に使用されます。イメージ・ファイルは、データベース表から読み取られ、apex_web_service.blob2clobbase64関数を使用してCLOB (Base64)に変換されます。次のSQL問合せを使用して、イメージ・ファイルのbase64文字列を作成できます。


SELECT
    REPLACE(REPLACE(APEX_WEB_SERVICE.BLOB2CLOBBASE64(FILE_BLOB),
                    CHR(10),
                    ''),
            CHR(13),
            '')
FROM
    SM_POSTS
WHERE
    ID = :P1_ID;


   4. 応答: OCI Vision RESTのデータソース・コールは、OUTパラメータを使用して取得できるJSONレスポンスを返します。これを実現するには、「出力を無視」属性を無効にする必要があります。これによって、出力をページアイテム(P1_RESPONSEなど)に格納し、さらに処理するためにレスポンスにアクセスできます。




3. 2番目の子プロセス「レスポンスを解析」では、ページアイテムP1_RESPONSEに格納されているレスポンスを解析し、OCI AI Visionサービスから返されたタグでデータベース表を更新できるようになりました。


UPDATE SM_POSTS
SET
    AI_OUTPUT = (
        SELECT
            LISTAGG(OBJ_NAME, ',') WITHIN GROUP(
            ORDER BY
                OBJ_NAME
            )
        FROM
            JSON_TABLE ( :P1_RESPONSE, '$.labels[*]'
                COLUMNS
                    OBJ_NAME VARCHAR2 ( 100 ) PATH '$.name[*]'
            )
    )
WHERE
    ID = :P1_ID;


AI検索を含めるためのポスト・フィード・ページのカスタマイズ


ソーシャルメディア・アプリケーションでAI検索機能を有効にするには、PX_AI_SEARCHという新しいページアイテムを作成します(PXはページ番号に置き換えます)。このテキストフィールドは、ユーザーの検索入力として機能します。


また、レンダリング・タブで使用可能なタイムライン・リージョンで使用されるSQL問合せを更新して、AI検索入力に基づいて投稿をフィルタします。変更されたクエリーは、AI分析出力に指定された検索語を含むポストを取得します。


SELECT
    P.ID,
    P.CREATED_BY                   AS USER_NAME,
    P.POST_COMMENT                 AS COMMENT_TEXT,
    P.FILE_BLOB,
    P.FILE_MIME,
    APEX_UTIL.GET_SINCE(P.CREATED) POST_DATE,
    (
        SELECT
            COUNT(*)
        FROM
            SM_REACTIONS SMR
        WHERE
            SMR.POST_ID = P.ID
    )                              AS REACTIONS,
    (
        SELECT
            'user-has-liked'
        FROM
            SM_REACTIONS SMR
        WHERE
                SMR.POST_ID = P.ID
            AND CREATED_BY = :APP_USER
    )                              USER_REACTION_CSS
FROM
    SM_POSTS P
WHERE
    UPPER(AI_OUTPUT) LIKE UPPER(NVL('%'
                                    || :P1_AI_SEARCH
                                    || '%', AI_OUTPUT))
ORDER BY
    P.CREATED DESC;


学習リソース




次のデモンストレーション・アプリケーションを使用して、動作中のAI駆動イメージ検索を確認できます。


https://apex.oracle.com/go/oci-vision-demo


次のワークショップのステップバイステップの手順に従って、アプリを自分で構築します。


近日公開!!


このコンテンツを動画の形式で使用するのが好きですか?問題ありません!内容は次のとおりです。


近日公開!!




まとめ


Oracle APEXとOracle Cloud Infrastructure (OCI) Visionサービスの統合は、データ処理機能の画期的な進歩を表しています。APEXのローコード開発プラットフォームのパワーをOCI VisionサービスのAI主導のイメージ認識およびテキスト抽出ツールと組み合せることで、企業は、合理化されたイメージ分析、自動データ抽出、ユーザー・エクスペリエンスの強化、高度なインサイトと分析にアクセスできます。この融合により、組織はデータ主導型の業務を最適化し、より適切な意思決定を行い、今日の競争環境で一歩先を行くことができます。このブログ投稿は、統合の実装手順を追ったガイドを提供し、開発者や技術者以外のユーザーがアクセスできるようにします。


コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

ミリ秒の問題: BCCグループとOCIが市場データ・パフォーマンスを再定義する方法(AWSに対するベンチマークを使用) (2025/11/13)

Oracle DatabaseをOCI Object Storageの不変バケットにバックアップする理由と方法 (2024/05/27)