APEX を使用してトレーニング済みのデータ サイエンス モデルを適用する (2023/01/30)

APEX を使用してトレーニング済みのデータ サイエンス モデルを適用する (2023/01/30)

https://blogs.oracle.com/ai-and-datascience/post/yolov5-models-in-apex-using-oracle-data-science

投稿者: Bob Peulen | Senior Technical Specialist - Data Science

Piotr Kurzynoga | Senior Cloud Solutions Engineer


お客様から、APEXとOracle Cloud Infrastructure (OCI) Data Scienceを統合する方法についてよく尋ねられます。このブログでは、OCI Data Science を使用して事前トレーニング済みの Yolov5 モデルを使用およびデプロイし、デプロイされた Yolov5 モデルを呼び出して APEX を使用して結果を視覚化するユースケースの例を提供します。Yolov5 は有名なオープンソースビジョン フレームワークであり、そこからオブジェクト検出を適用します。ブログと関連する詳細な手順は、OCI Data Science と APEX の 2 つの主要なサービスで構成されています。



OCI Data Science を使用してオブジェクト検出を実行

OCI Data Science セクションでは、事前に構築されたYolov5モデルを使用してオブジェクト検出を実行する方法について説明します。このプロセスにより、車、人、動物、その他多くのカテゴリなどのオブジェクトをすぐに自動的に検出できます。独自の Yolov5 重みを使用して、カスタムオブジェクトを検出することもできます。


Yolov5 フレームワークを使用して、モデルの推論、モデル カタログへのモデルの保存、およびモデルのデプロイに必要な独自のカスタム conda 環境を作成します。すべての手順は、ノートブック内で実行されます。モデルのデプロイでは、必要なインフラストラクチャと負荷分散が自動的にプロビジョニングされるだけでなく、REST API も作成されます。ノートブックはGitHub にあります。



APEX を使用してトレーニング済みのデータ サイエンス モデルを適用

APEX セクションでは、新しく作成したデータサイエンス モデルの使用について説明します。 Data Science サービスに戻されるパラメータを定義する機能を使用して、APEX を介して OCI でデプロイされたデータサイエンス API エンドポイントを使用します。


この章を完了するには、事前準備が必要です。そうしないと、非常に長い記事になってしまいます。APEXを介したOCI Object Storageへのファイルのアップロードに慣れていない場合は、 APEXを介したOCI Object Storageへのファイルのアップロードの手順に従ってください。



OCI Data Science および APEX アーキテクチャの概要



次の前提条件が必要です。


プロセスステップ

1. Object Storage バケットを作成します。

Oracle Cloud ConsoleでObject Storageに移動し、新しいバケットを作成します。バケット名と名前空間に注意してください。次の例では、バケット名は「demo_blog」です。このバケットを使用して、公開されたカスタム conda 環境を保存し、デプロイされたモデルが取得するイメージを保存します。



新しく作成したバケットで、 [その他のアクション]をクリックして 2 つのサブバケットを作成します。次に、[新しいフォルダーの作成]をクリックします。一方のサブバケットに「input_image」、もう一方のサブバケットに「output_image」という名前を付けます。




2. OCI Data Science でノートブック セッションを開始します。

OCI Data Science でノートブック セッションを開き、ノートブックをアップロードします。ノートブックはGitHub からダウンロードできます。ノートブックをホーム ディレクトリ (「/home/datascience」) にドラッグ アンド ドロップまたはアップロードします。「yolov5_apex.ipynb」という名前のノートブックを開きます。


OCI Data Science ノートブックセッション内で、最初にカスタム conda 環境を作成します。カスタム conda 環境を作成する方法の詳細については、OCI Data Science で新しい conda 環境を作成する方法 を参照してください。ターミナルを開き、次のコマンドを実行します。


odsc conda create -n object_detection_conda -s object_detection_conda -v 1.0




新しいカスタム conda が正常にインストールされたら、次のコマンドを実行してカスタム conda 環境をアクティブにします。


conda activate /home/datascience/conda/object_detection_apex_conda




「yolov5_apex.ipynb」ノートブックを開き、カーネルを新しく作成したカスタム conda「object_detection_apex_conda」に切り替えます。ノートブックセッションの右上隅でカーネルを変更できます。





ノートブックの手順に従う前に、次の注意事項を確認してください。


  • 次のセルを実行する前に、カーネルを「object_detection_apex_conda」に変更します。
  • ノートブックは、ホームディレクトリ (/home/datascience) で作業していることを前提としています。
  • ノートブックは、特定のバケット名と名前空間を使用します。「YOUR_BUCKET_NAME」と「YOUR_NAMESPACE」が表示されるたびに、バケット名と名前空間を置き換えます。
  • 使用される画像は .jpg 形式です。



