OpenAIの新機能が明らかに:マルチモーダル時代の到来

OpenAIの新機能が明らかに:マルチモーダル時代の到来

著者 | 崔昊

レビュー | Chonglou

まとめ

この記事では、マルチモーダル技術分野における OpenAI の画期的な進歩に焦点を当て、OpenAI の最新の進歩を紹介します。この記事では、まず GPT-4 Turbo モデルの最適化と、画像生成やテキストから音声への変換などのマルチモーダル機能の融合について説明します。次に著者は、マルチモーダル技術の仕組み、特にテキストから画像への変換プロセスについて詳しく説明します。実践的なアプリケーションとプログラミング例を通じて、これらのテクノロジを使用して画像やビデオのコンテンツを認識し、認識したコンテンツを音声に変換する方法を示し、実践的なアプリケーションにおけるマルチモーダル テクノロジの幅広い可能性と影響力を反映しています。

導入

OpenAIは最近、同社のプラットフォームにおける一連の注目すべき新機能および改良機能を発表しました。これは人工知能の限界をさらに押し広げるために設計されたアップデートです。これらのアップデートには、より強力で安価な新しい GPT-4 Turbo モデルが含まれているだけでなく、開発者や研究者のイノベーション空間を大幅に拡大するマルチモーダル機能も導入されています。これらのアップデートのハイライトは次のとおりです。

1. GPT-4 Turbo モデル:この新しいモデルは、大規模言語モデルの最新の進歩を表しています。より強力になっただけでなく、より手頃な価格になりました。このモデルは最大 128K のコンテキスト ウィンドウをサポートしているため、より長い会話やテキストを処理できます。 GPT-4 Turbo の登場により、大規模言語モデルの潜在能力を活用する開発者の能力が大幅に向上し、モデルは真の「オールラウンダー」になりました。

2. マルチモーダル機能:マルチモーダル分野における最近の進歩は特に注目に値します。 OpenAI プラットフォームの新機能には、視覚機能の向上、画像作成 (DALL·E 3)、テキスト読み上げ (TTS) テクノロジが含まれます。これらのマルチモーダル機能の組み合わせにより、新しいアプリケーション シナリオが実現されるだけでなく、より豊かでインタラクティブなエクスペリエンスがユーザーに提供されます。

3. アシスタント API: OpenAI が新たにリリースしたアシスタント API により、開発者はターゲットを絞った AI アプリケーションをより簡単に構築できるようになります。この API は、モデルやツールを呼び出すための簡単な方法を提供し、ビジネス プロセスの自動化やユーザー エクスペリエンスの向上を目的とした複雑な支援 AI アプリケーションの開発を可能にします。

これらの機能が追加されたのを見てワクワクしており、GPT にログインして試してみるのが待ちきれません。特にマルチモーダル機能に感銘を受けたので、ここでは実際の操作とコード分析についてご紹介します。

マルチモダリティに関する予備的研究

マルチモーダル テクノロジーは、テキスト、音声、画像、ビデオなどのさまざまな種類のデータの入力と出力を組み合わせて、より豊かで直感的なユーザー エクスペリエンスを作成する、ますます人気が高まっている分野です。マルチモーダル テクノロジーの重要な側面をいくつか紹介します。

1. 複数の知覚モードの統合:マルチモーダル技術は、視覚(画像、動画)、聴覚(音声、オーディオ)、触覚などの複数の知覚モードを統合します。この統合により、AI システムは複雑な環境や状況をより適切に理解し、解釈できるようになります。

2. 強化されたユーザーインタラクション:マルチモーダル技術は、テキスト、画像、音声を組み合わせることで、より自然で直感的なユーザーインタラクションを実現します。たとえば、ユーザーは音声コマンドで質問し、画像とテキストの両方の形式で回答を受け取ることができます。

3. コンテキスト認識:マルチモーダル システムは、異なるタイプのデータ間の関係を分析および理解できるため、より正確な情報と応答を提供できます。たとえば、自然言語クエリを処理する場合、システムは関連する画像やビデオコンテンツを考慮して、より豊富な回答を提供できます。

