Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
Delphi

DelphiクロスプラットフォームアプリでDeepAIサービスを使う

pexels pavel danilyuk 8438966

今日、AIテクノロジーの普及は著しく、私たちの生活のさまざまな領域で使われています。例えば、スマートフォンの顔認証にAIが使われています。ソーシャルネットワークでは、写真に(AR、コラージュなど)さまざまな効果を追加できるようになっています。 AIツールを用いれば、ユーザーはさまざまなオブジェクトを識別することができます。これらは、ビデオ監視システムにおいて、車、人、動物などを識別し、さまざまな実用的な機能を追加するのにも使われています。

この記事では、人気の多機能AIサービスである「DeepAI」を分析し、クロスプラットフォームアプリでいかに簡単に利用できるかを紹介します。DeepAIサービスを用いれば、ユーザーはシンプルでわかりやすいAPIを介して、AIが提供するあらゆる機能とそのメリットを享受することができます。あるDeepAIは、古い白黒写真を着色する機能を提供しています。さらに、写真内のいくつかの望ましくないアイテム(武器など)を識別し、他の多くの可能性を提供します。

では、Delphi FMXクロスプラットフォームアプリで、DeepAIサービスを簡単に利用する方法を紹介しましょう。画像の操作には、Image Colorization APIを使うことにします。

DeepAI Image Colorization APIでできること

このサービスは、白黒写真に着色しカラー写真化するもので、APIによって利用できます。

APIを介して作業するには、DeepAIサーバーに POSTリクエストを送信し、白黒画像ファイルパスとAPIキーを渡します。また、DeepAI Image Colorization APIサービスに接続するためのリンクを使用します。

DeepAI APIキーを取得するには

APIキーを取得するには、サインアップする必要があります。手順は簡単で、[SIGNUP]ボタンをクリックします。

そして、ユーザー名、Eメール、パスワードを入力します。

サインアップが完了したら、アカウント確認用のリンクが含まれるメールが送られてきます。このリンクをクリックします。

以上でAPIキーが発行されるので、FMX Delphiアプリで使用できるようにキーをコピーして保存します。

また、「Billing」タブで、クレジットカード情報(カード番号、有効期限、CVV)を入力し、サービス利用料の支払い設定を行う必要があります。なおDeepAIでは、5ドルまでの無料トライアル上限を用意しています。

Delphi FMXクロスプラットフォームアプリでDeepAIを使うには

ここでは、Delphi FMXアプリから白黒写真を POSTリクエストでサーバーへ送信し、JSON形式でカラー写真化の処理が行われた画像URLリンクを取得するサンプルを作成してみます。

Delphiでは、DeepAIサーバーを操作するために、いくつかの標準コンポーネント、つまり TNetHttpRequest および TNetHttpClientを用いることができます。TNetHttpRequestコンポーネントのClientフィールドに配置したTNetHttpClientコンポーネント(NetHttpClient1)を指定し、MethodStringフィールドに「POST」と設定します。

カラー写真化したDeepAI画像をDelphiクロスプラットフォームアプリで表示するには

FMXアプリで変換前の白黒画像を表示するには、標準コンポーネントであるTImageを使います。

DeepAIサービスのREST APIを使用して取得した処理済のカラー画像を表示するにも、標準コンポーネントのTImageを使用します。

Delphi FMXアプリでは、サーバーからのJSONレスポンス内容を表示するため、標準コンポーネントの[Standard]タブにあるTMemoを使います。

APIキー、コンピューター上の白黒画像へのパスといったパラメーターをPOSTリクエストを介してサーバーに送信するには、以下で解説する変数を使用します。

DeepAI APIリクエストをサーバーに送信する

APIキーをREST DeepAIサーバーに送信するには、TNameValuePairヘッダークラ​​ス変数(オブジェクト)を用います。

コンピューター上のパスに従って白黒画像を送信するには、TMultipartFormDataクラスのLMultiPartFormDataオブジェクトを使います。path変数の行では、画像ファイルへのパスを保存しています。

画像へのパスは、MSWindowsとAndroidで異なります。そのため、それぞれのプラットフォーム用に条件付きコンパイルを適用します。

MSWindowsでコンパイルする場合、イメージファイルはCドライブ(c:Einstein.jpeg)に保存されているものとします。

Androidの場合、画像ファイルはスマートフォンの内部メモリのPicturesフォルダに保存されているものとします。

変換前の白黒画像をTImageコンポーネントに読み込むには、LoadFromFileメソッドを用います。パラメータに、path変数を指定します。

path変数の行では、画像ファイル名とパスを保存しています。

POSTリクエストを実行して必要なすべてのデータ(画像ファイルへのパス、APIキー)をサーバーに送信するには、NetHTTPRequest1コンポーネントのPOSTメソッドを使用します。

このメソッドには、サーバーに接続するためのリンク、画像ファイルへのパスを格納したLMultiPartFormDataオブジェクト、TMemoryStreamクラスのLMSオブジェクト、APIキーを保持するheader変数を指定します。

LMSオブジェクトは、サーバーから受信した応答をJSON形式で保存するために使用します。

サーバーから受信したJSONレスポンスは、LoadFromStreamメソッドを使用してTMemoに表示します。

サーバーからの受信したJSONレスポンスには、処理済のカラー画像ファイルへのURLリンク(output_urlパラメーター)が含まれます。

DeepAI APIのJSONレスポンスから画像URLをパースするには

カラー画像を読み込むには、DeepAIサーバーから取得したJSONレスポンスをパースしてURLリンクを取得します。

JSONレスポンスの解析には、TJSONObjectクラスのJSONオブジェクトを使用します。

JSONレスポンスを解析してURLリンクを取得したら、これをColorizedImagePathに代入します。

サーバーからカラー画像をダウンロードするには、TNetHttpClientコンポーネントのGETメソッドを使用します。

GETメソッドには、サーバー上のカラー画像のURLリンクとTMemoryStreamクラスのLResponseオブジェクトを指定します。LResponseオブジェクトには、このあとTImageに表示するカラー画像が返されます。

カラー画像をロードして表示するには、TImageコンポーネントのLoadFromStreamを使います。

DeepAIを使用して画像を着色するDelphiアプリのサンプルコード

以下は、DeepAIにリクエストを送信し、処理された画像をロードするDelphiアプリのコード例です。

Delphi AndroidアプリでDeepAIを使用する際に注意すべき事項

AndroidプラットフォームでDelphiFMXアプリを正しく機能させるには、スマートフォンのメモリおよびインターネット接続へのアクセス許可を設定する必要があります。

では、作成したEmbarcadero Delphi FMXアプリを、WindowsとAndroidプラットフォームの双方で実行してみましょう。白黒の画像を送信して、Deep AIサーバーから処理済のカラー画像を取得します。

DeepAIを用いたクロスプラットフォームDelphi Android FMXアプリ

AndroidデバイスでFMXアプリを実行してみましょう。

この記事のステップバイステップガイドは、Softacom Youtubeチャンネルをご覧ください。


この記事は、エンバカデロ・テクノロジーズパートナーのSoftacomによって執筆されています。

SoftacomのAI実装サービスの詳細については、以下のページをご確認ください。
https://softacom.com/services/artificial_intelligence_implementation_with_delphi/


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES