图像识别服务与 MCP Server

快速回顾

复盘点 核心内容
业务目的 根据设备照片缩小机型范围,人工确认后用于资产关联和资料查询
识别模型 EfficientNet;协调网络深度、宽度与输入分辨率,兼顾效果和计算开销
服务分工 PyTorch 负责推理,FastAPI 提供内部接口,Java 后端负责认证与业务处理
返回结果 Top-K 候选、置信度、模型版本和人工复核状态
结果边界 置信度不等于正确率;机型类别不等于具体资产身份
稳定性 输入校验、超时、并发限制、有限重试,识别不可用时支持手动选择
MCP 能力 图片识别、标准机型查询、知识检索、知识问答、故障排查
调用边界 客户端模型选择工具,MCP Server 校验执行,后端统一控制权限与业务规则
权限与错误 受限服务身份访问平台公共能力,区分空结果、证据不足与执行失败

面试主回答

我接入了基于 EfficientNet 的农机图像识别服务,用 PyTorch 完成模型推理,通过 FastAPI 提供内部接口,Java 后端负责认证、图片校验、候选机型映射和人工复核流程。

识别结果返回 Top-K 候选、置信度和模型版本,用户结合铭牌等信息确认后,再关联标准机型,并用于后续资料检索。服务调用设置了超时和并发限制,模型不可用时支持手动选择机型。

此外,我开发了 MCP Server,将图片识别、标准机型查询、知识检索与问答、故障排查封装为标准工具,供支持 MCP 的客户端调用。MCP 层复用后端能力,通过工具 Schema、受限服务身份和统一错误返回,控制调用边界。

业务场景与模型选择

图像识别在项目中解决什么问题?

面试回答

用户录入农机设备或查资料时,不一定知道准确型号。我接入图片识别服务,根据照片返回候选机型和置信度,先缩小范围,再让用户结合铭牌、品牌和设备参数确认标准机型。确认后,就可以继续查对应说明书、保养要求或故障资料。

因为不同系列和配置外观相近,角度、遮挡和背景都会影响结果,所以保留 Top-K 候选,不自动认定第一名正确。另外,标准机型和组织里的具体资产分开,识别出某个型号还不能确定是哪一台机器,关联具体资产仍要用户确认。

实现细节

图片识别用于辅助机型定位,再衔接知识问答。候选、模型版本和人工复核结果分别保存,不能把一次分类输出直接当作已核验的资产身份。

EfficientNet 是什么,为什么选择它?

面试回答

EfficientNet 是一类卷积神经网络,经典方法通过复合缩放协调调整网络深度、宽度和输入分辨率,在识别能力与计算开销之间做平衡。深度影响特征层次,宽度影响表达能力,分辨率影响细节保留,单独扩大某一个维度不一定划算。

我们的任务是从已有农机类别中返回候选机型,适合封装成专门的图片分类服务。选择时既考虑相近型号的区分能力,也看服务延迟、模型大小和部署环境能承受的并发。独立服务的输入和输出比较稳定,后端可以统一映射机型和安排人工复核,模型升级也能单独进行。

实现细节

缩放维度与代价见表。分类结果只覆盖模型已定义类别,机型标签映射与权重一同管理;EfficientNet 分类服务与 ColQwen 文档检索服务承担不同任务。

维度 含义 代价
深度 增加网络层数,学习更复杂的特征 计算链路变长
宽度 增加通道数,表达更多特征 计算量与内存增加
分辨率 保留更多图像细节 计算量明显增加

服务接入与结果处理

FastAPI、PyTorch 和 Java 后端分别负责什么?

面试回答

Java 后端负责用户认证、文件与业务校验,调用内部模型服务后,把候选标签映射为标准机型,再处理人工复核和业务关联。FastAPI 提供内部 HTTP 接口,负责图片解码与预处理,PyTorch 加载 EfficientNet 权重并完成推理,返回 Top-K、分数和模型版本。

模型服务主要做计算,不直接读取组织资产或工单,这样模型资源和业务服务可以分别部署、限流和升级。预处理中的尺寸、颜色通道和归一化要与训练配置一致,类别索引与机型标签也随权重管理,否则模型即使正常返回,也可能被映射成错误名称。

