亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者 | 崔皓

摘要

本文介紹了AI target=_blank class=infotextkey>OpenAI的最新進展,重點關(guān)注其在多模態(tài)技術(shù)領(lǐng)域的突破。文章首先探討了GPT-4 Turbo模型的優(yōu)化和多模態(tài)功能的融合,如圖像生成和文本到語音轉(zhuǎn)換。隨后,作者深入解析多模態(tài)技術(shù)的工作原理,特別是文本到圖像的轉(zhuǎn)換過程。通過實際應(yīng)用和編程實例,展示了如何利用這些技術(shù)對圖像和視頻內(nèi)容進行識別,以及將識別內(nèi)容轉(zhuǎn)換為語音,體現(xiàn)了多模態(tài)技術(shù)在實際應(yīng)用中的廣泛潛力和影響力。

開篇

OpenAI最近在其平臺上宣布了一系列引人注目的新增和改進功能,這些更新旨在進一步推動人工智能的邊界擴展。這些更新不僅包括了性能更強大且成本更低的新型GPT-4 Turbo模型,而且還引入了多模態(tài)能力,這將極大地擴展開發(fā)者和研究人員的創(chuàng)新空間。以下是這些更新的要點:

1.GPT-4 Turbo模型:這個新模型代表了大規(guī)模語言模型的最新進展。它不僅性能更強大,而且價格更親民。這一模型支持高達128K的上下文窗口,意味著可以處理更長的對話和文本。GPT-4 Turbo的出現(xiàn),顯著提升了開發(fā)者利用大型語言模型潛能的能力,讓模型成為了一個真正的“全才”。

2.多模態(tài)功能:在多模態(tài)領(lǐng)域的最新進展尤為引人注目。OpenAI平臺上的新功能包括了視覺能力的提升、圖像創(chuàng)造(DALL·E 3)以及文本到語音(TTS)技術(shù)。這些多模態(tài)功能的結(jié)合不僅開啟了新的應(yīng)用場景,還為用戶提供了一個更加豐富和互動的體驗。

3.助手API(Assistants API):OpenAI新推出的助手API讓開發(fā)者更加便捷地構(gòu)建目標明確的AI應(yīng)用。這個API提供了調(diào)用模型和工具的簡化方式,從而使開發(fā)復雜的輔助性AI應(yīng)用成為可能,無論是為了業(yè)務(wù)流程自動化,還是為了增強用戶體驗。

看到這些功能的加入,讓人熱血澎湃,我迫不及待地登陸GPT嘗鮮這些功能。特別是多模態(tài)的功能讓我印象深刻,這里我將實踐操作以及代碼的分析與大家做一個分享。

多模態(tài)初探

多模態(tài)技術(shù)是一個日益流行的領(lǐng)域,它結(jié)合了不同類型的數(shù)據(jù)輸入和輸出,如文本、聲音、圖像和視頻,以創(chuàng)造更豐富、更直觀的用戶體驗。以下是多模態(tài)技術(shù)的幾個關(guān)鍵方面:

1.綜合多種感知模式:多模態(tài)技術(shù)整合了視覺(圖像、視頻)、聽覺(語音、音頻)、觸覺等多種感知模式。這種集成使得AI系統(tǒng)能夠更好地理解和解釋復雜的環(huán)境和情境。

2.增強的用戶交互:通過結(jié)合文本、圖像和聲音,多模態(tài)技術(shù)提供了更自然、更直觀的用戶交互方式。例如,用戶可以通過語音命令詢問問題,同時接收圖像和文本形式的答案。

3.上下文感知能力:多模態(tài)系統(tǒng)能夠分析和理解不同類型數(shù)據(jù)之間的關(guān)系,從而提供更準確的信息和響應(yīng)。例如,在處理自然語言查詢時,系統(tǒng)能夠考慮相關(guān)的圖像或視頻內(nèi)容,從而提供更為豐富的回答。

4.創(chuàng)新應(yīng)用:多模態(tài)技術(shù)的應(yīng)用范圍廣泛,包括但不限于自動化客服、智能助手、內(nèi)容創(chuàng)作、教育、醫(yī)療和零售等領(lǐng)域。它允許創(chuàng)建新型的應(yīng)用程序,這些應(yīng)用程序能夠更好地理解和響應(yīng)用戶的需求。

5.技術(shù)挑戰(zhàn):雖然多模態(tài)技術(shù)提供了巨大的潛力,但它也帶來了諸如數(shù)據(jù)融合、處理不同數(shù)據(jù)類型的復雜性以及確保準確性和效率的挑戰(zhàn)。

