1. 从“看牙”到“看牙片”一个被忽视的AI蓝海作为一名在医疗影像AI领域摸爬滚打了十来年的从业者我见过太多模型在肺结节、眼底、皮肤病灶上“卷”得死去活来。但最近一个看似小众却潜力巨大的方向让我眼前一亮牙齿分割。你可能觉得牙齿不就是口腔里那几十颗吗有什么好研究的恰恰相反牙齿影像分析是口腔数字化诊疗的基石从正畸方案设计、种植牙规划到牙周病评估每一步都离不开对牙齿轮廓的精准勾勒。然而现实是骨感的。传统的牙齿分割要么依赖医生在CBCT或口扫模型上手动描边耗时耗力要么需要海量标注好的牙齿影像数据去训练一个专用模型成本高昂且难以泛化到不同设备、不同成像条件的片子。这就引出了我们标题里的核心挑战零样本Zero-Shot牙齿分割。简单说就是让一个AI模型在没有见过任何一张目标牙齿X光片或CBCT切片的情况下仅凭“常识”或“指令”就能自动把片子里的每颗牙精准地分割出来。这听起来有点像天方夜谭但正是“TSegAgent”这篇工作试图攻克的难题。它没有走堆数据、调参的老路而是巧妙地引入了两个时髦的概念视觉-语言智能体Vision-Language Agent和几何感知Geometry-Aware。前者让模型能“听懂”人话比如“请分割出所有牙齿”后者则让模型理解牙齿是立体的、有空间结构的物体而不是平面上的色块。为什么这个组合拳有戏因为牙齿有非常强的先验几何特征它们是排列在牙弓上的、近似椭球或立方体的硬组织彼此之间有间隙牙缝且冠根形态分明。一个足够“聪明”的通用视觉-语言大模型比如GPT-4V其实已经通过海量图文数据学到了关于“牙齿”的丰富知识。TSegAgent的工作就是设计一个智能体框架引导这个大模型将这些先验的语义知识和几何常识转化为对一张全新牙科影像上每个像素的归属判断。这不仅仅是技术上的炫技其背后对应着巨大的临床价值降低AI落地门槛、保护患者隐私无需收集标注数据、快速适配各类新型影像设备。接下来我们就深入这个智能体的“大脑”看看它是如何思考并完成这项神奇任务的。2. TSegAgent的核心架构让大模型学会“看图说话”并“动手标注”TSegAgent不是一个单一的神经网络而是一个精心设计的智能体系统。它的核心思想是模仿一位经验丰富的放射科或口腔科医生读片的思维过程先整体观察再定位关键解剖结构接着根据形态和空间关系进行区分最后勾勒边界。这个系统通常由几个关键模块串联而成我们可以将其分解为“感知-规划-执行”的循环。2.1 视觉-语言大模型系统的“大脑”与“眼睛”整个系统的核心驱动引擎是一个强大的视觉-语言大模型VLM例如GPT-4V、LLaVA或Qwen-VL。这个模块扮演着“大脑”和“眼睛”的双重角色。它的输入是两部分一是用户提供的自然语言指令如“请分割这张口腔全景片中的所有牙齿”二是待处理的牙科影像X光片、CBCT的一个切片或3D渲染图。VLM的任务不是直接输出分割掩码它通常不擅长这种密集像素级预测而是进行高层次的理解和规划。首先VLM会对图像进行全局描述识别出“这是一张口腔X光片”并可能指出“图像中部可见上下颌骨及多颗牙齿部分牙齿有修复体”。接着它会根据指令分解任务。对于零样本分割一个关键的策略是让VLM生成一系列指向性提示Referring Expressions。例如它可能会在内部“思考”“要分割所有牙齿我可以先找到最明显的门牙它通常位于前部形态单根然后找到旁边的侧切牙再找到后面的磨牙磨牙通常有多个牙根……” 这些描述本质上是将分割任务转化为了一个根据文本描述定位物体的任务序列。VLM的优势在于它利用在海量互联网数据中学到的关于牙齿形态、位置、医学术语的知识来生成这些准确且具有区分度的描述而无需任何牙科影像的标注数据。2.2 几何感知模块给2D视图注入3D常识这是TSegAgent区别于普通视觉-语言应用的关键一环。牙齿是三维实体而输入的影像往往是二维投影如X光片或三维数据的二维切片。如果没有几何常识模型很容易将重叠的牙齿误判为一颗或者将一颗牙齿的牙冠和牙根在二维投影上的分离部分误判为两颗牙。几何感知模块通过多种方式将空间结构先验注入系统多视图提示如果输入是3D CBCT数据系统可以自动生成该牙齿区域在矢状面、冠状面、轴状面的三个正交视图连同原图一起送给VLM。VLM通过对比不同视图能更好地理解物体的三维结构。例如它在横断面看到两个圆形结构在矢状面看到它们是前后关系就能推断这是两颗并列的牙齿而非一个。几何属性问答系统可以主动向VLM提问引导其关注几何特征。例如在VLM初步识别出一个区域后系统会问“这个物体在三维空间中可能是什么形状椭球体/圆柱体”、“它与相邻的类似物体在空间上是并列关系还是上下叠压关系” VLM基于常识回答这些问题这些答案被编码为特征辅助后续的分割决策。空间关系编码在生成指向性提示时会刻意强调空间关系词汇如“左上颌第一磨牙”、“下颌中切牙的远中邻牙”。VLM在预训练时已经理解了这些方位词的含义从而能生成更精准的定位描述。这个模块相当于给只学过平面绘画的“大脑”补上了一门“立体几何”课让它能透过二维图像想象出物体的三维形态和排布这对于区分密集、重叠的牙齿至关重要。2.3 分割执行器将“语言指令”转化为“像素掩码”“大脑”规划好了步骤生成了描述接下来需要“手”来执行绘画。TSegAgent通常不直接使用VLM来生成像素而是将其与一个开放词汇分割模型如SAM、SEEM或Grounding DINO SAM的组合耦合。具体流程是这样的当VLM生成一个指向性提示如“左上颌那颗牙冠最大、牙根分叉的牙齿”后这个文本提示会被输入到开放词汇分割模型。该模型专门负责将文本所指代的物体在图像中框选或分割出来。例如Grounding DINO会根据文本检测出目标区域生成一个边界框然后SAMSegment Anything Model以这个框为提示分割出精确的像素级掩码。这个过程循环进行每分割出一颗牙系统就将这颗牙的掩码从原图中“擦除”或标记为已处理更新图像状态然后VLM基于更新后的图像生成下一个指向性提示如“现在请分割紧邻刚才那颗牙齿后方的牙齿”如此迭代直到所有牙齿都被分割出来。这种“VLM规划 开放模型执行”的范式巧妙规避了VLM不擅长像素级预测、而专用分割模型需要大量标注数据的短板实现了强强联合。整个TSegAgent就像一个项目主管VLM它看懂图纸影像和客户要求指令制定详细的施工步骤指向性提示然后指挥各个专业工人开放分割模型按步骤完成挖土检测、砌墙分割等具体工作。3. 零样本能力的实现如何让模型“无师自通”“零样本”是TSegAgent最吸引人的标签。它意味着模型在测试阶段面对一个全新的牙科数据集可能来自不同医院、不同型号设备、不同拍摄参数时不需要在这个数据集上进行任何额外的训练或微调就能直接工作。这种能力是如何实现的其核心在于对预训练知识的泛化利用和任务设计的巧思。3.1 利用视觉-语言大模型的开放世界知识VLM如GPT-4V的预训练数据包罗万象其中必然包含大量的解剖学教材插图、医学百科图片、甚至患者教育材料中的牙齿图片。虽然这些图片可能不是标准的X光片但模型已经从中学习了“牙齿”这个概念的视觉模式它通常是白色的、坚硬的、有特定形状的、成排出现的物体。更重要的是VLM建立了“牙齿”这个词汇与这些视觉模式之间的强关联。当它看到一张牙科X光片牙齿在X光下呈现为高亮的白色区域时它能调用这种关联认出这些区域就是“牙齿”。这种能力是传统的、只在牙科X光片上训练过的CNN模型所不具备的后者一旦遇到成像风格差异大的图片就容易失效。3.2 任务表述的通用化从“分割类别”到“遵循指令”传统分割模型的学习目标是固定的输入图像输出每个像素属于“背景”、“牙齿1”、“牙齿2”……的标签。这是一个封闭集合的分类问题。而TSegAgent将任务重新表述为一个开放式的视觉问答VQA或视觉定位Grounding问题。它的目标是根据给定的图像和一段自然语言指令生成一个符合指令描述的掩码。例如指令可以是“分割所有牙齿”也可以是“只分割上颌的牙齿”甚至是“分割有龋坏的那颗牙齿”如果VLM能识别龋坏。这种任务表述具有极强的灵活性。模型不需要记忆“牙齿”这个类别的所有视觉变体它只需要学会如何理解指令并在图像中找到与指令语义匹配的区域。而理解指令和语义匹配的能力正是VLM在预训练中已经获得的核心能力。因此只要指令是它能够理解的它就能尝试去执行从而实现了对未知数据分布的泛化。3.3 迭代式推理与自我修正零样本下模型不可能一次就做到完美。TSegAgent的智能体框架允许进行迭代式推理。在第一轮分割后系统可以模拟或实际让VLM对当前的分割结果进行“评估”。VLM可以描述它看到的结果“我已经分割出了五颗牙齿它们排列在前部图像后部还有两团高亮区域但形态模糊可能是重叠的磨牙。”基于这个评估系统可以生成新的、更精确的指令进行第二轮分割。例如针对重叠区域指令可以变为“请仔细查看图像左下角那两片重叠的高亮区域尝试将它们区分为两个独立的、可能部分遮挡的物体。” 这种基于前一轮结果的反馈和指令细化相当于让模型进行“自我修正”逐步逼近正确答案。这种能力使得它在面对困难案例时比一次性预测的模型更有优势。注意零样本并不意味着100%的准确率。它的性能上限严重依赖于底层VLM和开放分割模型的能力边界。如果图像质量极差、牙齿解剖结构异常如严重畸形或者成像 modality 完全超出了VLM的认知范围比如某种极其特殊的超声影像模型仍然可能失败。零样本的真正价值在于提供了一个“可用”的基线在数据匮乏或要求快速部署的场景下它能立刻发挥作用然后可以再通过少量标注数据即“少样本”学习进行快速微调以进一步提升在特定场景下的精度。4. 实战推演构建一个简易的TSegAgent原型理解了原理我们不妨动手构思一下如何利用现有的开源工具搭建一个简化版的TSegAgent来验证这个想法。这里我们不涉及复杂的模型训练而是专注于 pipeline 的组装和调试。4.1 环境与工具选型我们的原型需要以下几个核心组件视觉-语言大模型VLM考虑到本地部署和开源需求可以选择LLaVA或Qwen-VL。LLaVA 将视觉编码器如CLIP与语言模型Vicuna连接效果不错且社区活跃。Qwen-VL 是阿里通义千问的多模态版本对中文指令理解可能更友好。我们将使用其推理API或本地部署的版本。开放词汇检测与分割模型这里我们采用经典的Grounding DINO SAM组合。Grounding DINO 负责根据文本检测物体框SAM 则根据框提示生成精细掩码。两者都有成熟的开源实现和预训练模型。开发框架使用 Python主要依赖transformers用于加载VLM、torch、以及 Grounding DINO 和 SAM 的官方仓库代码。首先搭建环境安装必要的库。这里以 LLaVA 和 Grounding DINO 为例# 创建虚拟环境 conda create -n tseg_agent python3.10 conda activate tseg_agent # 安装 PyTorch (请根据你的CUDA版本调整) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装 transformers 和相关库 pip install transformers accelerate pillow # 克隆并安装 Grounding DINO (示例) git clone https://github.com/IDEA-Research/GroundingDINO.git cd GroundingDINO pip install -e . # 安装 SAM pip install githttps://github.com/facebookresearch/segment-anything.git4.2 核心Pipeline实现步骤我们的Pipeline将遵循“描述-检测-分割-迭代”的循环。假设我们有一张口腔全景片panoramic_xray.jpg。步骤一全局感知与任务规划我们将图像和指令“请描述这张牙科X光片中的牙齿分布情况并按顺序列出可区分的牙齿或牙齿组。”输入给LLaVA模型。from PIL import Image from transformers import LlavaNextProcessor, LlavaNextForConditionalGeneration import torch # 加载模型和处理器模型名称需根据具体版本调整 processor LlavaNextProcessor.from_pretrained(llava-hf/llava-v1.6-mistral-7b-hf) model LlavaNextForConditionalGeneration.from_pretrained(llava-hf/llava-v1.6-mistral-7b-hf, torch_dtypetorch.float16, device_mapauto) image Image.open(panoramic_xray.jpg) prompt USER: image\n请描述这张牙科X光片中的牙齿分布情况并按顺序列出可区分的牙齿或牙齿组。 ASSISTANT: inputs processor(prompt, image, return_tensorspt).to(model.device) output model.generate(**inputs, max_new_tokens200) description processor.decode(output[0], skip_special_tokensTrue) print(VLM描述, description)LLaVA可能会返回“这是一张口腔全景X光片。图像显示完整的上下颌牙列。前部可见上下颌共8颗切牙形态单根。两侧可见尖牙。后牙区可见前磨牙和磨牙其中下颌第一磨牙牙根分叉明显。左上颌区域有一颗牙齿似乎有高密度填充物可能是充填体。牙齿从左上到右下大致呈弧形排列。”步骤二基于描述生成指向性提示并分割我们需要从描述中解析出可操作的“对象”。一个简单策略是让VLM自己生成分割指令。我们可以进行多轮对话# 第二轮让VLM生成第一个分割目标的指令 prompt2 fUSER: image\n基于之前的描述现在需要逐颗分割出所有牙齿。请从最明显、最容易区分的一颗开始给出用于定位这颗牙齿的详细文本描述。例如‘左上颌那颗牙冠最大、牙根分叉的牙齿’。 ASSISTANT: inputs2 processor(prompt2, image, return_tensorspt).to(model.device) output2 model.generate(**inputs2, max_new_tokens100) instruction_1 processor.decode(output2[0], skip_special_tokensTrue).split(ASSISTANT:)[-1].strip() print(第一个分割指令, instruction_1)假设得到指令“分割下颌正中最前方的那颗单根切牙”。步骤三调用开放词汇分割模型执行现在我们使用 Grounding DINO 和 SAM 来执行这个指令。import groundingdino.datasets.transforms as T from groundingdino.util.inference import load_model, load_image, predict, annotate from segment_anything import sam_model_registry, SamPredictor import cv2 import numpy as np # 1. 加载Grounding DINO模型 groundingdino_model load_model(groundingdino/config/GroundingDINO_SwinT_OGC.py, weights/groundingdino_swint_ogc.pth) # 2. 加载SAM模型 sam_checkpoint weights/sam_vit_h_4b8939.pth sam sam_model_registry[vit_h](checkpointsam_checkpoint) sam_predictor SamPredictor(sam) # 准备图像 image_cv2 cv2.imread(panoramic_xray.jpg) image_pil Image.fromarray(cv2.cvtColor(image_cv2, cv2.COLOR_BGR2RGB)) # 3. Grounding DINO检测 boxes, logits, phrases predict( modelgroundingdino_model, imageimage_pil, captioninstruction_1, # 使用VLM生成的指令 box_threshold0.3, text_threshold0.25 ) # 4. SAM分割 sam_predictor.set_image(image_cv2) if len(boxes) 0: # 取置信度最高的框 best_box boxes[0] masks, scores, _ sam_predictor.predict( boxbest_box, multimask_outputTrue # 输出多个mask候选 ) # 选择得分最高的mask best_mask masks[scores.argmax()] # 可视化或保存best_mask (二值图像) mask_image (best_mask * 255).astype(np.uint8) cv2.imwrite(tooth_1_mask.png, mask_image) print(f成功分割出第一颗牙齿掩码已保存。)步骤四迭代与更新将分割出的牙齿区域从原图中“移除”例如将对应像素置为黑色或均值得到一张新图像updated_image.jpg。然后将这张更新后的图像和指令“现在请分割紧邻刚才已分割牙齿右侧的下一个牙齿”再次输入给VLM重复步骤二和步骤三。如此循环直到VLM判断没有明显的牙齿剩余或达到预设的迭代次数。4.3 原型开发中的坑与技巧在实际搭建这个原型时你会遇到几个典型问题VLM指令生成的稳定性LLaVA等开源VLM生成的指令可能不够精确或格式不一致。比如它可能说“左边那颗牙”而不是“左上颌第一前磨牙”。解决方案是设计更精细的提示词工程Prompt Engineering通过少样本示例Few-shot Prompting来引导VLM输出格式统一的描述。例如在系统提示中给出例子“当需要指定一颗牙时请使用‘上/下颌’ ‘左/右侧’ ‘第X颗’ ‘牙齿类型切牙、尖牙、前磨牙、磨牙’的格式。”开放分割模型的局限性Grounding DINO 对“牙齿”这类特定医学概念的 grounding 能力可能不如对常见物体强。SAM 在牙齿边界模糊如牙根尖或与牙槽骨密度相近的区域可能分割不准确。应对策略包括框提示优化如果DINO的框不准可以尝试让VLM输出框的坐标需要VLM具备此能力或使用其他视觉定位模型或者用人机交互的方式微调框的位置。多提示组合除了框还可以向SAM提供点提示point prompt。可以让VLM估计牙齿的中心点或特征点作为附加提示输入SAM提升分割精度。后处理对SAM输出的掩码进行形态学操作如闭运算填充小孔开运算去除孤立小点平滑边界。迭代累积误差在迭代过程中如果某一步分割错误如多分了或少分了这个错误会被“固化”到更新后的图像中影响后续所有步骤。必须引入验证机制。例如每分割出一颗“牙”让VLM判断这个掩码是否真的像一颗牙齿以及它与之前分割的牙齿是否合理大小、位置、形态是否在正常范围内。如果验证不通过则回退这一步尝试用不同的指令重新分割该区域。计算资源与速度VLM推理和SAM分割都比较耗时。对于一张全景片分割十几颗牙循环迭代下来可能需要数十秒甚至分钟级。在原型阶段可以接受但产品化需要考虑优化例如使用更小的VLM和SAM模型或对图像进行分区域处理。搭建这个原型的过程本身就是一个对TSegAgent思想深度理解的过程。你会发现真正的挑战不在于模块的拼接而在于如何让这些模块稳定、可靠地协同工作处理千变万化的真实牙科影像。5. 几何感知的落地从2D到3D分割的跃迁前面的讨论大多基于2D影像。但牙科临床尤其是种植和正畸核心需求是3D分割即从CBCT数据中分割出每颗牙齿的立体模型。TSegAgent的几何感知能力在这里有更大的用武之地其实现思路也更为巧妙。5.1 3D数据如何处理切片 vs. 体渲染CBCT数据是一个三维体数据一堆连续的二维切片。直接让VLM处理3D体数据目前还不现实。主流的做法有两种多平面重建MPR切片法从3D体数据中提取出牙齿长轴方向的三个正交平面矢状面、冠状面、轴状面的2D切片。将这三张切片连同一个问题如“请根据这三个视图描述其中牙齿的三维形态和空间关系”一起输入VLM。VLM通过“看”三个视角在大脑中构建3D理解并输出描述。然后我们可以将这些描述用于3D分割。例如VLM可能描述“目标牙齿在冠状面上呈梯形在矢状面上可见牙根弯曲”这些文本可以转化为对3D分割网络如3D U-Net的条件输入引导其聚焦于具有这些特征的体素。体渲染投影法使用体渲染技术从3D CBCT数据生成一个或多个角度的2D投影图像类似于X光片但是是从3数据生成的。将这些渲染图输入给2D的TSegAgent pipeline得到2D分割掩码。然后利用反向投影和空间一致性约束将2D掩码“反推”回3D空间生成3D分割的初始区域再通过3D分割网络进行精修。这种方法的关键在于如何利用多个视角的2D分割结果通过几何约束如视觉锥交叉来重建3D。5.2 几何约束作为优化条件在3D分割网络中几何感知可以作为一种强大的正则化或条件输入。例如形状先验我们可以让VLM判断一颗牙齿大致属于哪一类切牙、磨牙等每一类牙齿都有其典型的3D形状统计模型统计形状模型SSM。分割网络在预测时会被约束使其输出结果尽可能接近该类牙齿的典型形状这能有效防止分割结果出现不合理的畸形。空间关系损失VLM可以判断“牙齿A在牙齿B的舌侧且轻微重叠”。在训练或优化3D分割网络时可以设计一个损失函数惩罚那些违背了这种空间关系的分割结果。例如计算两颗牙齿分割结果的三维质心距离和方向如果与VLM描述的关系不符则增加损失。对称性引导对于颌骨左右对称是强先验。VLM可以识别出中轴线。分割网络可以引入对称性损失鼓励左右侧对应牙齿的分割结果具有镜像对称性。在实际操作中一个可行的3D TSegAgent工作流可能是先对CBCT数据进行预处理生成关键角度的渲染图用2D TSegAgent在这些渲染图上获得初步的2D分割和丰富的文本描述将这些2D分割结果反投影得到3D空间中的粗略感兴趣区域ROI和语义标签最后用一个轻量级的3D分割网络以ROI和文本描述特征为条件输入在这个粗略结果上进行精细化分割。这样既利用了VLM的语义和几何理解能力又避免了让VLM直接处理高维3D数据的困难。6. 临床落地挑战与未来展望尽管TSegAgent的理念令人兴奋但从论文到临床可用的产品还有漫长的路要走。以下几个挑战是必须面对的精度与可靠性的临床级要求口腔手术尤其是种植牙手术对精度的要求是亚毫米级的。当前零样本方法的精度如Dice系数可能在0.85-0.92之间可能接近但未必总能达到资深医生手工分割的水平对于复杂病例如多生牙、融合牙、严重牙周病导致牙槽骨吸收更是如此。模型需要具备不确定性估计能力能够告诉医生“我对这颗牙的分割把握只有70%”从而提示医生重点审核该区域。计算效率与实时性目前基于大模型的pipeline推理速度较慢。在临床工作流中医生可能希望点击后几秒钟内就看到分割结果。优化方向包括设计更高效的VLM-分割器交互机制如一次性生成所有牙齿的描述开发针对医疗影像的小型化、专用化VLM以及模型蒸馏、量化等加速技术。人机交互与医生工作流整合最好的AI工具不是全自动而是“增强智能”。TSegAgent应该设计友好的人机交互界面允许医生轻松地纠正错误。例如医生可以点击一处错误分割的区域输入一句自然语言指令“这里不是牙齿是伪影请忽略”模型就能根据这个反馈即时修正结果。这需要模型具备强大的增量学习和即时反馈能力。数据隐私与模型安全使用云端大模型如GPT-4V会引发患者数据隐私的担忧。未来的趋势必然是发展本地化部署的、经过严格医学数据安全训练的专用模型。同时模型需要避免产生“幻觉”例如将影像伪影误认为病变或给出不合理的解剖结构描述。从我个人的经验来看TSegAgent所代表的“视觉-语言智能体领域先验”范式不仅仅是牙齿分割的未来更是整个医学影像分析的一个有前景的新方向。它降低了AI对标注数据的依赖提升了模型的可解释性因为它的决策过程可以被语言描述追溯并且通过自然语言接口极大地增强了易用性。下一步结合更强大的3D视觉-语言模型、针对医学影像优化的提示词策略以及与临床信息系统如PACS的深度集成这类智能体有望从实验室的酷炫演示真正转变为医生诊桌旁的得力助手。对于开发者而言现在切入这个领域不仅是在解决一个具体的临床问题更是在探索下一代医疗AI的交互范式。