实现细节

组件职责和完整调用顺序见表与流程。分类计算结果经过 Java 后端转换后仍是候选,用户确认后才完成业务关联;模型服务的内部访问不能替代业务认证和资源校验。

组件 职责 关键约束
Java 后端 认证、文件校验、机型映射与复核流程 统一业务规则及访问范围
FastAPI 内部接口、图片解码与预处理 预处理与模型训练配置一致
PyTorch / EfficientNet 模型加载与分类推理 权重、类别映射和模型版本一致
用户确认 结合铭牌等信息确认候选 确认后再完成业务关联
用户上传图片
    ↓
Java 后端:认证、文件校验、业务处理
    ↓
FastAPI:图片解码和预处理
    ↓
PyTorch / EfficientNet:模型推理
    ↓
返回 Top-K、置信度和模型版本
    ↓
Java 后端:关联标准机型、返回候选
    ↓
用户确认后完成业务关联

面试回答

农机相近型号的外观可能很接近,Top-K 可以保留多个候选,让用户结合铭牌和其他角度比较。模型输出的 Softmax 分数反映已知类别间的相对倾向,未经校准不能直接理解成这次识别正确的概率;一张不属于任何已知类别的图片也可能得到较高分。

所以除了 Top-1 分数,还结合前两名差距、图片清晰度、主体完整性和候选是否能映射有效机型来提示复核,阈值通过验证集确定。候选接近时请用户补照片或查看铭牌,即使分差大也保留确认。识别结果和模型版本记录下来,确认后再完成对应业务关联。

实现细节

各类分数和身份信息的边界见表,复核检查项见列表。高分不能可靠排除未知类别,标准机型也不能唯一标识组织中的具体资产,不能把两种不确定性合成一个“已识别”。

信息 能帮助判断什么 不能据此推断什么
Top-K 候选 比较外观相近机型 第一名必然正确
Softmax 分数 已知类别间的相对倾向 实际正确率或未知类别已被可靠排除
Top-1 与 Top-2 差距 候选是否接近、是否需要重点复核 差距大就无需核对
型号与资产 缩小标准机型范围 仅凭外观确定组织中的具体资产
  • Top-1 分数是否足够高。
  • Top-1 与 Top-2 的差距是否明显。
  • 图片是否清晰,设备主体是否完整。
  • 候选类别是否能映射到有效标准机型。

模型服务超时或者不可用,怎么处理?

面试回答

我先区分输入问题和服务故障。格式错误、文件损坏或超出大小限制,就提示用户修改图片,重复推理没有意义;连接失败、暂时不可用可以在总时间预算内有限重试,过载时限制并发和等待队列,避免重试继续放大压力。

识别失败会返回明确状态,让用户重传、稍后重试或手动选择机型,不能把故障当成没有候选。推理成功但结果不明确则正常返回候选并要求复核。健康检查也看模型权重是否加载成功,不能只凭 FastAPI 接口已经启动就认为识别能力可用。

实现细节

异常类型与界面处理见表。请求超时与服务内部失败分开记录,重试受整体预算约束;人工录入保留为可继续的业务路径,不依赖模型服务恢复后才能提交全部流程。

情况 处理方式
图片不符合要求 提示更换或压缩图片
模型未加载、服务不可用 返回暂不可识别,允许手动选择
推理完成但候选不明确 返回候选并要求人工复核
调用超时 提示重试或手动录入

MCP 工具与调用边界

面试回答

MCP 的全称是 Model Context Protocol,用于让 AI 应用以统一方式连接外部工具和数据。普通 HTTP 接口已经提供业务能力,MCP Server 再把这些能力描述为可发现的工具,提供工具说明、参数 Schema 和调用方式,方便支持 MCP 的客户端接入。

我把图片识别、标准机型查询、知识检索、问答和故障排查等公共能力封装出来,实际仍复用 Java 后端的规则和访问范围。比如外部助手可以先识别图片,请用户确认机型,再调用知识问答查询保养要求。这样减少每个客户端分别理解和适配业务 API 的工作,业务实现和权限仍由原后端维护。