6. OpenAI的多模態(tài)實例:在OpenAI的框架下,多模態(tài)功能的一個顯著例子是DALL·E 3,它是一個先進的圖像生成模型,可以根據(jù)文本描述創(chuàng)建詳細和創(chuàng)造性的圖像。此外,文本到語音(TTS)技術(shù)則將文本轉(zhuǎn)換為自然 sounding的語音,進一步豐富了人機交互的可能性。

多模態(tài)原理解析

前面我們對多模態(tài)進行了基本的描述,多模態(tài)是指能夠理解和處理多種類型數(shù)據(jù)(如文本、圖像、聲音等)的技術(shù)。實現(xiàn)文本-圖片-聲音-視頻之間的轉(zhuǎn)換。轉(zhuǎn)化是表象,實質(zhì)需要理解。

在人工智能領(lǐng)域,多模態(tài)方法通常結(jié)合了自然語言處理(NLP)、計算機視覺(CV)和其他信號處理技術(shù),以實現(xiàn)更全面的數(shù)據(jù)理解和處理能力。

為了說明多模態(tài)的工作原理,我們這里舉一個從文字轉(zhuǎn)圖片的例子,幫助大家理解。我們將整個過程展示如下:

OpenAI新功能揭秘:多模態(tài)時代的到來

1. 文本特征提取:

首先,文本輸入通過一個文本模型(例如一個預(yù)訓練的語言模型)來提取文本特征。這個過程涉及將文本轉(zhuǎn)換成一個高維空間的向量,這個向量能夠表示文本的語義內(nèi)容。

2. 融合模型:

在某些情況下,確實會存在一個專門的融合模型,它是在訓練階段通過學習如何結(jié)合不同模態(tài)的數(shù)據(jù)而得到的。這個融合模型將在推理階段使用。

在其他情況下,融合模型可能是隱含的。例如,在條件生成模型中,文本特征向量直接用作生成圖像的條件,而不需要顯式的融合步驟。

3.條件生成:

融合模型(或者直接從文本模型得到的特征向量)用于為圖像生成模型設(shè)定條件。這個條件可以理解為指導生成模型“理解”文本內(nèi)容,并據(jù)此生成匹配的圖像。

4.圖像生成:

最后,圖像生成模型(如DALL·E或其他基于生成對抗網(wǎng)絡(luò)的模型)接收這個條件向量,并生成與之相匹配的圖像。這個過程通常涉及到大量的內(nèi)部計算,模型會嘗試生成與條件最匹配的圖像輸出。

整個流程可以簡化為:文本輸入 → 文本特征提取 → 特征融合(如果有)→ 條件生成 → 圖像輸出。在這個過程中,“融合模型”可能是一個獨立的模型,也可能是條件生成模型的一部分。關(guān)鍵點是,推理時的特征融合是基于在訓練階段學到的知識和參數(shù)進行的。

多模型體驗

了解了多模型實現(xiàn)原理之后,我們來登陸ChatGPT體驗一下,現(xiàn)在在ChatGPT4中已經(jīng)集成了DALLE 3 的功能,我們只需要輸入指令就可以生成對應(yīng)的圖片。如下所示,我們通過文字描述一只可愛的貓咪,ChatGPT 就能夠幫我完成圖片的生成。

OpenAI新功能揭秘:多模態(tài)時代的到來

不止于此,OpenAI還能夠識別圖片,當你提供圖片之后,OpenAI會根據(jù)圖片描述其中的內(nèi)容,如下圖我們從網(wǎng)絡(luò)上找到一張小貓的圖片,丟給OpenAI讓它識別一下。

OpenAI新功能揭秘:多模態(tài)時代的到來

這次我們通過調(diào)用OpenAI的API,來實現(xiàn)上述功能。畢竟作為程序員不敲敲代碼,只是用工具輸入文字還是不太過癮。

這段代碼使用 Python/ target=_blank class=infotextkey>Python 和 OpenAI 庫來與 OpenAI 的 GPT-4 API 交互。目的是創(chuàng)建一個聊天會話,其中用戶可以向模型發(fā)送圖像地址。代碼通過URL地址,讀取圖像并且對其進行識別,最終輸出理解的文字。

復制

import os

import openai

# 導入所需庫:os 用于讀取環(huán)境變量,openai 用于與 OpenAI API 交互。

openai.api_key = os.getenv('OPENAI_API_KEY')

