docs: 扁平化目录结构,优化文档为 Coding Agent 可读格式
- 移除 Obsidian 特有语法(callout、wikilinks、YAML frontmatter) - 目录结构从 3 层嵌套扁平化为编号文件(01~09) - 新增 docs/README.md 文档索引与推荐阅读顺序 - 精简冗余解释,保留所有代码块和实现参考 - CLAUDE.md 全面中文化
This commit is contained in:
73
docs/07-视觉理解.md
Normal file
73
docs/07-视觉理解.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 视觉理解
|
||||
|
||||
## 概述
|
||||
|
||||
从摄像头视频流到 AI 语义理解的技术链路:**帧采样** → **图像编码** → **多模态 LLM** → **语义结果**。
|
||||
|
||||
摄像头每秒 30 帧,全部送入 LLM 不现实也不经济,帧采样是第一个需要解决的问题。
|
||||
|
||||
## 帧采样策略
|
||||
|
||||
| 策略 | 原理 | 适用场景 |
|
||||
|------|------|---------|
|
||||
| 固定间隔采样 | 每 N 秒取一帧 | 画面变化缓慢 |
|
||||
| 关键帧检测 | 对比相邻帧差异,变化超阈值时触发 | 画面动态变化较多 |
|
||||
| 事件驱动采样 | 用户主动触发(如拍照按钮) | 精确提问场景 |
|
||||
| **混合策略** | 低频定时 + 高频事件触发 | **通用推荐方案** |
|
||||
|
||||
关键帧检测核心逻辑:
|
||||
|
||||
```python
|
||||
import numpy as np
|
||||
|
||||
def is_keyframe(prev_frame, curr_frame, threshold=30):
|
||||
"""通过帧间像素差异判断是否为关键帧"""
|
||||
diff = np.mean(np.abs(prev_frame.astype(int) - curr_frame.astype(int)))
|
||||
return diff > threshold
|
||||
```
|
||||
|
||||
> 实际开发中,先降低分辨率(如 320x240)做关键帧检测,再对命中帧保留原始分辨率送入 LLM,兼顾速度与精度。
|
||||
|
||||
## 图像编码与多模态输入
|
||||
|
||||
主流多模态 LLM(GPT-4o、Claude)接受图片的两种方式:
|
||||
|
||||
| 方式 | 适用场景 |
|
||||
|------|---------|
|
||||
| Base64 内联 | 本地/实时场景 |
|
||||
| URL 引用 | 已有图床的场景 |
|
||||
|
||||
OpenAI 兼容接口调用示例:
|
||||
|
||||
```typescript
|
||||
const response = await openai.chat.completions.create({
|
||||
model: "gpt-4o",
|
||||
messages: [
|
||||
{
|
||||
role: "user",
|
||||
content: [
|
||||
{ type: "text", text: "请描述画面中的内容" },
|
||||
{
|
||||
type: "image_url",
|
||||
image_url: {
|
||||
url: `data:image/jpeg;base64,${base64Image}`,
|
||||
detail: "low" // "low" | "high" | "auto"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
});
|
||||
```
|
||||
|
||||
**detail 参数影响**:
|
||||
- `low`:65x65 缩略图,约 85 tokens,适合快速识别
|
||||
- `high`:按 512px 方块切分,细节丰富但 token 数激增
|
||||
- 实时对话场景建议默认 `low`,仅在用户追问细节时切换 `high`
|
||||
|
||||
## 视觉理解的局限性
|
||||
|
||||
- **运动模糊**:快速移动物体在低帧率下容易模糊
|
||||
- **光线变化**:逆光、暗光环境下识别率显著下降
|
||||
- **细小文字**:低分辨率下 OCR 能力受限
|
||||
- **空间推理**:精确的距离、尺寸判断仍是短板
|
||||
Reference in New Issue
Block a user