实现细节

工具能力见表。MCP Server 提供发现和调用适配,HTTP 服务继续承载实际业务;模型根据工具描述提出调用发生在客户端编排层,协议本身不替模型决定该调用哪个工具。

工具能力 解决的问题
图片识别 根据照片获取候选机型
标准机型查询 确认品牌、型号和机型类型
知识检索 查找相关手册与证据
知识问答 根据资料生成带引用的回答
故障排查 结合现象、故障码与资料给出排查建议

MCP 工具怎么定义,模型怎么选择工具?

面试回答

每个 MCP 工具都定义清楚名称、适用场景、输入 Schema 和返回结构,同时说明是否写入数据。客户端获取工具描述后,模型根据用户目标提出工具名和参数,客户端与 MCP Server 校验后执行,Java 后端再检查实际业务范围。

例如图片识别工具接收图片和文件信息,只返回候选、置信度与复核建议,不创建资产;知识检索返回证据,知识问答再基于证据生成回答。边界明确,模型才容易正确选择。选择发生在客户端模型和编排层,MCP Server 负责收到调用后的校验与执行,不能因为模型选了工具就跳过参数或权限检查。

实现细节

下面的 JSON 展示名称、描述和一次调用输入,正式输入 Schema 另行约束字段类型、必填项和取值范围。工具调用结果区分证据、候选和业务回执;各参与方职责见表。

参与方 负责什么 调用边界
客户端模型与编排层 根据目标和工具描述提出调用 只提出工具与参数
MCP Server 工具发现、Schema 校验与调用处理 不能因为模型选择了工具就省略校验
Java 后端 实际业务能力与权限检查 不信任调用参数自行声明的权限
内部模型服务 执行图像等模型计算 不直接读取组织业务数据
{
  "name": "farm_machinery_run_image_recognition",
  "description": "根据单张农机图片返回候选机型、置信度和人工复核建议",
  "input": {
    "image_base64": "...",
    "file_name": "tractor.jpg",
    "content_type": "image/jpeg"
  }
}

MCP 的权限和错误怎么处理?

面试回答

外部调用方先认证,MCP Server 再使用受限服务身份调用后端,只开放平台公共标准机型和知识能力,不读取组织私有资产、工单或私有知识库。调用参数里填写组织 ID 不能扩大权限,实际范围由服务端身份和后端规则确定。

结果要区分成功但空结果、证据不足、参数或权限错误,以及超时和服务不可用。工具执行失败通过错误状态返回,让客户端决定修正输入、有限重试或向用户解释,不能把故障包装成正常空列表。问答保留引用和证据充分性,识别保留候选、模型版本及复核状态,帮助客户端正确解释结果。

实现细节

返回分类与客户端动作见表和列表。服务身份的能力范围与外部请求参数分开,权限错误不能通过改写组织参数绕过。错误状态表达执行是否成功,证据充分性表达结果能否支撑结论,两者不能混用。

返回情况 含义 客户端后续动作
成功但空结果 查询完成,没有匹配资料 调整条件或说明未找到
证据不足 现有资料无法支撑完整结论 补充信息或限制回答范围
参数或权限错误 请求无效或无权调用 修正输入或处理授权,不能绕过检查
超时或服务不可用 工具未能正常完成 在预算内有限重试或说明失败
  • 查询成功但没有匹配结果。
  • 找到了资料,但不足以支持回答。
  • 参数不合法或没有访问权限。
  • 下游服务不可用或请求超时。

易混点与回答检查

易混点:分类置信度不能直接解释成实际正确率,机型类别不等于具体资产;MCP 工具选择发生在客户端模型与编排层。

回答检查

补充记录

简历表述:接入 FastAPI/PyTorch 图像识别服务,返回 Top-K 候选机型和置信度供人工复核;开发 MCP Server 提供图像识别、知识检索与问答、标准机型查询和故障排查建议。

事实 / 代码依据:待补充。

复盘手记

搜索笔记

输入关键词,搜索所有主题与问答。