4. 革新的なアプリケーション:マルチモーダル テクノロジーには、自動化された顧客サービス、インテリジェント アシスタント、コンテンツ作成、教育、ヘルスケア、小売など、幅広いアプリケーションがあります。これにより、ユーザーのニーズをより適切に理解し、それに応えることができる新しいタイプのアプリケーションを作成できます。

5. 技術的な課題:マルチモーダル技術は大きな可能性を秘めていますが、データの融合、さまざまなデータタイプの処理の複雑さ、正確性と効率性の確保などの課題ももたらします。

6. OpenAI のマルチモーダルの例: OpenAI のマルチモーダル機能の注目すべき例として、テキストの説明に基づいて詳細でクリエイティブな画像を作成できる高度な画像生成モデルである DALL·E 3 があります。さらに、テキスト読み上げ (TTS) テクノロジはテキストを自然な音声に変換し、人間とコンピューターのインタラクションの可能性をさらに豊かにします。

マルチモーダル原理の分析

先ほど、マルチモーダル性について基本的な説明をしました。マルチモーダル性とは、複数の種類のデータ (テキスト、画像、音声など) を理解して処理できるテクノロジーを指します。テキスト・画像・音声・ビデオ間の変換を実現します。変革は表面的なものであり、本質を理解する必要があります。

人工知能の分野では、マルチモーダルアプローチにより、自然言語処理 (NLP)、コンピュータービジョン (CV)、その他の信号処理技術を組み合わせて、より包括的なデータ理解と処理機能を実現することがよくあります。

マルチモーダル性の動作原理を説明するために、テキストを画像に変換する例を示して理解を深めます。全体のプロセスは以下のようになります。

1.テキスト特徴抽出:

まず、テキスト入力はテキスト モデル (事前トレーニング済みの言語モデルなど) に渡され、テキストの特徴が抽出されます。このプロセスでは、テキストを、テキストの意味内容を表現できる高次元空間のベクトルに変換します。

2.融合モデル:

場合によっては、異なるモダリティからのデータを組み合わせる方法を学習することによって、トレーニング フェーズ中に取得される専用の融合モデルが実際に存在します。この融合モデルは推論フェーズで使用されます。

他の場合には、融合モデルは暗黙的である可能性がありますたとえば、条件付き生成モデルでは、明示的な融合ステップを必要とせずに、テキスト特徴ベクトルが画像生成の条件として直接使用されます。

3. 条件付き生成:

融合モデル (またはテキスト モデルから直接取得された特徴ベクトル) は、画像生成モデルの条件付けに使用されます。この条件は、生成モデルがテキストの内容を「理解」し、それに応じて一致する画像を生成するように導くものとして理解できます。

4. 画像生成:

最後に、画像生成モデル (DALLE やその他の生成的敵対ネットワーク ベースのモデルなど) がこの条件付きベクトルを受け取り、それに一致する画像を生成します。このプロセスでは通常、モデルが条件に最も一致する画像出力を生成しようとするため、多くの内部計算が行われます。

プロセス全体は、テキスト入力 → テキスト特徴抽出 → 特徴融合(ある場合) → 条件付き生成 → 画像出力と簡略化できます。このプロセスでは、「融合モデル」は独立したモデルである場合もあれば、条件付き生成モデルの一部である場合もあります。重要な点は、推論時の特徴の融合は、トレーニング フェーズ中に学習した知識とパラメータに基づいていることです。

マルチモデルエクスペリエンス

マルチモデル実装の原理を理解したら、ChatGPT にログインして体験してみましょう。現在、 DALLE 3の機能は ChatGPT 4に統合されています。対応する画像を生成するには、指示を入力するだけです。下図のように、かわいい猫をテキストで説明すると、ChatGPT 画像の生成を完了するのに役立ちます。

それだけでなく、OpenAIは写真も認識できます。写真を提供すると、OpenAIはその写真をもとに内容を説明してくれます。下の図のように、インターネット上で子猫の写真を見つけて、OpenAIに認識してもらいました。

