你想做的功能是:用户用鼠标指向工程图的某个位置,AI能"理解"这个坐标,并回答关于该位置标注的问题。这在学术上被称为"指示式视觉问答"(Pointing-based VQA)。
相关的核心技术路线:
1. Point and Ask(点+问)
微软和普林斯顿的研究提出在视觉问答中融入"指向"交互------用户不仅用语言提问,还可以指向图像的特定位置。这比纯语言提问更精确,特别适合工程图这种细节密集的场景。
2. 技术实现方案
前端 :捕获鼠标在图像上的(x,y)坐标
坐标编码:把像素坐标转成模型可理解的表示,比如:
- 直接拼接到文本prompt: "用户在坐标(320, 480)处提问:这个尺寸是什么意思"
- 生成坐标heatmap作为额外输入通道
- 或把坐标转成边界框区域,用视觉定位技术处理
后端处理流程:
- 区域裁剪:以鼠标点为中心裁剪一块子图
- 基元检测:识别该区域内的线、圆、文字、尺寸标注
- 多模态理解:结合局部图像特征和OCR提取的文字,理解标注含义
- 问答生成:用LLM/VLM生成回答
3. 关键技术点
位置嵌入:如何让模型知道"用户指的是这里"
- 简单方式:在prompt里嵌入坐标文本
- 进阶:用SAM(Segment Anything Model)根据点击点做分割,把分割mask作为额外输入
上下文关联:工程图的标注往往和远处元素相关(如尺寸线指到一个圆),需要:
- 线段检测找到引线关系
- 图结构表示(点、线、标注之间的拓扑关系)
推荐实现路径:
- MVP版:鼠标点击 → 裁剪周围区域 → 送GPT-4V/Claude问"这个位置的标注是什么含义"
- 进阶版:加入专门的CAD元素检测模型(如前面找的PPI-NET),把检测到的几何基元和坐标一起送给LLM
- 优化版:用SAM做交互式分割,让AI"聚焦"到用户点击的具体元素
你想从哪个版本开始?工程图的格式是扫描PDF、CAD导出图,还是网页上直接渲染的矢量图?
学习这个功能需要掌握计算机视觉基础 + 多模态交互 + 文档理解三个方向。推荐这些公开课:
1. Stanford CS231n - Convolutional Neural Networks for Visual Recognition
必学基础。涵盖图像分类、目标检测、分割------这是让AI"看懂"工程图的前提。
2. Stanford CS224N - Natural Language Processing with Deep Learning
处理用户的提问文本,以及生成回答。工程图问答本质是NLP+CV的结合。
3. Stanford CS330 - Deep Multi-Task and Meta Learning
多任务学习很重要------你的系统要同时做"位置理解"、"元素识别"、"问答生成"等多个任务。
4. CMU 11-777 - Multimodal Machine Learning
专门讲如何把不同模态(图像+坐标+文本)融合在一起。这正是"鼠标点击+图像+问题"这种交互场景需要的。
5. 其他推荐
- MIT 6.869: 计算机视觉进阶,有图像定位/grounding的内容
- DeepLearning.AI的多模态RAG课: 实操性强,教怎么把文档和视觉结合做问答
学习顺序建议:
- 先看CS231n打好视觉基础
- 然后CS224N理解NLP怎么结合
- 看CMU多模态课或GitHub上的开源VQA项目实战(Pointing VQA是个细分方向,直接上课比较少,更多是看Research Paper+代码)
你想做工程图问答,其实最直接的路径是:
- 学上述基础课
- 然后直接看Point and Ask 和DocVQA 、PDFVQA这些Paper+开源代码
需要我帮你找这些方向的开源代码仓库吗?