# 從環(huán)境變量獲取 OpenAI 的 API 密鑰并設(shè)置。這樣可以避免將密鑰硬編碼在代碼中,提高安全性。

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"

},

],

}

],

# 響應(yīng)的最大長度 (max_tokens)

max_tokens=200,

print(response.choices[0])

雖然代碼比較簡單,我們這里還是解釋一下。

導入庫:代碼首先導入 os 和 openai。os 庫用于讀取環(huán)境變量中的 API 密鑰,而 openai 庫用于執(zhí)行與 OpenAI API 的交互。

創(chuàng)建聊天請求:

  • Model:指定了要使用的 OpenAI 模型為 "gpt-4-vision-preview",這個版本的大模型具備處理圖像的能力。
  • Messages:這是一個字典列表,模擬了用戶與 AI 聊天的過程。在這個例子中,用戶通過文本詢問一張圖片的含義,并提供了圖片的 URL。
  • max_tokens:定義了模型回答的最大長度,這里設(shè)置為 200 tokens。

執(zhí)行之后,結(jié)果是一段JSON文本,我們使用編輯器打開,如下圖所示,程序識別出圖片的內(nèi)容,是一只白色的小貓,并且對動作和表情都進行了精確的描述。

OpenAI新功能揭秘:多模態(tài)時代的到來

從識別圖片到識別視頻

實際上OpenAI這次提供的功能不只是對圖片的識別,還可以對其進行擴展,將對圖片識別的能力推廣到視頻上。如下圖所示,假設(shè)一段1秒鐘的視頻是由24幀圖片組成,如果我們能夠?qū)⒚繌垐D片進行識別,并且將識別的信息進行總結(jié)生成摘要是不是就可以對視頻進行識別了呢?

OpenAI新功能揭秘:多模態(tài)時代的到來

這個想法不錯,但是需要通過實踐去驗證,我們使用一段代碼加入早已準備好的視頻,通過OpenCV組件加載視頻,并且對視頻的內(nèi)容進行讀取。將讀取之后的視頻內(nèi)容,分成一幀一幀的圖片,通過對圖片的識別達到對視頻識別的目的。

代碼如下:

1.導入組件庫

復制

# 導入IPython用于顯示功能

from IPython.display import display, Image, Audio

# 導入cv2,我們使用OpenCV庫來讀取視頻文件

import cv2

# 導入庫用于數(shù)據(jù)編碼

import

# 導入time庫用于控制顯示時間

import time

# 導入openai庫,用于調(diào)用OpenAI的API

import openai

# 導入os庫,用于操作系統(tǒng)級別的接口,如環(huán)境變量

import os

# 導入requests庫,用于發(fā)起HTTP請求

import requests

當然,我會按照您的要求調(diào)整代碼注釋的位置,使其位于相關(guān)代碼行的上方。

視頻處理

打開一個視頻文件("the-sea.mp4"),讀取其中的每一幀,并將這些幀轉(zhuǎn)換成 JPEG 格式后編碼為 字符串。這種處理方式在需要以文本格式存儲或傳輸圖像數(shù)據(jù)的場景中非常有用,如在網(wǎng)絡(luò)通信中發(fā)送圖像數(shù)據(jù)。

復制

import cv2

# 導入 OpenCV 庫

video = cv2.VideoCapture("the-sea.mp4")

# 使用 OpenCV 打開視頻文件 "the-sea.mp4"

Frames = []

# 初始化一個空列表,用于存儲轉(zhuǎn)換為 編碼的幀

while video.isOpened():

# 當視頻成功打開時,循環(huán)讀取每一幀

success, frame = video.read()

# 讀取視頻的下一幀,'success' 是一個布爾值,表示是否成功讀取幀,'frame' 是讀取的幀

if not success:

break

# 如果未能成功讀取幀(例如視頻結(jié)束),則退出循環(huán)

_, buffer = cv2.imencode(".jpg", frame)

# 將讀取的幀(frame)編碼為 JPEG 格式,'_' 是一個占位符,表示我們不需要第一個返回值

Frames.Append(.b64encode(buffer).decode("utf-8"))

# 將 JPEG 編碼的幀轉(zhuǎn)換為 編碼,并將其解碼為 UTF-8 字符串,然后添加到列表 'Frames' 中

video.release()

print(len(Frames), "frames read.")

導入和初始化:首先導入所需的 OpenCV 庫,并創(chuàng)建一個空列表 Frames 用于存儲編碼后的幀。