今回はOpenAIのAPIを呼び出して上記の機能を実装します。結局のところ、プログラマーとしては、コードを入力せずにツールを使用してテキストを入力するだけでは満足できません。

このコードは、Python と OpenAI ライブラリを使用して、OpenAI の GPT-4 API と対話します。目的は、ユーザーがモデルに画像アドレスを送信できるチャット セッションを作成することです。コードは URL アドレスを通じて画像を読み取り、認識し、最終的に理解したテキストを出力します。

 import os import openai # 导入所需库:os 用于读取环境变量,openai 用于与OpenAI API 交互。 openai.api_key = os.getenv('OPENAI_API_KEY') # 从环境变量获取OpenAI 的API 密钥并设置。这样可以避免将密钥硬编码在代码中,提高安全性。 response = openai.ChatCompletion.create( model="gpt-4-vision-preview", # 指定使用的GPT-4 模型版本。这里用的'gpt-4-vision-preview' 表示一个特别的版本,可能包含处理图像的能力。 messages=[ { "role": "user", "content": [ {"type": "text", "text": "这张图片表达了什么意思?"}, { "type": "image_url", # 用户消息(messages),包括一段文本和一个图像的URL "image_url": "http://www.jituwang.com/uploads/allimg/160327/257860-16032H3362484.jpg" }, ], } ], # 响应的最大长度(max_tokens) max_tokens=200, ) print(response.choices[0])

コードは比較的単純ですが、ここで説明します。

ライブラリのインポート: コードは最初に os と openai をインポートします。 os ライブラリは環境変数から API キーを読み取るために使用され、openai ライブラリは OpenAI API とのやり取りを実行するために使用されます。

チャットリクエストを作成します:

  • モデル: 使用する OpenAI モデルが「gpt-4-vision-preview」であることを指定します。このバージョンの大規模モデルには、画像を処理する機能があります。
  • メッセージ: ユーザーが AI とチャットするプロセスをシミュレートする辞書リストです。この例では、ユーザーはテキストで画像の意味を尋ね、画像の URL を提供します。
  • max_tokens: モデルの回答の最大長を定義します。ここでは 200 トークンに設定されています。

実行後、結果は JSON テキストになります。これをエディターで開きます。下の図に示すように、プログラムは白い子猫である写真の内容を認識し、動作と表情を正確に説明します。

画像認識から動画認識へ

実は、今回OpenAIが提供した機能は写真の認識だけではなく、写真認識の能力を動画まで拡張することも可能だ。下の図のように、1秒間の動画が24フレームの画像で構成されていると仮定し、各画像を識別し、識別した情報を要約して要約を生成することができれば、動画を認識できるのでしょうか?

これは良いアイデアですが、実際に検証する必要があります。準備されたビデオを追加し、OpenCV コンポーネントを介してビデオをロードし、ビデオの内容を読み取ります。読み取った動画内容を画像のフレームに分割し、画像を認識させることで動画認識の目的を達成します。

コードは次のとおりです。

1. コンポーネントライブラリをインポートする

# 导入IPython用于显示功能from IPython.display import display, Image, Audio # 导入cv2,我们使用OpenCV库来读取视频文件import cv2 # 导入base64库用于数据编码import base64 # 导入time库用于控制显示时间import time # 导入openai库,用于调用OpenAI的API import openai # 导入os库,用于操作系统级别的接口,如环境变量import os # 导入requests库,用于发起HTTP请求import requests

もちろん、ご要望に応じて、コードコメントの位置を関連するコード行の上になるように調整しました。

ビデオ処理

