GEAR-Seg:基于LLM与SAM的可解释视觉推理分割系统构建指南
1. 项目概述当视觉模型学会“思考”最近在计算机视觉圈子里一个叫“GEAR-Seg”的项目讨论度挺高。乍一看标题“Grounded Explainable Agent for Reasoning Segmentation and Data Engine”名字挺唬人但说白了它想解决的是一个我们做视觉任务时经常遇到的痛点模型太“黑盒”我们不知道它为什么把一个像素归为某个类别尤其是在面对训练时没见过的、需要一点“常识”或“推理”才能理解的新物体时。传统的图像分割模型无论是语义分割还是实例分割本质上是一个“模式匹配”的专家。你给它看足够多的“猫”的图片它就能学会把图片里毛茸茸的、有特定轮廓的东西标记为“猫”。但如果你让它分割一个“正在喝水的猫”或者一个“被窗帘半遮住的猫”模型可能就懵了。因为它学的是像素层面的统计特征而不是“猫”、“喝水”、“窗帘”这些概念之间的关系。这就是“零样本”Zero-shot和“推理”Reasoning能力的关键所在。GEAR-Seg的出现正是瞄准了这个缺口。它不是一个单一的分割模型而是一个“智能体”Agent系统。它的核心思路是引入大型语言模型LLM作为“大脑”让这个大脑去理解用户用自然语言提出的复杂指令比如“分割出图片左下角那个正在看手机的人”然后指挥一个或多个基础的视觉模型比如SAMSegment Anything Model去执行具体的分割操作最后还能给出“我为什么这么分”的解释。而“Data Engine”部分则暗示了这套系统能够自我迭代利用生成的数据来优化自身形成一个闭环。所以GEAR-Seg适合谁如果你是计算机视觉的研究者或工程师正在为模型的可解释性、零样本泛化能力或者复杂场景理解头疼那这个框架的思路值得深挖。如果你对如何将LLM与CV模型结合即多模态大模型的前沿应用感兴趣它也是一个绝佳的案例。即使你只是个爱好者想了解AI如何从“看得见”进化到“看得懂”GEAR-Seg也提供了一个非常具体的窗口。2. 核心架构与工作流拆解要理解GEAR-Seg不能把它看成一个魔法黑箱得拆开看它的“三头六臂”。它的设计哲学很清晰各司其职协同作业。整个系统可以粗略地分为三个核心模块它们像一条流水线一样工作。2.1 大脑基于LLM的推理与规划代理这是整个系统的指挥中心。它的输入是一张图片和一段用户的自然语言指令例如“分割出前景中最大的那个交通工具”。这个模块的核心任务不是直接处理像素而是进行“思维”。首先场景理解与指令解析。LLM会分析用户的指令识别其中的关键实体“交通工具”、属性“最大的”和空间关系“前景中”。这一步需要LLM具备强大的常识和语言理解能力。例如它需要知道“交通工具”可能包括汽车、自行车、滑板车并且能结合图片上下文判断哪个是“最大的”。接着任务规划与工具调用。LLM本身不会分割图片但它知道“工具箱”里有什么。在这个框架里工具箱里可能装着像SAM这样的通用分割模型或者一些更专用的边缘检测、显著性检测算法。LLM会根据解析出的需求制定一个行动计划。比如它可能决定“第一步调用SAM获取图像中所有可能的物体掩码第二步调用一个分类器或另一个LLM来识别这些掩码对应的物体类别筛选出‘交通工具’第三步计算每个‘交通工具’掩码的面积和位置找出前景中面积最大的那个。”最后生成解释。当最终结果产生后LLM还需要将整个决策过程用自然语言描述出来比如“根据您的指令我首先分割了图像中的所有物体候选区域然后识别出其中三个属于交通工具一辆汽车、一辆摩托车、一辆自行车。通过计算它们的像素面积并判断其位于图像下半部分的前景区域我确定汽车是最大的前景交通工具因此将其掩码输出。” 这就是“可解释性”Explainable的体现。注意这里LLM的“思考”过程通常是通过精心设计的提示词Prompt来引导的。Prompt里会明确告诉LLM它有哪些工具可用、输入输出格式是什么、以及需要遵循的推理步骤。Prompt工程的质量直接决定了代理的可靠性和准确性。2.2 双手可调用的视觉基础模型大脑下了指令需要灵巧的“双手”来执行。在GEAR-Seg中这双手通常是像SAM这样的基础分割模型。SAM的强大之处在于其“提示驱动”的分割能力。你可以给它一个点、一个框、或者一段文本它就能给出对应的掩码。在GEAR-Seg的流程中LLM代理生成的规划最终会转化为对SAM等模型的一系列调用。例如调用1获取候选LLM可能让SAM以“网格点提示”的方式对全图进行初步分割生成数十甚至上百个物体候选区域。调用2精修LLM分析这些候选后可能发现目标物体没有被完整分割。于是它可以根据初步结果生成一个更精确的边界框坐标再次调用SAM说“请在这个框内进行分割。”调用3融合对于特别复杂的物体可能需要多次调用然后将结果融合。这套机制的优势在于灵活性。SAM本身是一个强大的零样本分割器但它不擅长理解复杂语言指令。LLM擅长理解指令但不擅长处理像素。两者结合就产生了“112”的效果LLM负责将抽象指令转化为具体的、SAM能理解的提示点、框SAM则负责高效、精准地执行像素级操作。2.3 引擎闭环数据与迭代系统“Data Engine”是让这个系统从“好用”变得“聪明”的关键。一个静态的、规则固定的智能体其能力上限受限于初始设计和训练数据。而数据引擎旨在创造一个自我增强的循环。这个循环大致是这样的执行与收集系统在大量真实或合成的图像-指令对上运行。困难样本挖掘系统会记录下那些失败或置信度低的案例。例如LLM规划错误导致分割了错误物体或者SAM在面对某些罕见纹理时分割质量很差。数据生成与标注对于这些困难样本系统可以采取多种策略生成新的训练数据。利用LLM可以让LLM反思错误并生成修正后的、更详细的规划步骤描述形成新的“指令-规划”对。人工或半自动干预对于SAM分割失败的情况可以引入极少量的人工点击提供正确的前景/背景点这个纠正动作本身连同图像和指令就可以构成一个高质量的“提示-掩码”训练对。合成数据基于现有困难样本通过图像增强、指令改写等方式生成更多的变体数据。模型微调用新生成的数据去微调系统中的组件。这可能包括微调LLM代理让它学会在类似场景下做出更准确的规划。微调SAM适配器如果SAM在特定类别上表现不佳可以用新数据对SAM的提示编码器或掩码解码器进行轻量级微调使其更适应此类任务。验证与迭代微调后的模型再次投入运行评估性能提升并继续收集新的困难样本开启下一轮循环。这个数据引擎的本质是将系统在实际应用中遇到的挑战自动转化为提升自身能力的养料从而实现持续的进化。3. 关键技术细节与实现要点理解了宏观架构我们深入到几个决定GEAR-Seg成败的技术细节。这些地方往往是论文不会细说但实际搭建时一定会遇到的“坑”。3.1 提示工程如何与LLM高效对话让LLM扮演一个可靠的规划者绝非简单的“看图说话”。你需要设计一套严谨的“操作规程”给它。这个提示词Prompt模板通常包含以下几个部分角色定义与能力声明明确告诉LLM它现在是一个视觉推理助手具备调用特定工具如SAM的能力并熟知这些工具的输入输出格式。输入格式规范严格定义输入的格式。例如你需要告诉LLM输入将是一个JSON对象包含image图片描述或特征有时可能是详细的物体列表和位置和user_query用户指令。思维链Chain-of-Thought要求强制要求LLM以“首先然后最后”的格式输出它的思考过程。这是实现可解释性和确保推理逻辑正确的关键。例如在输出最终答案前必须输出“Thought:”部分。工具调用规范定义LLM可以“说”什么来调用工具。例如当它需要调用SAM时它必须输出一个像call_samprompt_typebox, coordinates[x1,y1,x2,y2]/call_sam这样的结构化字符串。系统后台会解析这个字符串真正去执行SAM调用并将结果如分割掩码的轮廓点序列以文本形式插回LLM的上下文中。输出格式固化最终LLM必须严格按照指定格式输出比如一个包含final_mask掩码坐标和explanation文本解释的JSON。一个简化示例可能长这样你是一个视觉推理智能体。你可以通过调用工具来分析图像和完成分割任务。 工具 1. SAM分割器输入可以是点point、框box或文本text输出是分割掩码的轮廓点列表。 当前图像描述如下{image_description} 用户查询{user_query} 请逐步思考并在需要时调用工具。你的思考过程放在“Thought:”之后。最终答案必须是JSON格式{final_mask: [...], explanation: ...} 开始。实操心得提示词的设计需要反复调试和迭代。一个常见的技巧是“少样本学习”Few-shot Learning即在提示词中提供2-3个完整的、从输入到正确输出的示例。这能极大地提升LLM对新任务的理解和遵循格式的能力。另外对于空间关系左上角、后面在提供给LLM的图像描述中最好能用坐标系或相对位置进行量化描述而不是模糊的自然语言。3.2 视觉基础模型的选择与适配SAM是当前的首选但并非唯一。选择视觉基础模型时需要考虑几个维度分割粒度你需要实例级每个物体单独、全景级所有物体背景还是语义级同类物体合并的分割SAM更偏向实例/全景。提示类型支持模型是否支持点、框、文本等多种提示这决定了LLM能使用的“操控杆”有多少。计算效率模型推理速度如何因为在一个复杂查询中LLM可能会发起多次调用实时性要求高的场景必须考虑。零样本能力这是核心模型在未经过特定数据训练的新类别上表现如何即使选定了SAM直接使用其原始版本也可能不够。这就是“适配”的用武之地。例如特征对齐LLM处理的是文本特征SAM处理的是图像特征。如何让LLM生成的文本提示如“红色的圆形交通标志”能有效激活SAM可能需要一个额外的网络模块将文本特征映射到SAM的提示编码空间。轻量级微调虽然SAM是零样本的但如果你通过数据引擎收集了大量特定领域如医疗影像、遥感图像的高质量提示-掩码对对SAM的掩码解码器进行轻量微调可以显著提升其在领域内的分割质量和稳定性。3.3 规划与执行的循环控制LLM的规划不一定一次就完美。系统需要设计一个“循环控制”机制来处理复杂情况。这有点像程序员调试程序初始规划与执行LLM给出第一步规划系统执行得到结果A。状态评估系统或另一个评估模块检查结果A的质量。是否分割出了物体掩码的完整性如何与指令的匹配度多高这个评估可以基于一些启发式规则如掩码面积是否在合理范围、与文本描述的目标类别是否匹配也可以用一个训练好的评估模型。迭代优化如果评估不通过将当前图像、历史操作记录“我上次用框[x1,y1,x2,y2]调用了SAM得到了一个不完整的掩码”和失败原因反馈给LLM要求它重新规划或调整参数。例如“上次分割结果不完整请尝试使用一组点提示来细化物体边缘。”终止条件设定最大迭代次数或当评估分数超过某个阈值时停止循环并输出当前最佳结果。这个循环控制是系统鲁棒性的保障。它允许智能体通过“试错”来解决问题更接近人类的解决问题方式。4. 从零搭建GEAR-Seg原型实战理论说了这么多我们动手搭一个最简单的原型来切身感受一下这个流程。这里我们使用OpenAI的GPT系列作为LLMMeta的SAM作为视觉模型通过Python将它们粘合起来。4.1 环境准备与依赖安装首先确保你的Python环境建议3.8以上并安装核心库。# 安装PyTorch (请根据你的CUDA版本选择合适命令这里以CPU版为例) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu # 安装SAM相关库 pip install githttps://github.com/facebookresearch/segment-anything.git # 下载SAM的预训练模型权重例如 vit_b wget https://dl.fbaipublicfiles.com/segment-anything/sam_vit_b_01ec64.pth # 安装OpenAI API库 (用于调用GPT) pip install openai # 其他工具库 pip install Pillow opencv-python numpy4.2 构建核心代理类我们创建一个GearSegAgent类来封装主要逻辑。import openai import cv2 import numpy as np from PIL import Image from segment_anything import sam_model_registry, SamPredictor class GearSegAgent: def __init__(self, sam_checkpointsam_vit_b_01ec64.pth, model_typevit_b, openai_api_keyyour_key): 初始化代理加载SAM模型设置OpenAI API。 # 初始化SAM sam sam_model_registry[model_type](checkpointsam_checkpoint) self.sam_predictor SamPredictor(sam) # 初始化OpenAI客户端 openai.api_key openai_api_key self.client openai.OpenAI() # 加载并构建系统提示词 self.system_prompt self._build_system_prompt() def _build_system_prompt(self): 构建系统提示词定义代理的角色和能力。 prompt 你是一个视觉推理和分割助手GEAR-Seg Agent。你的任务是理解用户对图像的描述和指令通过调用分割工具SAM来输出目标物体的分割掩码坐标并解释你的推理过程。 你拥有以下工具 - SAM分割器可以输入一个边界框格式[x_min, y_min, x_max, y_max]来获取该区域的分割掩码。掩码将以轮廓点列表 [[x1,y1], [x2,y2], ...] 的形式返回给你。 工作流程 1. 你会收到一个JSON格式的输入包含 image_description对图像的文本描述和 user_query用户的具体指令。 2. 你必须分析image_description理解图像中有哪些物体及其大致位置。 3. 你必须仔细解读user_query明确用户想要分割哪个或哪些物体。 4. 根据你的理解推断目标物体最可能出现的边界框坐标。坐标是相对于图像宽高的比例值0到1之间。图像左上角为(0,0)右下角为(1,1)。 5. 当你决定调用SAM时请严格按照以下格式输出 call_sambbox[x_min, y_min, x_max, y_max]/call_sam 6. 调用后你会收到SAM返回的结果 sam_result: [[x1,y1], ...]。 7. 你需要根据返回的结果生成最终答案。 最终输出必须是严格的JSON格式 { final_mask: [[x1,y1], [x2,y2], ...], // 轮廓点列表 explanation: 你的逐步推理过程以及为什么选择这个框。 // 解释文本 } 现在开始请严格遵循以上流程。你的第一次回复应该是对输入的分析和思考。 return prompt def _get_image_description(self, image_path): 简化处理这里我们手动提供一个描述实际应用中可以用图像描述生成模型如BLIP。 # 这是一个占位函数。在实际系统中你需要用多模态大模型如GPT-4V或专用模型来生成图像描述。 # 例如image Image.open(image_path); description blip_model.generate_caption(image) # 这里为了演示我们返回一个固定描述。 return 一张室内照片。照片中央有一张木质桌子。桌子上有一个白色的咖啡杯杯子里有咖啡。咖啡杯的右边放着一本翻开的书。背景是模糊的窗户和书架。 def call_llm(self, user_query, image_desc): 调用LLM这里用GPT-3.5-turbo进行推理和规划。 user_content f 输入图像描述{image_desc} 用户查询{user_query} 请开始你的分析。 response self.client.chat.completions.create( modelgpt-3.5-turbo, messages[ {role: system, content: self.system_prompt}, {role: user, content: user_content} ], temperature0.1, # 低温度保证输出稳定性 max_tokens800 ) return response.choices[0].message.content def parse_and_execute_sam(self, llm_response, image): 解析LLM响应中的工具调用并执行SAM。 # 1. 解析出 bbox 调用 import re pattern rcall_sambbox([\d\.\s\,\[\]])/call_sam match re.search(pattern, llm_response) if not match: print(LLM响应中没有找到有效的SAM调用指令。) return None, llm_response # 2. 提取bbox坐标 (假设是比例坐标) bbox_str match.group(1) # 简单处理实际需要更健壮的解析 bbox eval(bbox_str) # 注意实际生产环境慎用eval这里仅为演示 # bbox 格式应为 [x_min, y_min, x_max, y_max] 比例值 # 3. 将比例坐标转换为像素坐标 h, w image.shape[:2] bbox_pixel [ int(bbox[0] * w), int(bbox[1] * h), int(bbox[2] * w), int(bbox[3] * h) ] # 4. 准备SAM并预测 self.sam_predictor.set_image(image) input_box np.array(bbox_pixel) masks, scores, logits self.sam_predictor.predict( point_coordsNone, point_labelsNone, boxinput_box[None, :], # 增加batch维度 multimask_outputFalse # 只输出一个最佳掩码 ) # 5. 将二值掩码转换为轮廓点 (简化处理取最大连通域轮廓) mask masks[0].astype(np.uint8) * 255 contours, _ cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if contours: # 取面积最大的轮廓 largest_contour max(contours, keycv2.contourArea) # 简化轮廓点减少数量 epsilon 0.005 * cv2.arcLength(largest_contour, True) approx cv2.approxPolyDP(largest_contour, epsilon, True) contour_points approx.squeeze().tolist() # 转换为列表 else: contour_points [] # 6. 将SAM结果格式化为LLM能理解的文本并替换回LLM响应中 sam_result_text fSAM returned mask with {len(contour_points)} contour points. # 这里简化处理实际应该将contour_points插入到对话历史中让LLM继续生成最终答案。 # 我们假设LLM在第一次回复中就给出了最终答案的框架我们只需要填充final_mask。 final_response llm_response f\n\n[SAM Execution Result]: {sam_result_text} return contour_points, final_response def run(self, image_path, user_query): 运行主流程。 # 1. 加载图像并获取描述 image cv2.imread(image_path) image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image_desc self._get_image_description(image_path) # 2. 调用LLM进行规划 print( LLM Planning ) llm_raw_response self.call_llm(user_query, image_desc) print(fLLM Raw Response:\n{llm_raw_response}\n) # 3. 解析并执行工具调用 print( SAM Execution ) mask_points, final_llm_output self.parse_and_execute_sam(llm_raw_response, image) # 4. 组装最终结果 # 这里我们需要从final_llm_output中提取explanation或者让LLM再生成一次。 # 简化处理我们手动构造一个最终输出。 import json result { final_mask: mask_points, explanation: final_llm_output # 这里包含了LLM的整个推理过程 } print( Final Result ) print(json.dumps(result, indent2)) # 可视化可选 self._visualize_result(image, mask_points, bbox_pixel) return result def _visualize_result(self, image, contour_points, bboxNone): 可视化分割结果。 vis_image image.copy() if bbox: cv2.rectangle(vis_image, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (0, 255, 0), 2) if contour_points: pts np.array(contour_points, np.int32) cv2.polylines(vis_image, [pts], isClosedTrue, color(255, 0, 0), thickness2) # 将vis_image保存或显示 cv2.imwrite(result_visualization.jpg, cv2.cvtColor(vis_image, cv2.COLOR_RGB2BGR)) print(结果已保存至 result_visualization.jpg) # 使用示例 if __name__ __main__: agent GearSegAgent(openai_api_keyyour_openai_api_key_here) result agent.run(your_image.jpg, 分割出桌子上的咖啡杯)4.3 运行流程解析与调试运行上述脚本你会经历以下流程初始化加载SAM模型需要一定时间取决于模型大小和硬件设置OpenAI客户端。描述生成我们这里用了一个固定的文本描述。在实际项目中这是第一个需要强化的点。你需要集成一个真正的图像描述模型比如BLIP-2或使用GPT-4V的API来生成更准确、包含空间和属性信息的描述。一个糟糕的描述会导致LLM从一开始就“误解”了画面。LLM规划将系统提示词、图像描述和用户查询“分割出桌子上的咖啡杯”发送给GPT。LLM会分析“图像中央有桌子桌上有咖啡杯。咖啡杯是白色的。我需要估计咖啡杯在图像中的大致位置边界框。” 然后它会在回复中输出类似call_sambbox[0.4, 0.3, 0.6, 0.5]/call_sam的指令。SAM执行我们的parse_and_execute_sam函数会解析这个bbox比例坐标将其转换为图片上的实际像素坐标然后调用SAM的predict方法。SAM会基于这个框生成一个初步的分割掩码。后处理与返回我们将SAM生成的二值掩码通过OpenCV找到其轮廓并简化轮廓点。这些点坐标就是final_mask。同时我们将LLM的原始回复作为explanation的一部分。可视化最后脚本会在原图上画出LLM估计的bbox绿色和SAM最终分割出的轮廓蓝色并保存为图片。这个原型极其简化省略了多轮对话、复杂空间推理、多工具调用等。但它清晰地展示了GEAR-Seg最核心的“LLM规划 SAM执行”协作范式。5. 常见问题、挑战与优化方向在实际操作中你会遇到各种各样的问题。下面我整理了一些典型挑战和对应的解决思路。5.1 精度与可靠性挑战LLM的空间推理能力有限LLM尤其是纯文本模型对二维空间坐标的理解是间接的、基于描述的。让它从一段文本描述中精确估计bbox坐标误差可能很大。优化方向使用视觉语言模型VLM直接用GPT-4V、Gemini Pro Vision等能“看”图的模型作为代理。它们能直接接收图像空间感知能力远强于文本描述。引入参考表示不给LLM比例坐标而是给一个“对象列表”每个对象带有粗略的中心点或小区域框。让LLM通过指代如“左上角的那个”来选择而不是凭空生成坐标。迭代细化采用“先粗后细”的策略。先让LLM或一个目标检测模型给出一个大概的物体区域列表LLM从中选择目标再用这个粗略区域作为SAM的提示得到掩码后如果质量不高可以再用掩码的边界点作为新提示进行细化。SAM的零样本能力边界SAM虽然强大但对于非常细粒度、结构复杂或与训练数据分布差异极大的物体如透明物体、极端遮挡分割效果会下降。优化方向多提示组合不要只依赖一个框提示。可以让LLM生成“框正负点”的组合提示。例如在目标物体内部点几个正样本点在背景区域点几个负样本点能极大提升分割精度。后处理对SAM输出的掩码进行形态学操作如闭运算填充小孔洞、轮廓平滑等。领域微调如果应用场景固定如医学细胞分割利用数据引擎收集该领域数据对SAM进行轻量微调。5.2 效率与成本考量LLM API调用延迟与成本每次推理都需要调用GPT等API存在网络延迟且对于大量图片成本不菲。优化方向本地小模型研究使用开源的、参数量较小的VLM如LLaVA、Qwen-VL在本地部署作为规划代理。虽然能力可能稍弱但对延迟和成本敏感的场景是必须的。缓存与批处理对常见的、相似的查询结果进行缓存。将多个分割请求合并让LLM一次规划多个任务如果上下文长度允许。简化Prompt精炼提示词减少不必要的上下文以降低token消耗。SAM的计算开销SAM的ViT-Huge模型对显存要求较高。优化方向模型量化使用量化后的SAM模型如INT8量化可以显著降低显存占用和加速推理精度损失很小。选择性编码SAM的图像编码器是最耗时的部分。如果需要对同一张图片进行多次分割如处理多个用户查询务必只运行一次编码器缓存编码结果。5.3 系统集成与工程化错误处理与鲁棒性LLM的输出可能不符合预定格式格式错误或者规划出不合逻辑的步骤逻辑错误。SAM也可能分割失败。优化方向格式校验与重试对LLM的输出进行严格的格式正则匹配。如果失败将错误信息反馈给LLM要求其重试并设置最大重试次数。置信度评估为SAM的输出和LLM的规划都引入置信度分数。低置信度的结果可以触发人工审核或更复杂的备用处理流程。完备的日志记录每一次LLM调用、SAM调用、中间结果和最终输出。这对于调试和后续的数据引擎构建至关重要。数据引擎的自动化程度如何自动判断一个案例是“困难样本”如何自动生成高质量的修正数据优化方向多维度评估困难样本可以从多个角度挖掘a) 最终掩码与人工标注的IoU过低b) LLM规划步骤异常多或陷入循环c) SAM输出的掩码自身质量指标低如过于破碎。利用LLM自我反思将失败案例图像、错误指令、错误输出交给一个更强大的LLM如GPT-4让它分析失败原因并生成修正后的规划步骤。这可以自动产生高质量的“规划-修正”对。合成数据增强对边界案例的图像进行仿射变换、颜色抖动、添加遮挡等并相应调整标注框或点提示的位置可以低成本扩展训练数据。GEAR-Seg代表了一种构建更智能、更可解释的视觉系统的范式转变。它不再追求一个“万能”的单一模型而是转向设计一个由“专家”模型组成的、各司其职的协同系统。虽然目前这套系统在精度、速度和成本上还面临诸多挑战但其框架的灵活性、可解释性和自我进化潜力为解决开放世界视觉理解这一终极难题提供了一条清晰且富有前景的路径。在实际项目中你可以从我们搭建的原型出发根据具体场景逐个攻克上述挑战点逐步构建起属于你自己的、强大的“接地气可解释推理分割智能体”。