讀取視頻幀:通過 while 循環(huán)和 video.read() 方法逐幀讀取視頻。如果讀取成功,將幀編碼為 JPEG 格式,然后將這些 JPEG 格式的幀轉(zhuǎn)換為 編碼,并添加到列表中。

資源管理和輸出:循環(huán)結(jié)束后,使用 video.release() 釋放視頻文件,隨后打印出讀取的幀數(shù),作為處理的結(jié)果。這提供了對視頻內(nèi)容處理情況的直觀了解。

顯示視頻幀

遍歷一個包含 編碼的圖像幀列表,連續(xù)顯示這些幀,從而實現(xiàn)視頻播放的效果。

復制

from IPython.display import display, Image

import time

# 導入必要的庫:IPython.display 中的 display 和 Image 用于顯示圖像,time 用于控制播放速度

display_handle = display(None, display_id=True)

# 創(chuàng)建一個顯示句柄,用于在之后更新顯示的圖像。'display_id=True' 允許之后通過該句柄更新顯示的內(nèi)容

for img in Frames:

# 遍歷包含 編碼圖像幀的列表

display_handle.update(Image(data=.b64decode(img.encode("utf-8"))))

# 使用 display 句柄更新顯示的圖像。首先將 編碼的字符串解碼回二進制數(shù)據(jù),然后創(chuàng)建一個 Image 對象并顯示

time.sleep(0.025)

# 在每幀之間暫停 0.025 秒,以便模擬視頻播放的效果

初始化顯示句柄:首先創(chuàng)建一個 display_handle,它是一個可以更新的顯示對象。這樣做可以在之后循環(huán)中更新顯示的圖像,而不是創(chuàng)建新的圖像顯示。

遍歷和顯示圖像幀:使用 for 循環(huán)遍歷 Frames 列表中的每一個 編碼的圖像幀。在循環(huán)內(nèi)部,使用 display_handle.update() 方法來更新當前顯示的圖像。這里涉及將 編碼的字符串解碼為二進制數(shù)據(jù),并使用 Image 對象將其轉(zhuǎn)換為可顯示的圖像。

控制播放速度:在每次更新圖像后,使用 time.sleep(0.025) 來暫停一段時間(0.025秒),這樣可以在圖像幀之間創(chuàng)建短暫的延遲,使得連續(xù)播放的視頻效果更加平滑。

查看視頻效果如下,我們截取了視頻中的一張圖片,可以看出是一段描述海上日落的視頻。

OpenAI新功能揭秘:多模態(tài)時代的到來

識別視頻內(nèi)容

使用 OpenAI 的 API 來描述一個視頻幀的內(nèi)容。首先設(shè)置請求的參數(shù),包括模型、API 密鑰、請求的提示信息,然后調(diào)用 API 并打印返回的內(nèi)容。

復制

import os

import openai

# 導入所需的庫:os 用于訪問環(huán)境變量,openai 用于與 OpenAI 的 API 進行交互

PROMPT_MESSAGES = [

{

"role": "user", # 標記消息的發(fā)送者角色為用戶

"content": [

"這是我想上傳的視頻幀。能否幫我描述這張視頻幀的內(nèi)容。",

{"image": Frames[0], "resize": 768}, # 選擇列表中的第一幀圖像,縮放尺寸為 768 像素

],

},

]

# 設(shè)置提示信息,以指導模型進行視頻幀的內(nèi)容描述

params = {

"model": "gpt-4-vision-preview", # 指定使用的模型版本

"messages": PROMPT_MESSAGES, # 使用前面設(shè)置的提示信息

"api_key": os.environ["OPENAI_API_KEY"], # 從環(huán)境變量中獲取 API 密鑰

"headers": {"Openai-Version": "2020-11-07"}, # 設(shè)置 API 版本頭信息

"max_tokens": 300, # 設(shè)定請求的最大令牌數(shù)

}

# 設(shè)置 API 調(diào)用的參數(shù)

result = openai.ChatCompletion.create(params)

# 使用提供的參數(shù)發(fā)起 API 調(diào)用

print(result.choices[0].message.content)

# 打印 API 返回的內(nèi)容,即模型對視頻幀內(nèi)容的描述

設(shè)置提示信息:PROMPT_MESSAGES 包含了 API 請求的核心信息,其中包括用戶角色標記和要處理的內(nèi)容。這里的內(nèi)容是請求模型描述視頻幀的內(nèi)容,視頻幀作為 編碼的字符串傳入。

配置 API 調(diào)用參數(shù):在 params 字典中配置了 API 調(diào)用所需的所有參數(shù),包括模型名稱、提示信息、API 密鑰、API 版本和請求的最大令牌數(shù)。