ビデオ ファイル ("the-sea.mp4") を開き、各フレームを読み取り、JPEG 形式に変換して、base64 文字列にエンコードします。この処理方法は、ネットワーク通信で画像データを送信する場合など、画像データをテキスト形式で保存または送信する必要があるシナリオで非常に役立ちます。

 import cv2 # 导入OpenCV 库video = cv2.VideoCapture("the-sea.mp4") # 使用OpenCV 打开视频文件"the-sea.mp4" base64Frames = [] # 初始化一个空列表,用于存储转换为base64 编码的帧while video.isOpened(): # 当视频成功打开时,循环读取每一帧success, frame = video.read() # 读取视频的下一帧,'success' 是一个布尔值,表示是否成功读取帧,'frame' 是读取的帧if not success: break # 如果未能成功读取帧(例如视频结束),则退出循环_, buffer = cv2.imencode(".jpg", frame) # 将读取的帧(frame)编码为JPEG 格式,'_' 是一个占位符,表示我们不需要第一个返回值base64Frames.append(base64.b64encode(buffer).decode("utf-8")) # 将JPEG 编码的帧转换为base64 编码,并将其解码为UTF-8 字符串,然后添加到列表'base64Frames' 中video.release() print(len(base64Frames), "frames read.")

インポートと初期化: まず、必要な OpenCV ライブラリをインポートし、エンコードされたフレームを格納するための空のリスト base64Frames を作成します。

ビデオ フレームの読み取り: while ループと video.read() メソッドを使用して、ビデオをフレームごとに読み取ります。読み取りが成功すると、フレームは JPEG 形式でエンコードされ、その後、これらの JPEG フレームは base64 エンコードに変換されてリストに追加されます。

リソース管理と出力: ループが終了したら、video.release() を使用してビデオ ファイルを解放し、処理の結果として読み取ったフレームの数を出力します。これにより、ビデオ コンテンツがどのように処理されているかを直感的に理解できます。

ビデオフレームを表示

base64 でエンコードされた画像フレームのリストを走査し、それらを連続的に表示して、ビデオ再生の効果を実現します。

 from IPython.display import display, Image import time # 导入必要的库:IPython.display 中的display 和Image 用于显示图像,time 用于控制播放速度display_handle = display(None, display_id=True) # 创建一个显示句柄,用于在之后更新显示的图像。'display_id=True' 允许之后通过该句柄更新显示的内容for img in base64Frames: # 遍历包含base64 编码图像帧的列表display_handle.update(Image(data=base64.b64decode(img.encode("utf-8")))) # 使用display 句柄更新显示的图像。首先将base64 编码的字符串解码回二进制数据,然后创建一个Image 对象并显示time.sleep(0.025) # 在每帧之间暂停0.025 秒,以便模拟视频播放的效果

ディスプレイ ハンドルを初期化します。まず、更新可能なディスプレイ オブジェクトである display_handle を作成します。これを行うと、新しい画像表示を作成する代わりに、ループの後半で表示される画像を更新できます。

画像フレームを走査して表示する: for ループを使用して、base64Frames リスト内の各 base64 エンコードされた画像フレームを反復処理します。ループ内で、display_handle.update() メソッドを使用して、現在表示されている画像を更新します。これには、base64 でエンコードされた文字列をバイナリ データにデコードし、Image オブジェクトを使用して表示可能な画像に変換することが含まれます。

再生速度を制御する: 各画像の更新後、time.sleep(0.025) を使用してしばらく (0.025 秒) 一時停止します。これにより、画像フレーム間に短い遅延が作成され、ビデオの連続再生がよりスムーズになります。

動画の効果を以下で確認してください。動画から写真をキャプチャしましたが、海に沈む夕日を描写した動画であることがわかります。

ビデオコンテンツを識別する

OpenAI の API を使用して、ビデオ フレームの内容を記述します。まず、モデル、API キー、リクエスト プロンプト情報などのリクエスト パラメータを設定し、API を呼び出して返されたコンテンツを出力します。

 import os import openai # 导入所需的库:os 用于访问环境变量,openai 用于与OpenAI 的API 进行交互PROMPT_MESSAGES = [ { "role": "user", # 标记消息的发送者角色为用户"content": [ "这是我想上传的视频帧。能否帮我描述这张视频帧的内容。", {"image": base64Frames[0], "resize": 768}, # 选择列表中的第一帧图像,缩放尺寸为768 像素], }, ] # 设置提示信息,以指导模型进行视频帧的内容描述params = { "model": "gpt-4-vision-preview", # 指定使用的模型版本"messages": PROMPT_MESSAGES, # 使用前面设置的提示信息"api_key": os.environ["OPENAI_API_KEY"], # 从环境变量中获取API 密钥"headers": {"Openai-Version": "2020-11-07"}, # 设置API 版本头信息"max_tokens": 300, # 设定请求的最大令牌数} # 设置API 调用的参数result = openai.ChatCompletion.create(params) # 使用提供的参数发起API 调用print(result.choices[0].message.content) # 打印API 返回的内容,即模型对视频帧内容的描述

