返回学习路线

AI 学习路线 · 深入

Part 19 · 多模态应用

让 AI 同时"看得懂图、听得了音、说得出话"。


Section 1 · 多模态是什么(概念)

Subsection 1 · 记概念

多模态 = 同时处理多种信息形态(文本/图像/音频/视频)单模态:只会文本(ChatGPT 文本版)多模态:能看图说话、听音辨义、看视频理解(GPT-4o / Gemini / 通义千问VL)

Subsection 2 · 体验一个多模态 API

  • 用你注册的通义千问 DashScope,在控制台找到"多模态"模型(如 qwen-vl-max),试传一张图片让它描述。
  • 预期看到:模型能描述图片内容。

过关:能说出多模态概念 = Section 1 完成。


Section 2 · CLIP(图文匹配基础)

Subsection 1 · 概念

CLIP = 把图片和文字映射到同一向量空间  - 图→向量,文→向量  - 语义匹配的图文,向量距离近用途:图文搜索、图文匹配、图像分类(零样本)

Subsection 2 · 跑 CLIP cmd:pip install open_clip_torch 或 pip install transformers 新建 clip_demo.py(用 transformers):

python
from transformers import CLIPProcessor, CLIPModelfrom PIL import Imageimport requests# 下载一张示例图(或换成你本地的图片路径)img = Image.open(requests.get("https://httpbin.org/image/jpeg", stream=True).raw) if False else Image.open("your_image.jpg")# 上面那行不行就手动放一张图到项目里,改用:img = Image.open("your_image.jpg")
  • 网络不便时:用本机一张图片文件,路径换成你自己的。
  • 完整代码(有本地图时):
python
from transformers import CLIPProcessor, CLIPModelfrom PIL import Imagemodel = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")img = Image.open("your_image.jpg")texts = ["一只猫", "一条狗", "一个风景"]inputs = processor(text=texts, images=img, return_tensors="pt", padding=True)out = model(**inputs)probs = out.logits_per_image.softmax(dim=1)for t, p in zip(texts, probs[0].tolist()):    print(f"{t}: {p:.2%}")
  • 预期看到:和图片最匹配的文本概率最高。

过关:CLIP 跑通 = Section 2 完成。


Section 3 · 图像理解(BLIP / 现成多模态模型)

Subsection 1 · 用现成模型看图说话 用 transformers 的 image-to-text pipeline:

python
from transformers import pipelinecaption = pipeline("image-to-text", model="Salesforce/blip-image-captioning-base")result = caption("your_image.jpg")print("描述:", result[0]["generated_text"])
  • 预期看到:模型用一句话描述图片。
  • 这就是"看图说话"的底层。

过关:图像理解跑通 = Section 3 完成。


Section 4 · 图像生成概念(扩散模型)

Subsection 1 · 记概念

扩散模型(Diffusion)= 现在的图像生成主流思路:先学"把图加噪到纯噪声",再学"从纯噪声一步步去噪还原出图"你给它一句提示词 → 它从随机噪声"去噪"出你想要的图代表:DALL-E、Midjourney、Stable Diffusion

Subsection 2 · 看原理视频

  • B 站搜 扩散模型 原理 通俗,看 20 分钟(看懂"加噪/去噪"即可)。

过关:能说扩散模型大致思路 = Section 4 完成。


Section 5 · 跑 Stable Diffusion(本地生成图)

Subsection 1 · 装 diffusers cmd:pip install diffusers accelerate

Subsection 2 · 生成第一张图 新建 sd_demo.py:

