ImageBind 是支持綁定來自六種不同模態(圖像、文本、音頻、深度、溫度和IMU 數據)的信息的AI 模型,它將這些信息統一到單一的嵌入式表示空間中,使得機器能夠更全面、直接地從多種信息中學習,而無需明確的監督(即組織和標記原始數據的過程)。
ImageBind 通過將文本、圖像/視頻和音頻、視覺、溫度還有運動數據流串聯在一起,形成一個單一的embedding space,讓機器能從多維度來理解世界,也能創造沉浸式的多感官體驗。
ImageBind 通過將六種模式的嵌入對齊到一個共享的空間,實現了跨模式檢索,這就能搜索那些沒有同時出現的不同類型的內容。把不同的模式嵌入疊加,可以自然地構造它們的語義。例如ImageBind 可以與DALLE-2 解碼器和CLIP 文本一起嵌入,生成音頻到圖像的映射,就像人類聽到聲音腦補畫面的那種感覺。
示例代碼
跨模態(例如圖像、文本和音頻)提取和比較特徵。
import data
import torch
from models import imagebind_model
from models.imagebind_model import ModalityType
text_list=["A dog.", "A car", "A bird"]
image_paths=[".assets/dog_image.jpg", ".assets/car_image.jpg", ".assets/bird_image.jpg"]
audio_paths=[".assets/dog_audio.wav", ".assets/car_audio.wav", ".assets/bird_audio.wav"]
device = "cuda:0" if torch.cuda.is_available() else "cpu"
# Instantiate model
model = imagebind_model.imagebind_huge(pretrained=True)
model.eval()
model.to(device)
# Load data
inputs = {
ModalityType.TEXT: data.load_and_transform_text(text_list, device),
ModalityType.VISION: data.load_and_transform_vision_data(image_paths, device),
ModalityType.AUDIO: data.load_and_transform_audio_data(audio_paths, device),
}
with torch.no_grad():
embeddings = model(inputs)
print(
"Vision x Text: ",
torch.softmax(embeddings[ModalityType.VISION] @ embeddings[ModalityType.TEXT].T, dim=-1),
)
print(
"Audio x Text: ",
torch.softmax(embeddings[ModalityType.AUDIO] @ embeddings[ModalityType.TEXT].T, dim=-1),
)
print(
"Vision x Audio: ",
torch.softmax(embeddings[ModalityType.VISION] @ embeddings[ModalityType.AUDIO].T, dim=-1),
)
# Expected output:
#
# Vision x Text:
# tensor([[9.9761e-01, 2.3694e-03, 1.8612e-05],
# [3.3836e-05, 9.9994e-01, 2.4118e-05],
# [4.7997e-05, 1.3496e-02, 9.8646e-01]])
#
# Audio x Text:
# tensor([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])
#
# Vision x Audio:
# tensor([[0.8070, 0.1088, 0.0842],
# [0.1036, 0.7884, 0.1079],
# [0.0018, 0.0022, 0.9960]])
#ImageBind首頁文檔和下載 #多模態AI #模型 #程式开发