查看 Markdown

EdgeTAM

EdgeTAM 是 SAM 2 的端侧变体,为移动端推理速度而构建,同时保留同样的点提示和框提示工作流。LibreYOLO 通过一个专门的 LibreSAM 工厂函数支持它的图像分割路径,与 LibreYOLO() 检测器工厂函数分开。

任务
instance segmentation
尺寸
安装
pip install libreyolo
支持层级
兄弟层级,自 v 起。一个独立的产品面,有自己的工厂和契约。
上游
EdgeTAM,由 Meta Reality Labs 发布,采用 Apache-2.0 许可。论文源码
许可
代码采用 MIT,权重采用 Apache-2.0。商用

安装

EdgeTAM 需要 sam 这个 extra,它会一并装上 transformerstimm

bash
pip install "libreyolo[sam]"

预测

LibreSAM(...)(或者家族专用的 LibreEdgeTAM(...))是和 LibreYOLO(...) 分开的入口:它返回的是一个可提示(promptable)分割器,而不是检测器,因为在这里 没有空间提示的一次前向传播毫无意义。这个家族没有 libreyolo predict CLI 命令; 请用 Python API。只支持图像分割;EdgeTAM 的视频跟踪不在这里的范围内。

点提示与框提示
from libreyolo import LibreSAM, SAMPLE_IMAGE # EdgeTAM 只有一个尺寸 "edge",别名:"edgetam"、"edge-tam"、# "edgetam-edge"model = LibreSAM("edgetam") # 点提示:[x, y] 为像素坐标,label 1 = 前景result = model.predict(SAMPLE_IMAGE, points=[640, 420], labels=[1])print(result.masks.xy)      # 每个掩码一个多边形print(result.boxes.xyxy)    # 由掩码推出的紧致检测框 # 用框提示代替点提示result = model.predict(SAMPLE_IMAGE, bboxes=[300, 200, 900, 700]) # 完全不给提示则分割整张图(一个简化版的自动掩码生成器,# 而不是详尽的参考实现)result = model.predict(SAMPLE_IMAGE)
编码一次,多次提示
from libreyolo import LibreEdgeTAM, SAMPLE_IMAGE model = LibreEdgeTAM() # 图像编码器是最耗时的部分,set_image() 只跑一次;# 之后每次 predict() 调用都复用缓存的嵌入向量model.set_image(SAMPLE_IMAGE)a = model.predict(points=[640, 420], labels=[1])b = model.predict(bboxes=[300, 200, 900, 700])model.reset_image()

点提示接受 [x, y] 表示单个物体,[[x, y], ...] 表示多个,也接受 numpy 数组; labels 把每个点标为 1(前景)或 0(背景),默认全部为前景。框提示接受 [x1, y1, x2, y2] 或一组框,每个框对应一个掩码。两种提示都不给时,它会用一个稠密 网格去提示,并保留其中置信度高、互不重叠的掩码,以此分割整张图;这种「分割一切」 模式相对参考实现的自动掩码生成器做了简化,在拥挤场景里可能欠分割,所以真正给一个 点提示或框提示才是精确的那条路。conf 按预测出的掩码质量(IoU)过滤,而不是检测 置信度:传 0.0 就保留每一个候选。multimask=True 会为每个提示返回 SAM 那三个 整体与部分的歧义掩码,而不是只返回最好的那一个。device= 会移动模型,如果有正在 进行的 set_image() 会话,也会一并移动它缓存的嵌入向量。每个掩码的类别 id 都是 0,名字是 "object",因为可提示的掩码没有固定的类别集合。对这个家族来说, train()val()export()track() 都会抛出 NotImplementedError: LibreYOLO 在这里支持的就是图像推理。输入源类型见预测

变体

只有一个尺寸 edge,输入分辨率固定,所以在 SAM 这一档里选择这个家族是个硬件决策, 而不是尺寸决策:EdgeTAM 存在的意义就是受限的端侧推理。

检查点

这个家族已发布的全部权重文件。

文件输入(px)权重许可
Instance segmentation
LibreEdgeTAM.ptapache-2.0

上面的每个文件目前都在 LibreYOLO 组织中,并会在首次使用时下载。

许可

请检查你所下载的具体权重在 Hugging Face 仓库中的许可。LibreYOLO 组织里的每个检查点都附有许可,同一家族内也不一定相同。该仓库是权威来源;以下摘要说明本页上次验证时适用的情况。

这里只说明涉及的许可证,不构成法律意见。如果答案对商用很重要,请自行阅读许可证并咨询法律顾问。

原始工作
EdgeTAM, Meta Reality Labs
上游许可
Apache-2.0
LibreYOLO 代码
MIT
权重
采用 Apache-2.0 许可,重新发布在 huggingface.co/LibreYOLO
解读
Apache-2.0 is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy you redistribute, and it grants a patent license. LibreYOLO does not vendor EdgeTAM's model source: it calls the Apache-2.0 Transformers adapter and reproduces the pinned upstream image and prompt-coordinate transforms from facebookresearch/EdgeTAM commit 7711e012a30a2402c4eaab637bdb00a521302c91. The republished LibreYOLO/LibreEdgeTAM snapshot is converted from facebook/EdgeTAM revision 14d7ecc48c656b94e5184519f698cd5386c5a2bf, checked tensor-by-tensor against a Transformers-format reference before publication, and tagged Apache-2.0 on the LibreYOLO Hugging Face org. LibreYOLO ships image inference only; EdgeTAM's video tracking is out of scope for this family.

引用

@article{zhou2025edgetam,
  title={EdgeTAM: On-Device Track Anything Model},
  author={Zhou, Chong and Zhu, Chenchen and Xiong, Yunyang and Suri, Saksham and Xiao, Fanyi and Wu, Lemeng and Krishnamoorthi, Raghuraman and Dai, Bo and Loy, Chen Change and Chandra, Vikas and Soran, Bilge},
  journal={arXiv preprint arXiv:2501.07256},
  year={2025}
}

复制自作者在 github.com/facebookresearch/EdgeTAM#citing-edgetam 上提供的引用块。

已针对 LibreYOLO v1.5.0 验证。本页的支持表、检查点和基准测试数据由已发布的库和权重生成,并非手工编写。