python
from diffusers import StableDiffusionPipelineimport torchpipe = StableDiffusionPipeline.from_pretrained(    "runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16).to("cuda" if torch.cuda.is_available() else "cpu")prompt = "a cute cat reading a book, studio lighting"img = pipe(prompt).images[0]img.save("cat.png")print("已生成 cat.png")
  • 预期看到:cat.png 里是一只读书的猫。
  • 显存不够:换 CPU + 小步数,或改 model_id="stabilityai/sd-turbo"(更快)。
  • 中文提示词效果一般,英文提示词更稳。

过关:能生成图 = Section 5 完成。


Section 6 · 控制生成(提示词技巧)

Subsection 1 · 记提示词结构

好提示词 = 主体 + 动作 + 环境 + 光线 + 风格 + 画质词例:a girl walking in a rainy street, neon lights, cinematic, 4k, masterpiece负向提示词:not blurry, no text, no watermark(排除不想要的东西)

Subsection 2 · 生成 5 张对比

  • 用同一主体、不同风格词,生成 5 张,看差异。
  • 预期看到:风格词真的改变画面。

过关:会写提示词并对比 = Section 6 完成。


Section 7 · ControlNet(精确控制构图)

Subsection 1 · 概念

ControlNet = 给生成加"控制条件":姿势/边缘/深度/线稿例:给一张火柴人姿势 → 生成符合该姿势的人物用途:电商图、设计稿、一致性构图

Subsection 2 · 看资料

  • B 站搜 ControlNet 教程 看 20 分钟(了解能控制哪些维度即可,实操可选)。

过关:能说 ControlNet 解决什么 = Section 7 完成。


Section 8 · 语音合成 TTS

Subsection 1 · 跑 TTS cmd:pip install TTS(或 edge-tts,更轻) 用 edge-tts(免费微软语音):

pip install edge-tts

命令行:

edge-tts --voice zh-CN-XiaoxiaoNeural --text "你好,我是你的AI助手。" --write-media hello.mp3
  • 预期看到:生成 hello.mp3,能播放中文语音。
  • TTS = 文字转语音,是做"AI 语音助手/口播视频"的基础。

过关:能生成语音 = Section 8 完成。


Section 9 · 多模态 API 应用(通义/豆包)

Subsection 1 · 用 DashScope 多模态

  • 打开 DashScope 控制台 → 找到 qwen-vl 或图像理解 API 文档。
  • 用 Python 调 qwen-vl,传一张图 + 一个问题(“图里有什么”)。
  • 预期看到:API 返回图片描述。
  • 对比 Section 3 本地 BLIP:API 效果更强但花钱;本地省但弱。按需选。

过关:多模态 API 跑通 = Section 9 完成。


Section 10 · 综合 demo:识图 + 问答 + 语音

Subsection 1 · 组装 新建 multimodal_demo.py:输入一张图 → 用多模态模型描述 → 再用 TTS 读出来:

python
# 1. 图 → 文本(用 DashScope 或本地 BLIP,Section 3/9 的代码)description = "(图片描述结果)"# 2. 文本 → 语音(edge-tts)import subprocesssubprocess.run(["edge-tts", "--voice", "zh-CN-XiaoxiaoNeural", "--text", description, "--write-media", "out.mp3"])print("已生成语音 out.mp3")
  • 预期看到:一张图 → 一段文字 → 一段语音,全链路通。

过关:端到端多模态 demo 跑通 = Section 10 完成。


Section 11 · 综合项目:AI 看图助手(起)

Subsection 1 · 定需求 + 搭架子

  • 项目名 ai_vision_helper:上传图片 → 多模态模型回答关于图的问题 → Web 界面展示。
  • 用 FastAPI 搭后端(复用Part 5 的服务器套路)+ 简单 HTML 上传页。

过关:架子搭好 = Section 11 完成。


Section 12 · 综合项目:接入模型 + 流式

Subsection 1 · 接多模态 + 流式回答

  • 接入 qwen-vl 或 BLIP,支持用户问图。
  • 回答用流式(SSE)返回,前端打字机效果。

过关:能问图回答 = Section 12 完成。


Section 13 · 综合项目:加 TTS 朗读

Subsection 1 · 加语音

  • 在回答旁加"朗读"按钮,点一下用 edge-tts 生成并播放语音。

过关:识图 + 朗读全通 = Section 13 完成。


Section 14 · 综合项目:打磨 + 部署

Subsection 1 · 打磨 + README

  • 界面美化、错误处理、README(架构图/启动步骤/演示截图)。
  • 部署到服务器或本地可访问。

过关:项目可交付 = Section 14 完成。


Section 15 · 进阶:视频理解(可选)

Subsection 1 · 概念 + 试

  • 了解视频理解 = 抽帧 + 多模态逐帧理解 + 时序整合。
  • 用 qwen-vl 的"视频理解"能力(DashScope 文档有)试一次短视频问答(可选)。

过关:了解视频理解思路 = Section 15 完成。


Section 16 · 进阶:语音识别 ASR(可选)

Subsection 1 · 试 ASR

  • 用 edge-tts 生成一段语音 → 再用 whisper(pip install openai-whisper)转回文字。
  • 预期看到:语音 → 文字(语音识别闭环)。

过关:ASR 跑通 = Section 16 完成。


Section 17 · 进阶:图生图 / 风格迁移(可选)

Subsection 1 · 用 SD 做图生图

  • diffusers 里用 img2img:给一张图 + 提示词 → 生成"同构图换风格"的新图。
  • 预期看到:图风格改变。

过关:图生图跑通 = Section 17 完成。


Section 18 · 多模态产品思路

Subsection 1 · 记落地场景

电商     商品图生成/描述/换背景教育     拍照搜题/PPT 转讲解办公     表格/发票 OCR → 结构化医疗     医学影像辅助解读(仅辅助)内容     AI 配音/数字人/口播视频
  • 结合你的情况想一个可做的方向,写进笔记。

过关:能说出落地场景 = Section 18 完成。


Section 19 · 面试题

Subsection 1 · 练习

  1. 什么是多模态?和单模态区别?
  2. CLIP 是怎么对齐图文?
  3. 扩散模型生成图像的基本思路?
  4. Stable Diffusion 和 GAN 的区别(了解即可)?
  5. 你做过多模态什么项目?
  • 先自己答,再让 DeepSeek 补充。

过关:5 题能答 = Section 19 完成。


Section 20 · 站 17 验收

勾选

  • 能说多模态概念
  • CLIP 图文匹配跑通
  • 图像理解(BLIP 或 API)跑通
  • Stable Diffusion 生成图跑通
  • 能写好生成提示词
  • 了解 ControlNet
  • TTS 生成语音跑通
  • 多模态 API 跑通
  • 识图+问答+语音端到端 demo 跑通
  • 综合项目 ai_vision_helper 完成
  • 5 道面试题能答

写 300 字Part 17 总结:你的多模态项目能干什么、用了哪些模型。

全勾选 = Part 19 通过 → 进入下一站 Part 20 · 项目实战 + 求职备战)。