SAM-HQ 深度解析:256×256 高分辨率特征如何把零样本分割边缘做精细
SAM-HQ 深度解析:256×256 高分辨率特征如何把零样本分割边缘做精细
【免费下载链接】sam-hqSegment Anything in High Quality [NeurIPS 2023]项目地址: https://gitcode.com/gh_mirrors/sa/sam-hq
HQ-SAM(SAM-HQ)是 NeurIPS 2023 论文《Segment Anything in High Quality》的官方开源实现,在原版 SAM 的图像编码器、提示接口和权重全部保留的前提下,把掩码解码器的特征分辨率从 64×64 提到 256×256,零样本分割的边缘精度随之明显变好。最大亮点:参数量只增加不到 1M,却在 COCO、DAVIS 等数据集上稳定超过基线。
一、为什么需要更高质量的零样本分割
原版 SAM 用 11 亿掩码训练,泛化能力确实强,但掩码质量在三类场景下会掉链子:
- 边缘锯齿与模糊:毛发、纱线、格栅这类高频细节处,64×64 的解码特征分辨率不够,边界容易"糊";
- 小物体与精细结构丢失:分辨率低导致掩码贴不住细窄部位(羽毛、叶片、手指缝隙);
- 密集多目标互相干扰:COCO 这类多目标场景下,单个掩码的稳定性下降,容易出现粘连或错位。
HQ-SAM 的总体思路很克制:不动编码器,只在解码端做两件事——融合早期层特征拉高特征分辨率,再加一个可学习的 HQ 输出 Token 对基础掩码做修正。
二、高分辨率特征融合与 HQ 输出 Token 的实现拆解
1. 高分辨率特征融合:64×64 到 256×256
类比:用望远镜看全景会失焦,换成"广角定调 + 长焦补细节"的双镜头组合。
核心思想:原版解码器只用 ViT 最终层输出(64×64,语义强但细节弱);HQ-SAM 额外取出 ViT 第一组全局注意力块后的早期层特征(256×256,细节多但语义弱)。
关键设计见 MaskDecoderHQ 源码:两路特征分别过独立的卷积块(含转置卷积上采样)对齐空间尺寸与通道数,再逐元素相加:
vit_features = interm_embeddings[0] # 早期层 ViT 特征,256×256 hq_features = self.embedding_encoder(image_embeddings) \ + self.compress_vit_feat(vit_features) # 融合为 256×256收益:掩码解码真正跑在 256×256 的特征图上(比原版 64×64 高 16 倍面积),早期层保留的高频细节不再被深层下采样稀释。
2. HQ 输出 Token 与误差修正
类比:老裁缝做基础版裁片,质检员拿着放大镜只挑毛病、做修补。
核心思想:在解码器里新增一个可学习的hf_token(HQ-Output-Token)和一条独立 MLP,多产出一路"HQ 掩码";最终掩码 = SAM 基础掩码 + HQ 掩码,相当于对基础结果做残差修正。
关键设计(同样在 mask_decoder_hq.py 的forward中):
if hq_token_only: masks = masks_hq # 单物体:直接输出 HQ 掩码 else: masks = masks_sam + masks_hq # 多物体:基础掩码 + HQ 修正收益:SAM 的原始权重与提示接口(点、框、掩码输入)完全不变,只多一个 token、一条小 MLP 和几个小卷积块,训练也便宜——官方用 44K 精细掩码数据集、8 卡 GPU 约 4 小时训完。
三、SAM vs HQ-SAM 效果验证
官方给出的零样本基准(均为 HQ-SAM 2 对比 SAM2.1,同检测器、同提示条件):
| 数据集 | 指标 | 基线 | HQ-SAM 2 | 相对提升 |
|---|---|---|---|---|
| COCO(零样本图像分割) | AP 单掩码模式 | 50.0 | 50.9 | +0.9 |
| COCO(零样本图像分割) | AP 多掩码模式 | 48.3 | 50.4 | +2.1 |
| DAVIS val(视频分割) | J&F | 89.8 | 91.0 | +1.2 |
| SegInW 野外基准 | Mean AP | 48.7 | 49.6 | +0.9 |
两个值得注意的旁证:多掩码模式提升比单掩码大 1 分以上,说明误差修正机制在多目标场景收益更明显;轻量版 Light HQ-SAM(TinyViT 编码器)在 COCO 上比 MobileSAM 高 0.7 AP(45.0 vs 44.3),速度达到 41.2 FPS,说明这套改进没有牺牲效率。
四、四类典型场景怎么配
- 单物体精细分割:设
hq_token_only=True,直接采用 HQ 掩码,边缘最干净。示例脚本 demo/demo_hqsam.py,测试图在demo/input_imgs/。 - 多物体密集场景:保持默认
hq_token_only=False,让多掩码输出 + HQ 修正兜底,COCO 类图像推荐这个配置。 - 实时轻量部署:用
vit_tiny权重(Light HQ-SAM,41.2 FPS),脚本 demo/demo_hqsam_light.py。 - 视频分割与跟踪:用 HQ-SAM 2 的
build_sam2_hq_video_predictor,脚本 demo_hqsam2.py,可参考sam-hq2/notebooks/里的交互示例。
结语
HQ-SAM 的贡献路径很清晰:保留 SAM 的全部权重与提示接口,只加一个可学习 Token 和几层小卷积,就把掩码解码的特征分辨率拉到 256×256,换来 COCO 零样本 50.9 AP 的实测结果,且已被 Hugging Face Transformers 收录。建议直接跑 demo/demo_hqsam.py 看边缘差异,或按仓库 README 的 Quick Installation 一节装好环境上手。
【免费下载链接】sam-hqSegment Anything in High Quality [NeurIPS 2023]项目地址: https://gitcode.com/gh_mirrors/sa/sam-hq
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