發(fā)起 API 調(diào)用:使用 openai.ChatCompletion.create 方法發(fā)起 API 調(diào)用,傳入之前配置的參數(shù)。這個調(diào)用將請求模型根據(jù)提供的視頻幀內(nèi)容進行描述。

輸出結(jié)果:最后,打印出 API 返回的結(jié)果,即模型對視頻幀內(nèi)容的描述。

展示最終結(jié)果,如下:

復制

這張圖片展示了一幅美麗的日落景象。太陽正從水平線上緩緩下降,天空被染成了橙色和紅色的溫暖色調(diào)。太陽的余暉在云層間穿透,形成了壯觀的光線和陰影效果。海面平靜,太陽的反射在水面上畫出了一道閃耀的光路。遠處的群山輪廓在天空的對比下顯得剪影般的輪廓分明。整體上,這是一幅寧靜、和諧、引發(fā)深思的圖像。

看來OpenAI不僅描繪了視頻中的畫面,還對其的內(nèi)涵進行了引申,這是要趕超人類的節(jié)奏了。

從識別內(nèi)容到語音播報

好了到現(xiàn)在,我們已經(jīng)完成了從圖片到文字,視頻到文字的轉(zhuǎn)換了。假設(shè)我們要將視頻上傳到網(wǎng)站時,并且對視頻進行解釋,此時不僅需要文字更需要一段專業(yè)的語音播報。好吧!我是想展示下面的功能,如何將視頻識別的文字轉(zhuǎn)化成語音播報。

下面這段代碼使用 Python 和 OpenAI 的語音合成 API 來將文本轉(zhuǎn)換為語音,即將視頻生成的文本(描述日落景象的文本)轉(zhuǎn)換成語音。然后,它接收并匯總響應(yīng)中的音頻數(shù)據(jù),并使用 Audio 對象來播放這段音頻。

復制

import requests

from IPython.display import Audio

import os

# 導入所需的庫:requests 用于發(fā)起 HTTP 請求,Audio 用于在 Jupyter Notebook 中播放音頻,os 用于讀取環(huán)境變量

# 向 OpenAI 的語音合成 API 發(fā)送 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, # 要轉(zhuǎn)換為語音的文本

"voice": "onyx", # 選擇的語音類型

},

audio = b""

# 初始化一個空字節(jié)串,用于累積音頻數(shù)據(jù)

# 逐塊讀取響應(yīng)中的音頻數(shù)據(jù)

for chunk in response.iter_content(chunk_size=1024 * 1024):

audio += chunk

# 使用 response.iter_content 方法按塊讀取音頻內(nèi)容,每塊最大為 1 MB,并將其累加到 audio 變量中

Audio(audio)

# 使用 IPython 的 Audio 對象播放累加的音頻數(shù)據(jù)

準備和發(fā)起請求:首先導入所需的庫,并準備發(fā)起一個 POST 請求到 OpenAI 的語音合成 API。請求頭部包含了 API 密鑰(從環(huán)境變量獲取),請求體包含了模型名稱、要轉(zhuǎn)換的文本內(nèi)容以及語音類型。

接收音頻數(shù)據(jù):從 API 響應(yīng)中逐塊讀取音頻數(shù)據(jù)。這里使用了 1 MB 作為每個數(shù)據(jù)塊的大小限制。通過循環(huán),將這些數(shù)據(jù)塊累加到一個字節(jié)串 audio 中。

播放音頻:最后,使用 Audio 對象來播放累積的音頻數(shù)據(jù)。這允許在 Jupyter Notebook 環(huán)境中直接播放音頻。

音頻結(jié)果如下:

OpenAI新功能揭秘:多模態(tài)時代的到來

大家可以嘗試上面的代碼,生成自己的語音文件。

總結(jié)

文章通過詳盡地探討OpenAI的多模態(tài)功能,展示了人工智能領(lǐng)域的最新進展。從GPT-4 Turbo模型的介紹到多模態(tài)技術(shù)的應(yīng)用實例,不僅提供了技術(shù)的理論背景,還通過具體的代碼示例,展現(xiàn)了如何將這些技術(shù)實際應(yīng)用于圖像生成、視頻內(nèi)容識別和語音轉(zhuǎn)換。這不僅彰顯了AI技術(shù)的前沿動向,也為讀者提供了實踐AI技術(shù)的洞見和啟發(fā)。

作者介紹

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗,10年分布式架構(gòu)經(jīng)驗。

分享到:
標簽:OpenAI
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定