プロンプト情報を設定します。PROMPT_MESSAGES には、ユーザー ロール タグや処理されるコンテンツなど、API リクエストのコア情報が含まれます。ここでの内容は、モデルにビデオ フレームの内容を記述するように要求することであり、ビデオ フレームは base64 でエンコードされた文字列として渡されます。

API 呼び出しパラメータを構成する: モデル名、プロンプト情報、API キー、API バージョン、要求されるトークンの最大数など、API 呼び出しに必要なすべてのパラメータは、params 辞書で構成されます。

API 呼び出しを開始する: openai.ChatCompletion.create メソッドを使用して API 呼び出しを開始し、以前に構成したパラメータを渡します。この呼び出しは、提供されたビデオ フレームのコンテンツに基づいてモデルを記述するように要求します。

出力結果: 最後に、API によって返された結果 (モデルによるビデオ フレームの内容の説明) を出力します。

最終結果は以下の通りです。

这张图片展示了一幅美丽的日落景象。太阳正从水平线上缓缓下降,天空被染成了橙色和红色的温暖色调。太阳的余晖在云层间穿透,形成了壮观的光线和阴影效果。海面平静,太阳的反射在水面上画出了一道闪耀的光路。远处的群山轮廓在天空的对比下显得剪影般的轮廓分明。整体上,这是一幅宁静、和谐、引发深思的图像。

OpenAIは映像の場面を描写するだけでなく、その意味合いまで拡張しているようです。これは人間を超えるペースです。

コンテンツ認識から音声放送まで

さて、ここまでで、画像からテキスト、ビデオからテキストへの変換が完了しました。ウェブサイトにビデオをアップロードしビデオの説明をしたいとします。このとき、テキストだけでなく、専門的な音声放送も必要です。よし!ビデオ内で認識されたテキストを音声放送に変換するの機能を実演したいと思います

次のコードは、Python と OpenAI の音声合成 API を使用してテキストを音声に変換します。つまり、ビデオによって生成されたテキスト (夕焼けのシーンを説明するテキスト) を音声に変換します。次に、応答内のオーディオ データを受信して​​集約し、Audio オブジェクトを使用してオーディオを再生します。

 import requests from IPython.display import Audio import os # 导入所需的库:requests 用于发起HTTP 请求,Audio 用于在Jupyter Notebook 中播放音频,os 用于读取环境变量# 向OpenAI 的语音合成API 发送POST 请求response = requests.post( "https://api.openai.com/v1/audio/speech", headers={ "Authorization": f"Bearer {os.environ['OPENAI_API_KEY']}", }, json={ "model": "tts-1", # 指定使用的语音合成模型"input": result.choices[0].message.content, # 要转换为语音的文本"voice": "onyx", # 选择的语音类型}, ) audio = b"" # 初始化一个空字节串,用于累积音频数据# 逐块读取响应中的音频数据for chunk in response.iter_content(chunk_size=1024 * 1024): audio += chunk # 使用response.iter_content 方法按块读取音频内容,每块最大为1 MB,并将其累加到audio 变量中Audio(audio) # 使用IPython 的Audio 对象播放累加的音频数据

準備とリクエストの作成: まず、必要なライブラリをインポートし、OpenAI の音声合成 API に POST リクエストを送信する準備をします。リクエスト ヘッダーには API キー (環境変数から取得) が含まれ、リクエスト ボディにはモデル名、変換するテキスト コンテンツ、音声タイプが含まれます。

