EdgeTAM — 面向端侧的 SAM 2,支持可提示分割 +
视频跟踪 — 已转换为 Apple MLX(-fp16),供
mlx-edgetam-swift Swift 包使用(MLXEngine
promptSegment + trackObject ModelPackage)。比 SAM 2 快 22 倍,在 iPhone 15 Pro Max 上达到 16 FPS。
从零开始构建的 MLX-Swift 架构移植。图像模式(点/框 → 掩码):RepViT-M1 编码器 + FPN +
SAM 提示编码器 + 双向掩码解码器——在 CPU 流上与 PyTorch 参考实现严格对齐
(image_embed 9.7e-6,mask logits 8.9e-5;端到端掩码 IoU 0.99,对比 PyTorch)。视频模式
(trackObject,点击一帧 → 逐帧 masklet):新增视频记忆栈——PerceiverResampler
-fp16 文件同时承载两种模式(874 个张量)。// Package.swift → .package(url: "https://github.com/xocialize/mlx-edgetam-swift", from: "0.1.0")
import EdgeTAM
// Image: click → object mask
let p = try EdgeTAMPredictor.fromPretrained(weightsPath, dtype: .float16)
p.setImage(sourceCGImage)
let (mask, score, _, _) = p.predict(point: (500, 375))
// Video: click on a frame → per-frame masklet
let vp = try EdgeTAMVideoPredictor.fromPretrained(weightsPath, dtype: .float16)
let track = vp.track(frames: cgImages, clickFrame: 0, points: [[210, 350]], labels: [1])或作为 MLXEngine ModelPackage(MLXEdgeTAM.EdgeTAMPackage)—— promptSegment(图像)+ trackObject
(视频)接口 —— 通过 Hub 解析此仓库。
权重:Apache-2.0(facebookresearch/EdgeTAM)。移植代码:MIT。