多模态AI教程¶
概述¶
多模态AI是能够处理多种类型数据(文本、图像、音频、视频)的人工智能,是AI发展的重要方向。
什么是多模态¶
主流多模态模型¶
GPT-5.5(2026年最新)¶
# GPT-5.5能力
- 文本理解/生成
- 图像理解与生成(Images 2.0)
- 语音对话
- 105万token上下文
# 特点
- Terminal-Bench 82.7%编码第一
- 图像生成质量最强
- 性价比最高
Claude Opus 4.7(2026年最新)¶
# Claude Opus 4.7能力
- 文本处理(200K上下文)
- 图像理解
- 代码生成(SWE-Bench 80.8%)
- Agent能力最强
# 特点
- 编程能力业界领先
- 安全性高
- 中文写作最佳
Gemini 3.1 Pro(2026年最新)¶
开源多模态模型¶
| 模型 | 公司 | 特点 |
|---|---|---|
| LLaVA | 开源 | 图文理解 |
| Qwen-VL | 阿里 | 中文优化 |
| InternVL | 上海AI Lab | 图文视频 |
图像理解¶
使用GPT-5.5分析图像¶
from openai import OpenAI
import base64
client = OpenAI(api_key="your-api-key")
# 从URL分析图像
response = client.chat.completions.create(
model="gpt-5.5",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "请描述这张图片的内容"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"}
}
]
}
]
)
print(response.choices[0].message.content)
本地图像分析¶
import base64
# 读取本地图像
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
base64_image = encode_image("image.jpg")
response = client.chat.completions.create(
model="gpt-5.5",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}
}
]
}
]
)
使用开源模型¶
from transformers import pipeline
# 使用LLaVA
pipe = pipeline("image-to-text", model="llava-hf/llava-1.5-7b-hf")
result = pipe("image.jpg", prompt="请描述这张图片")
print(result[0]['generated_text'])
图像生成¶
DALL-E¶
response = client.images.generate(
model="dall-e-3",
prompt="一只可爱的猫咪在太空漫步,科幻风格",
size="1024x1024",
quality="standard",
n=1
)
image_url = response.data[0].url
Stable Diffusion¶
from diffusers import StableDiffusionPipeline
import torch
# 加载模型
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
torch_dtype=torch.float16
)
pipe = pipe.to("cuda")
# 生成图像
image = pipe("A beautiful sunset over the ocean").images[0]
image.save("sunset.png")
Midjourney¶
# 使用方式
1. Discord机器人
2. /imagine命令
3. 输入提示词
# 示例
/imagine a cyberpunk city, neon lights, rainy night --ar 16:9
语音处理¶
语音转文字(Whisper)¶
import whisper
# 加载模型
model = whisper.load_model("base")
# 转录音频
result = model.transcribe("audio.mp3")
print(result["text"])
文字转语音¶
语音对话¶
视频理解¶
视频内容分析¶
# 提取视频关键帧
import cv2
def extract_frames(video_path, interval=30):
cap = cv2.VideoCapture(video_path)
frames = []
count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
if count % interval == 0:
frames.append(frame)
count += 1
cap.release()
return frames
# 分析关键帧
frames = extract_frames("video.mp4")
# 使用GPT-5.5分析每帧
视频生成¶
# Sora(OpenAI)
- 文本生成视频
- 最长60秒
- 高质量输出
# Pika
- 文本/图像生成视频
- 免费可用
- 简单易用
# Runway
- 专业视频生成
- 多种风格
- API可用
多模态应用¶
文档理解¶
# PDF/文档分析
def analyze_document(file_path):
# 提取文本和图像
# 使用多模态模型理解
# 返回结构化结果
pass
# 示例:发票识别
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "请提取这张发票的所有信息"},
{"type": "image_url", "image_url": {"url": "invoice.jpg"}}
]
}]
)
电商应用¶
医疗影像¶
实战示例:图文问答系统¶
from openai import OpenAI
import gradio as gr
client = OpenAI(api_key="your-api-key")
def analyze_image(image, question):
# 转换图像为base64
import base64
from io import BytesIO
buffered = BytesIO()
image.save(buffered, format="JPEG")
img_str = base64.b64encode(buffered.getvalue()).decode()
response = client.chat.completions.create(
model="gpt-5.5",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": question},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{img_str}"}
}
]
}
]
)
return response.choices[0].message.content
# 创建界面
demo = gr.Interface(
fn=analyze_image,
inputs=[
gr.Image(type="pil"),
gr.Textbox(label="问题")
],
outputs=gr.Textbox(label="回答"),
title="图文问答系统"
)
demo.launch()