【免费下载链接】Falcon-Perception
Inference repo for Falcon-Perception and Falcon-OCR model, early-fusion, natively multimodal, dense Autoregressive Transformer models.
Falcon-Perception 是 TII 推出的原生多模态、稠密自回归 Transformer 模型,只需一句自然语言查询词,即可完成开放词汇物体检测与像素级实例分割。本文面向新手,详解它的检测、分割任务如何运行、如何调参,以及如何用 PBench 评估效果。
一句话查询,得到检测框和像素级掩码
传统目标检测模型必须先固定一批类别标签,而 Falcon-Perception 采用查询驱动(query-driven)的方式:你直接输入一句中文或英文描述,比如the cat on the left(左边的猫)或cat,模型就会返回对应的边界框(bounding boxes)+ 像素级分割掩码(pixel-level masks)。
它的核心思路可以概括为三句话:
- 图像和文字是"早期融合(early-fusion)"的——图片被切成语义 patch token,与查询词 token 一起进入同一个 Transformer 做自回归生成;
- 坐标是"解码出来的"——模型自带 perception heads,在生成文本坐标 token 的同时,还能生成高分辨率分割特征;
- 查询词决定输出粒度——想只要框就选
detection任务,想要像素级细节就选segmentation任务。
任务与查询词的组合逻辑定义在 falcon_perception/init.py 的build_prompt_for_task()中:模型会自动为查询词拼接Segment these expressions in the image:前缀,并加上<|start_of_query|>、<|REF_SEG|>等特殊标记,让模型知道"接下来这段文字是搜索目标"。
两大感知任务详解:detection 与 segmentation 怎么选
Falcon-Perception 提供两种感知任务,通过--task参数切换:
任务一:detection(开放词汇检测)
只输出每个目标实例的边界框,速度快、开销小,适合:
- 快速筛查图中有哪些目标
- 多目标跟踪(MOT)的前端
- 显存或延迟敏感的部署场景
任务二:segmentation(像素级实例分割)
输出每个实例的精确像素掩码,适合:
- 需要精细轮廓的场景(如抠图、遮挡严重的密集场景)
- 下游需要逐像素信息的任务
分割掩码的生成由模型内置的do_segmentation开关控制(见 falcon_perception/init.py 中的ModelArgs),解码阶段每遇到<seg>token 就会累积一个掩码,最后统一批量转成 COCO RLE 编码,相关实现在 falcon_perception/aux_output.py。如果模型不支持分割(例如轻量版perception-300m),脚本会自动回退到 detection 任务。
💡 小提示:同一个
--query "cat",在 detection 下得到若干方框,在 segmentation 下得到猫毛边缘级别的彩色掩码——输出形态完全由任务参数决定,而不是由查询词本身决定。
快速上手:一行命令跑通感知推理
第一步:安装依赖
项目支持 PyTorch(NVIDIA GPU)和 MLX(Apple Silicon)两种后端,pyproject.toml 提供多组可选依赖:
# GPU 服务器(推荐 uv) uv sync # 默认安装 CUDA 12.8 的 PyTorch source .venv/bin/activate # 或指定安装方式 pip install -e ".[torch]" # PyTorch + CUDA pip install -e ".[mlx]" # Apple Silicon第二步:运行单图感知
# 不传图片时自动从 PBench 数据集流式加载示例 python demo/perception_single.py # 指定图片与查询词,做像素级分割 python demo/perception_single.py --image photo.jpg --query "cat" # 只做检测(更快,无掩码) python demo/perception_single.py --image photo.jpg --query "cat" --task detection入口脚本 demo/perception_single.py 支持--image(本地路径或 URL)、--query、--task、--engine-type等参数,首次运行会自动从 Hugging Face 下载tiiuae/Falcon-Perception模型权重。
第三步:查看可视化结果
脚本会把输入图与叠加了检测框/掩码的输出图保存到./outputs/目录,开箱即可对比效果。交互式体验可打开官方 Notebook demo/perception.ipynb,内含引擎配置、detection 与 segmentation 对比、PBench 分级展示与 IoU 指标评测的完整走查。
推理引擎怎么选:paged 高性能 vs batch 易读
项目内置了多套推理引擎,理解它们有助于选型:
| 引擎 | 特点 | 适用场景 |
|---|---|---|
| Paged Inference Engine(默认) | 分页 KV cache + 连续批处理 + CUDA Graph 加速 | 生产部署、高吞吐、低延迟 |
| Batch Inference Engine | 左填充批量推理,代码路径最接近训练 | 学习模型前向原理、小规模实验 |
| MLX Batch Engine | Apple Silicon 原生,无 PyTorch 依赖 | Mac 开发调试 |
Paged 引擎的关键优化都在 falcon_perception/paged_inference.py:分页虚拟页表避免 padding 浪费内存、新序列可中途加入连续批、高分辨率图像特征 LRU 缓存让同一张图多次查询不同物体时跳过重复 prefill。官方实测在 H100 上 prefill 约 100ms、上采样约 200ms(命中缓存为 0ms)、解码几个实例约 50ms(见 README.md)。
多卡部署则使用 falcon_perception/server/ 目录下的 FastAPI 服务:每块 GPU 一个独立 worker 进程,请求按最小负载分发,架构说明见 falcon_perception/server/README.md,再配合 demo/streamlit_app.py 就能获得浏览器端的交互式检测/分割演示。
如何评估效果:用 PBench 跑开放词汇分割基准
想量化模型在你的数据上的表现,可以直接使用官方评测脚本 eval/pbench.py。PBench 是一个按难度递增(level_0→level_4)的 grounding 分割基准,另有dense多实例场景切片:
python eval/pbench.py # 默认 level_0 前 100 条 python eval/pbench.py --split all --limit 0 # 全部分级一次跑完 python eval/pbench.py --split level_0 --max-dimension 768 # 分辨率消融评测协议(详见 eval/README.md)包含强制缩放、掩码对齐回原图分辨率、IoU=0.5 的贪心 NMS,核心指标是跨 10 个 IoU 阈值平均的F1,以及图像级 TP/FP/FN/TN 统计。想自己实现指标计算,可参考 eval/metrics.py。
进阶玩法:从感知到视觉 Agent
Falcon-Perception 的"一句查询词"接口天然适合作为工具被调用,仓库提供两个进阶 Notebook:
- Perception Agent(demo/perception_agent.ipynb):用另一个视觉大模型做编排器,把 Falcon-Perception 当"感知工具",实现多步场景理解;
- Open-Vocab Multi-Object Tracking(demo/perception_ov_mot.ipynb):用检测+分割双模式构建开放词汇视频多目标跟踪流水线。
此外,同一个仓库还内置了同架构的Falcon-OCR270M 模型,一句Extract the text content from this image.即可做整页文字/公式/表格识别(demo/ocr_single.py),感知与文档理解可以一套引擎通吃。
新手常见疑问(FAQ)
Q1:查询词可以用英文短语吗?可以。查询词就是自然语言表达式,支持the red car on the right这类带方位/属性描述的短语;不传--query时默认使用all objects。
Q2:为什么首次运行特别慢?首次会进行torch.compile编译与 CUDA Graph 捕获,约需 10–30 秒,之后每次推理进入快路径。
Q3:A40 / RTX 3090/4090 上显存不够怎么办?给 demo/perception_single.py 加--flex-attn-safe参数,可降低 FlexAttention Triton 的 shared memory 占用。
Q4:Mac 上能跑吗?可以,使用 MLX 后端:python demo/perception_single_mlx.py --image photo.jpg --query "cat",无需安装 PyTorch。
Q5:如何只跑检测不跑分割以省显存?加--task detection;也可以选用不带分割头的轻量模型tiiuae/Falcon-Perception-300M(见 falcon_perception/init.py 的get_model_args())。
总结
Falcon-Perception 用一句自然语言查询词打通了开放词汇检测与像素级实例分割两大感知任务:--task detection出框、--task segmentation出掩码,配合 paged 推理引擎可在消费级 GPU 上获得接近实时的响应。建议按"单图 demo → Notebook 调参 → PBench 评测 → 多卡服务"的路径逐步上手,把它当作视觉 Agent 的感知底座接入你的业务,是它最有想象力的用法 🦅。
【免费下载链接】Falcon-Perception
Inference repo for Falcon-Perception and Falcon-OCR model, early-fusion, natively multimodal, dense Autoregressive Transformer models.
相关推荐
WeVisOne-VL开放词汇目标检测实战:一句话框出图片中任意物体
WeVisOne VL开放词汇目标检测实战:一句话框出图片中任意物体 WeVisOne VL (WeChat Vision All in One)是腾讯微信视觉
人工智能多模态计算机视觉深度学习OCR图像处理初识 Falcon-Perception:原生多模态视觉大模型如何用一句话框出并分割任意对象
初识 Falcon Perception:原生多模态视觉大模型如何用一句话框出并分割任意对象 Falcon Perception 是由阿联酋科技创新研究院(TI
HyperContainer性能优化技巧:10个提升容器运行效率的方法
HyperContainer性能优化技巧:10个提升容器运行效率的方法 HyperContainer是一款轻量级虚拟化容器运行时,通过结合虚拟机的安全性和容器的
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考