オーディオ データを受信: API 応答からオーディオ データをチャンクごとに読み取ります。ここでは、各データ ブロックのサイズ制限として 1 MB が使用されます。ループを通じて、これらのデータ ブロックはバイト文字列オーディオに蓄積されます。

オーディオの再生: 最後に、Audio オブジェクトを使用して蓄積されたオーディオ データを再生します。これにより、Jupyter Notebook 環境内で直接オーディオを再生できるようになります。

オーディオ結果は次のとおりです。


上記のコードを試して、独自の音声ファイルを生成できます。

要約する

この記事では、OpenAI のマルチモーダル機能を詳細に検討することで、人工知能分野における最新の進歩を紹介しています。 GPT-4 Turboモデルの紹介からマルチモーダル技術の応用例まで、技術の理論的背景を提供するだけでなく、具体的なコード例を通じて、これらの技術を実際に画像生成、動画コンテンツ認識、音声変換に適用する方法を示します。これは、AI テクノロジーの最先端のトレンドを紹介するだけでなく、読者に AI テクノロジーを実践するための洞察とインスピレーションも提供します。

著者について

51CTO コミュニティ エディター兼シニア アーキテクトの Cui Hao 氏は、ソフトウェア開発とアーキテクチャで 18 年の経験があり、分散アーキテクチャでは 10 年の経験があります。


<<:  最強モデル育成チップH200発売! 141Gの大容量メモリ、AI推論が最大90%向上、H100にも対応

>>:  自動運転におけるBEVとSLAMをわかりやすく説明するにはどうすればいいでしょうか?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

数行のコードでUNetが安定!中山大学などが提案したScaleLong拡散モデル:スケーリングへの疑問からスケーリングへ

標準の UNet 構造では、ロング スキップ接続のスケーリング係数は通常 1 です。ただし、Imag...

...

チューリング学習:新世代のロボットは観察するだけで人間を模倣できる

[[187204]]最近、シェフィールド大学自動制御システム工学部のロデリッヒ・グロス博士は次のよう...

これら4つの業界は今後5年間で大きな利益を得るだろう

[[261735]] [51CTO.com クイック翻訳] アイリーン・リーはカウボーイ・ベンチャー...

自動運転における機械学習の核となるのはモデルではなくパイプラインである

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

百度技術研究所は、繁栄するテクノロジーエコシステムを促進するために一般に門戸を開放します

百度は4月28日、「世界に知恵を、未来に人材を育成」をテーマに百度技術研究所の開所式を開催し、もとも...

さまざまな機械学習アルゴリズムの選択の考え方を説明する記事

序文これは Zhihu に関する質問です: k 近傍法、ベイズ法、決定木、SVM、ロジスティック回帰...

...

魂への窓!人工知能は網膜をスキャンして心臓発作を予測できる

ビッグデータダイジェスト制作眼鏡をかければ心臓発作の危険があるかどうかがわかるなんて、驚きですよね?...

連合継続学習における最新の研究の進歩の概要

データプライバシーの制限により、複数のセンター間でのデータ共有は制限されており、フェデレーテッドラー...

2022年のスマート製造のトレンド

製造業は過去 1 世紀にわたって大きく変化しました。 新しい高度なテクノロジーが業界を前進させるにつ...

2021年までに自動運転は普及するでしょうか?業界の専門家は、さらに30年かかるかもしれないと述べている

[[402242]] 7年前、グーグルの親会社アルファベットの子会社であるウェイモは、花やシャボン玉...

Cloudsimを使用して多次元QoSに基づくリソーススケジューリングアルゴリズムを実装する

Cloudsim は、グリッドコンピューティングシミュレーションソフトウェア Gridsim のプロ...

IoT、AI、ブロックチェーンがビジネス経済を変革する

ビジネスとテクノロジーの世界のつながりは非常に強いため、テクノロジーの発展が次の段階に進むたびに、ビ...

自然言語処理シーケンスモデル - CRF 条件付きランダムフィールド

シーケンスモデルにおけるHMM(隠れマルコフモデル)を習得した後は、別のシーケンスモデルであるCRF...