カスタム conda

  1. カスタム conda を作成します。
  2. Yolov5 GitHub リポジトリのクローンを作成し、インストールを実行します。
    • Yolov5 github のクローンを作成し、依存関係をインストールします。
    • その他の設備
    • サンプル画像で Yolov5 をテストします。
  3. conda を OCI Object Storage に公開します。
  4. モデルアーティファクトを作成し、モデルカタログに保存します。
    • モデルアーティファクトを作成します。
    • Yolov5 ライブラリをモデルアーティファクトにコピーします。
    • すべてのモデルアーティファクトを確認します。
    • モデルアーティファクトをモデル カタログに保存します。
  5. モデルのデプロイを作成し、REST API をテストする
    • モデルのデプロイ構成
    • モデルのデプロイを作成します。
    • REST API を使用して、デプロイされたモデルをテストします。



APEX アプリケーションの構築

ファイルをアップロードできるようになったので、アプリケーションを Data Science モデルで補足しましょう。おまけとして、機械学習 (ML) モデルの結果を直接 APEX に表示します。まず、Web 資格情報を作成します。事前作業が完了している場合は、REST データソースの作成セクションにスキップできます。


認証

  1. App Builder で Workspace Utilities に移動し、Web Credentials を選択します。
  2. OCI API キーから取得した詳細を使用して OCI クレデンシャルを作成し、保存します。

後で静的識別子を使用してデータサイエンス環境とObject Storageへの API リクエストを作成するため、安全な場所に保管してください。変更を行うたびに、OCI 秘密鍵を再度追加する必要があります。「Valid for URLs」セクションに、Object Storage と Data Science モデルの URL が含まれていることを確認してください。




REST データソースの作成

1. [アプリケーション] で、[共有コンポーネント] に移動し、[REST データソース] を選択して、REST データソースを最初から作成します。データサイエンス エンドポイントの名前と URL エンドポイントを示します。



2. サービス URL パス内の ..oci-customer-oci.com/ の後にデプロイメントモデル パスを指定します。



3. ページネーションの種類として「ページネーションなし」を選択します。

4. [Authentication Required] を選択し、以前に作成した Web 資格情報を選択します。



5. 詳細を選択し、次のパラメーターを構成します。



6. [REST ソースを手動で作成]をクリックします。

7. 作成した REST データ ソースを開きます。

8. 鉛筆アイコンをクリックし、[削除] を選択して、赤で強調表示されている他の操作を削除します。



9. POST オペレーションを Fetch Rows に調整し、#id# パラメータを「Request Body Template」に追加します。



10. 変更を適用します。

これで、アプリケーションでこの REST データ ソースの使用を開始し、必要なパラメーターをクリックできます。


データサイエンス: API の使用

1. 空白のページを作成します。

2. リージョンを作成します。 



3. ID パラメータを保持するページアイテムを作成します。



4. Enterをクリックしたときに送信するページアイテムを構成します。



5. 「Classic Report」タイプのサブリージョンを作成します。

6. ソースとして「REST Source」を選択し、作成した REST データソースを選択します。

7. 送信するページアイテムとして ID_PARAM を選択します。 



8. これで、アイテムタイプを指定してページアイテムを選択することで、ID_PARAM を REST データソース内の ID パラメータにマップできるようになりました。「&ID_PARAM」を使用して、静的な値内からパラメーターを参照することもできます。

9. これで、画面を保存して実行する準備が整いました。パラメーターを渡してEnterをクリックすると、データモデルが実行されます。



アクション「ページを送信」で構成されたボタンを作成することもできます。値を送信し、データサイエンス モデルを実行します。



これで、データサイエンス モデルを実行できます。しかし、出力をプレビューするにはどうすればよいでしょうか。



Object Storage ファイルの一覧表示

1. REST データソースを作成し、それを Object Storage にポイントします。すべてのリージョンの API はObject Storage Service APIにあります。



2. [次へ]をクリックして、サービスの URL パスを完成させます。サービス URL パスは /n/namespace/b/:bucket_name/o のパターンに従います。次に、[次へ]をクリックします。



3. [ページネーションなし] を選択し、[次へ]をクリックします。

4. 以前に作成した資格情報を使用して「認証が必要」をオンにし、「詳細」をクリックします。

5. URL パターン変数パラメーターを構成し、bucket_name 変数とその値を渡します。



6. Discoverをクリックして、バケット内のファイルのリストを表示します。



7. 最後に、[REST データソースの作成] をクリックします。



Object Storage の画像プレビュー

1. 空白のページを作成します。



