9 月 25 日,前 Meta FAIR 团队创立的 Perceptron 把 Mk1.5 放上了 OpenRouter。这不是一个聊天模型,而是一个给无人机、四足机器人、智能眼镜和手机用的「感知层」:输入文字、图片、视频、音频,输出除了自然语言,还能是机器直接能用的点、框、多边形、片段和时序轨迹。
我把 OpenRouter 模型页、Perceptron 官方文档和几份第三方技术分析对照读了一遍。下面把它的核心用法、定价陷阱和三个真实用例整理出来,方便你拿到 Key 后直接复制运行。
一、Mk1.5 与普通视觉语言模型的区别
普通 VLM 问你「图里有没有叉车」,它回答「有」。这个答案对人够用,对机器人没用——机器人需要知道叉车在哪个像素位置、接下来往哪移动、要不要避让。
Mk1.5 的设计目标就是解决这个问题。它支持五种结构化输出:
point:一个像素坐标box:矩形框(x1, y1, x2, y2)polygon:任意多边形clip:视频里的一个时间段track:带时间戳的连续空间观测,不是逐帧独立检测
换句话说,普通模型给你一段描述,Mk1.5 给你控制器能消费的 JSON。这和 9 月 16 日聊过的 Gemini 3.8 Live 形成互补:Gemini 适合「边说话边后台执行工具」,Mk1.5 适合「看画面并给出精确几何位置」。
二、规格与定价:便宜但有几个限制
OpenRouter 上的公开参数如下:
| 项目 | 数值 |
|---|---|
| 上下文窗口 | 36,864 tokens |
| 最大输出 | 8,192 tokens |
| 输入 | 文字、图片、视频、音频(WAV/MP3/FLAC) |
| 定价 | $0.15/M input,$1.50/M output |
| Cache | $0.0375/M input(标准价的 1/4) |
| OpenRouter P50 延迟 | 0.45s |
| OpenRouter 吞吐 | 124 tok/s |
注意:36K 的上下文窗口不是给你塞两小时视频用的。它的定位是「单个感知任务」,比如一帧画面加一段简短指令。如果你拿它做长视频逐帧分析,会很快撞墙。长上下文需求应该回退到 Qwen 3.8 Max 或 Kimi K3 这类长上下文模型。
三、5 分钟跑通:用 OpenRouter 调第一张图
你不需要机器人。只要一个 OpenRouter API Key 和一段 Python,就能在普通图片上测试空间标注。
环境:Python 3.10+,安装 openai 包即可:
pip install -U openai最小可运行示例(单图 box 检测):
import os
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ.get("OPENROUTER_API_KEY"),
)
response = client.chat.completions.create(
model="perceptron/perceptron-mk1.5",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/warehouse.jpg"
},
},
{
"type": "text",
"text": (
"Find all forklifts in this image. "
"Return each forklift as a bounding box with normalized coordinates."
),
},
],
}
],
extra_body={
"annotation_format": "box",
"reasoning_effort": "medium",
},
)
print(response.choices[0].message.content)关键参数说明:
annotation_format:只有显式设为point、box、polygon或clip时,模型才会在文字里内联输出结构化几何。不设这个参数,它只返回普通文字描述——这是最容易漏掉的开关。reasoning_effort:Mk1.5 把旧版的vision_config.enable_thinking换成了这个字段,默认是high。简单感知任务用medium通常就够了,档位越高 token 消耗越大,具体差多少建议用你自己的图片跑一轮再定。
四、视频追踪:让模型返回带时间戳的轨迹
这是 Mk1.5 最有区分度的能力。普通模型对视频做目标检测,通常是逐帧输出框,然后你在外面再做一个后处理(re-ID、卡尔曼滤波)把帧串成轨迹。Mk1.5 的 track 输出直接把「同一对象在不同时间的位置」打包返回。
response = client.chat.completions.create(
model="perceptron/perceptron-mk1.5",
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://example.com/assembly-line.mp4"
},
},
{
"type": "text",
"text": (
"Track the worker's right hand from start to end. "
"Return timestamped bounding boxes."
),
},
],
}
],
extra_body={
"annotation_format": "box",
"reasoning_effort": "high",
},
)按官方文档描述,track 条目同时携带空间观测和所属时间戳,返回的是一个随时间变化的位置序列,而不是每帧独立检测。这对库存盘点、体育分析、产线质检等场景很有价值——你少写一层 re-ID 逻辑。遮挡后 ID 能保持多久、时间戳精度如何,建议先用一段你业务里的真实短视频跑样本验证,再决定要不要接入生产流水线。
五、两个容易踩的坑
坑 1:默认 reasoning_effort=high 会推高账单
Mk1.5 默认开启最高档推理。如果你只是做简单的「图里有没有某个物体」,记得显式改成 medium 或 low,否则同样的请求 token 消耗会明显增加。这一条对所有按量计费的高频调用场景都适用——感知类负载的特点恰恰是调用次数多、单次价值低,账单对档位特别敏感。
坑 2:音频分析不会自动开启
Mk1.5 虽然支持音频输入,但视频音轨分析是 opt-in 的。如果你传了一段带声音的视频,但没开对应开关,模型会「看」但不会「听」。需要单独设置音频分析参数(具体字段名请参考 Perceptron 官方文档,不同 SDK 版本可能有差异)。
六、什么时候不建议用 Mk1.5
Mk1.5 不是万能模型,下面三种情况我会直接绕开它:
- 长文档理解:36K 上下文放不下长 PDF 或代码库,请用长上下文文本模型。
- 需要复杂推理+规划:Mk1.5 是感知层,不是决策层。如果需要「看到叉车后规划搬运路径」,应该把它和 OpenAI Agents API 或 Gemini Antigravity 这类编排层组合使用。
- 对延迟极度敏感的边缘场景:OpenRouter 上 P50 延迟 0.45s,对无人机实时避障可能还是太慢。本地部署小模型或专用 CV 方案仍然是更稳的选择。
七、一个可落地的组合架构
一个典型的「物理 Agent」流水线可以拆成两层:
- 感知层(Mk1.5):接收摄像头/麦克风输入,输出「有什么、在哪、怎么动」。
- 决策层(Agent API / 本地 LLM):根据感知结果做计划、调工具、下发控制指令。
这种分层思路也适用于 本地部署大模型 的场景:把 Mk1.5 放在云端做重感知,本地小模型做轻决策,兼顾成本与隐私。
八、成本测算:跑 1000 张图要多少钱
按 OpenRouter 定价粗算:
- 假设单图输入约 1000 tokens(约 1000×750 分辨率),输出约 200 tokens。
- 单张成本 ≈ $0.15/1M × 1000 + $1.50/1M × 200 = $0.00015 + $0.0003 = $0.00045。
- 1000 张图 ≈ $0.45。
如果开启 cache 且输入高度重复(比如同一张参考图反复对比),成本还能再降。注意这是按定价的纸面测算,真实项目的 token 数取决于图片分辨率和输出长度,建议先用一小批真实样本试跑一轮,再按实际账单推算全量成本。