describe-anything
NVIDIA开源的精准区域视觉描述模型,输入图像+任意区域掩码,输出该区域的详细自然语言描述,支持图
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA开源的精准区域视觉描述模型,输入图像+任意区域掩码,输出该区域的详细自然语言描述,支持图
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你是一名外科医生,想要 AI 助手帮你分析手术影像中的某个具体结节;或者你是建筑师,想让 AI 精确描述建筑图纸中的某个结构节点。传统 VLM(视觉语言模型)只能给你一张图的整体描述,而 Describe Anything(DAM)做了一件看似简单、实则极具挑战的事——让 AI 精确描述图片或视频中任意区域的内容。
这不仅是 ICCV 2025 的收录论文,更是 NVIDIA、UC Berkeley、UCSF 三大机构联合发布的开源模型,为「详细局部图像/视频描述」(Detailed Localized Captioning, DLC)任务设立了新的技术标杆。

图1:Describe Anything 模型(DAM)架构示意图,支持点、框、涂鸦、掩码等多种输入形式
现有的视觉语言模型(如 GPT-4V、LLaVA)在图像整体描述上已经表现出色,但在「局部细节」上却往往力不从心。你无法要求 GPT-4V「只描述这张 CT 片左下角的阴影」——模型会给你整张图的分析,而不是你关心的那个区域。
这种局限在医学影像、卫星遥感、工业检测、自动驾驶等高精度场景中是致命的。Describe Anything 的核心贡献就是解决了这个问题:用户可以在图像上通过点、边界框、涂鸦甚至已有掩码标注出感兴趣区域,模型就会输出该区域的详细文字描述,包括外观特征、空间关系、动作状态等丰富细节。
对于视频场景,DAM 更展现了强大的能力——只需在某一帧标注区域,模型会自动将描述传播到整个视频中,无需逐帧标注。这一特性使得长视频分析成本大幅降低。
DAM 的使用方式非常直观,整个 pipeline 分为三个阶段:
第一步:区域标注
用户通过 Gradio 提供的交互界面(demo_simple.py 图像版、demo_video.py 视频版)在图像上标注目标区域,支持四种方式:
第二步:SAM 掩码生成 模型内部集成了 Meta 的 Segment Anything(SAM)模型,用于将用户的点/框输入转换为精确的像素级掩码。对于视频处理,使用 SAM 2 实现跨帧掩码传播,只需标注一帧即可覆盖整个视频。
第三步:区域描述生成 生成的掩码经过「裁剪策略」(crop_mode)处理后,与原始图像一起送入 LLaVA 架构的多模态模型。模型支持两种 prompt 模式:
focal_prompt:包含完整图像上下文 + 裁剪聚焦区域full+focal_crop:额外提供局部区域的放大裁剪图,帮助模型捕捉小尺度细节输出结果是一段详细的自然语言描述,包含该区域的:外观特征(颜色、纹理、尺寸)、空间位置、与周围物体的关系、动作/状态描述等。

图2:区域描述示例——对图中狗的区域标注后,模型输出「一只中大型犬,厚实的红棕色毛发,脸部、胸部和爪子有白色斑纹,耳朵尖耸,尾巴蓬松,正在跳跃」
从代码结构来看,DAM 基于 LLaVA(Large Language and Vision Assistant)架构进行了深度定制,主要包含以下核心模块:
多模态编码器(Multimodal Encoder)
多模态投影器(Multimodal Projector)
base_projector 接口,支持可插拔的投影层实现语言模型(Language Model)
builder.py 的 load_pretrained_model 函数加载conversation.py 中的模板系统(基于 LLaMA-2 Chat 格式)FastAPI 服务端(dam_server.py)
模型还提供了 OpenAI-API 兼容的 FastAPI 服务端(dam_server.py),实现了 /chat/completions 端点,支持:
这意味着 DAM 可以直接作为本地部署的 GPT-4V 替代品,通过 OpenAI SDK 的标准接口调用,大幅降低迁移成本。

图3:Gradio 图像演示界面——左侧上传图像,中间画笔标注区域,右侧输出描述结果
DAM 的安装非常简洁,官方提供了两种安装方式:
# 方式一:无需克隆仓库,直接 pip 安装
pip install git+https://github.com/NVlabs/describe-anything
# 方式二:克隆后本地安装(方便调试)
git clone https://github.com/NVlabs/describe-anything
cd describe-anything
pip install -v .
依赖方面,需要 Python >= 3.8,主要依赖包括:torch>=2.0、transformers>=4.41.2、accelerate、pydantic、gradio>=5.5.0、fastapi/uvicorn、opencv-python、openai>=1.55.0。
可选依赖中,segment-anything(SAM)和 sam-2 分别用于图像和视频的掩码生成,如需完整功能建议一并安装。
部署模式上,demo_simple.py 和 demo_video.py 分别提供图像和视频的 Gradio Web UI,浏览器直接访问即可使用。服务器模式则通过 dam_server.py 启动 FastAPI 服务,监听 /chat/completions 端点。
硬件需求:模型较大,推荐使用 NVIDIA A100/H100 等高端 GPU,显存需求 16GB 以上。如果显存不足,可以考虑 int4 量化版本。

图4:Gradio 视频演示界面——支持单帧标注后自动传播到整个视频
除了模型本身,DAM 团队还发布了 DLC-Bench 基准数据集,专门用于评估模型在详细局部描述任务上的能力。该基准涵盖了多种场景(医学影像、自然图像、工业场景等)和不同类型的区域标注方式(点、框、涂鸦等),是首个系统化评估 DLC 任务的标准化测试集。
这一 benchmark 的意义在于:它不仅定义了「好」的局部描述标准,还为后续研究提供了公平的对比基线。从而为「详细局部描述」从学术研究走向工业应用奠定了评估基础。
尽管 DAM 展示了令人印象深刻的能力,但在实际部署中仍有一些需要注意的点:
对 SAM 的强依赖:区域掩码的质量直接影响描述质量。如果 SAM 在某些复杂场景(遮挡严重、边缘模糊)下表现不佳,整个 pipeline 的效果也会受限。
显存门槛高:作为 LLaVA 架构的扩展版本,模型参数量较大,在消费级 GPU 上运行仍有挑战。虽然代码支持 use_cache 等优化,但在 16GB 以下显存的 GPU 上可能需要更激进的量化或减少图像分辨率。
视频处理的实时性:对于长视频(如分钟级),掩码传播和逐帧描述的耗时仍然较高,实时应用场景需要进一步优化推理速度。
Describe Anything 的发布,标志着多模态 AI 从「整体感知」向「精细理解」的演进又迈出了关键一步。它不仅解决了 VLM 的一个核心痛点,更通过开源的方式让整个社区能够在此基础上快速迭代。
结合 NVIDIA 在 GPU 硬件和 CUDA 生态上的积累,DAM 有望在医学影像分析、卫星图像解译、工业质检、影视内容审核等专业领域快速落地。随着 DLC-Bench 等基准的完善,「局部描述」能力也将成为评估下一代多模态模型的重要维度。
从增长曲线看,该项目在 GitHub 上已获 1,494 颗星,发布仅两个月便获得了广泛认可。作为 ICCV 2025 的收录论文,其研究价值和技术影响力都处于上升期。
项目链接:GitHub | arXiv | HuggingFace