2. Object Storage パラメーターを保持するためのリージョンと 2 つのページ項目を作成します。



3. 次に、プロセスを作成します。 



4. プロセスの PL/SQL コードを追加し、次の変数を調整します。

  • Object Storage オブジェクト名: "P3_OBJECT_NAME"
  • Web クレデンシャルの静的 ID: 「Your_Static_Credential_ID」
  • Object Storage 名前空間と BucketName。


declare
l_request_url    varchar2(32767);
l_content_type varchar2(32767);
l_content_length varchar2(32767);
l_response         blob;
download_failed_exception exception;

begin
l_request_url := 'https://objectstorage.eu-frankfurt-1.oraclecloud.com/n/NAMESPACE/b/BucketName/o/'||apex_util.url_encode(:P3_OBJECT_NAME);
l_response := apex_web_service.make_rest_request_b(
                                                         p_url     => l_request_url,
                                                          p_http_method => 'GET',
                                                          p_credential_static_id   => 'Your_Static_Credential_ID');
if apex_web_service.g_status_code != 200 then
              raise download_failed_exception;
end if;

for i in 1..apex_web_service.g_headers.count loop
if apex_web_service.g_headers(i).name = 'Content-Length' then
l_content_length := apex_web_service.g_headers(i).value;
end if;
if apex_web_service.g_headers(i).name = 'Content-Type' then
l_content_type := apex_web_service.g_headers(i).value;
end if;
end loop;
sys.htp.init;
if l_content_type is not null then
sys.owa_util.mime_header(trim(l_content_type),false);
end if;
sys.htp.p('Content-length: '||l_content_length);
sys.htp.p('Content-Disposition: attachment; filename="'||:P3_OBJECT_NAME||'"');
sys.htp.p('Cache-Control: max-age=3600');
sys.owa_util.http_header_close;
sys.wpg_docload.download_file(l_response);
apex_application.stop_apex_engine;
exception
when others then
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' - ERROR- '||SQLERRM);
end download_file;




5. 次に、ファイルを表示するページに戻ります。

6. 「Classic Report」タイプの新しいリージョンを作成し、ソースを REST ソースとして構成して、作成した ObjectStorage REST データソースを示します。次のコードを使用して、ローカルの後処理を SQL クエリとして構成します。


select NAME,
    APEX_PAGE.GET_URL(
                  P_PAGE                         => 3,
                  P_ITEMS                       => 'P3_BUCKET_NAME,P3_OBJECT_NAME',
                  P_VALUES      => ‘My_Bucket’||','||NAME) IMG_URL,
        LTRIM(NAME,'output_image/') T_NAME
  from #APEX$SOURCE_DATA#
  where name like '%output_image%g'


次に、さらにフィルタリングを適用して、バケット内の特定のフォルダ「output_image」を選択します。



画像を正しく表示するには、IMG_URL の列パラメーターを調整する必要があります。



次の HTML 式を貼り付けた列の書式設定では、必要に応じて画像の幅と高さを調整できます。


<img src="#IMG_URL#" loading="lazy" width="200" height="200">


次のオプションを無効にします。


  • ソート可能 (いいえ)
  • 特殊文字をエスケープする (いいえ)
  • エクスポート/印刷に含める (いいえ)









結果

すべての手順が完了すると、画像をOCI Object Storageにアップロードし、データサイエンスを使用して処理し、分析した画像を1つのAPEXアプリケーションページ内に表示できます(次のビデオを参照)。



このガイドは以上です。このアプローチを使用して、APEX の助けを借りて統合されたデータサイエンスおよびその他の OCI サービスを使用して、より高度なシナリオを作成できます。お読みいただきありがとうございます。今後のコンテンツにご期待ください。


さらに実験したいですか?Oracle Cloudの無料トライアルをお試しください! 300 米ドルの無料クレジットを含む 30 日間の試用版では、Oracle Cloud Infrastructure Data Science サービスにアクセスできます。


もっと学びたいですか?次のリソースを参照してください。


  • Data Scienceのドキュメントをお読みください。
  • これらのセットアップ手順に従って OCI テナンシを構成し、OCI Data Science の使用を開始します。
  • 新しいGitHub リポジトリにスターを付けてクローンを作成してください。ノートブックのチュートリアルとコード サンプルが含まれています。
  • YouTube プレイリストでチュートリアルをご覧ください。
  • Twitter フィードを購読してください。
  • LiveLabsのいずれかをお試しください。「Data Science」を検索してください。
  • AI とData Scienceのパブリック Slack チャンネルに参加してください。
  • 新機能へのプレビュー アクセスについては、直接お問い合わせください。


コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)