Transformers SAM3-LiteText 实战指南:用 MobileCLIP 蒸馏文本编码器为 SAM3 减负 88% Transformers SAM3-LiteText 实战指南用 MobileCLIP 蒸馏文本编码器为 SAM3 减负 88%【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers本文基于 Transformers 仓库中 SAM3-LiteText 的官方模型文档与源码讲解这一轻量级视觉-语言分割模型的设计理念、模块组成与实战用法。SAM3-LiteText 在保留 SAM3 ViT-H 图像编码器的同时用经过知识蒸馏的 MobileCLIP 紧凑文本编码器替换掉原有 353M 参数的重型文本编码器将文本编码器参数量削减最多 88%。读完本文你将能够使用AutoModel/AutoProcessor完成文本提示驱动的实例分割、理解其五大组件配置文本编码器、几何编码器、DETR 编解码器、掩码解码器的默认参数并掌握通过get_text_features/get_vision_features预计算嵌入来加速多提示推理的技巧。模型背景为什么分割提示需要更轻的文本编码器SAM3-LiteText 出自论文《SAM3-LiteText: An Anatomical Study of the SAM3 Text Encoder for Efficient Vision-Language Segmentation》Chengxi Zeng 等人2026-02-12 发布2026-04-13 合入 Transformers 仓库。其核心问题在于SAM3 这类视觉-语言分割模型继承了面向开放式语言理解的通用大文本编码器而实际分割提示如 ear、car通常是短小、结构化且语义受限的导致文本编码器容量被严重过度供给带来持续的算力与显存开销。论文对 404,796 条真实提示跨多个基准进行了大规模解剖分析发现三重冗余上下文窗口大量闲置大多数提示根本用不满模型的上下文长度词表使用高度稀疏提示只命中了词表的极小子集文本嵌入处于低维流形上尽管表征维度很高实际信息却集中在低维子空间中。基于这些结论作者提出用一个紧凑的 MobileCLIP 学生模型经知识蒸馏优化替换 SAM3 的原始文本编码器图像侧的 ViT-H 编码器则原样保留。官方文档给出的三个变体如下变体文本编码器文本参数量参数量削减SAM3-LiteText-S0-16MobileCLIP-S042.54M~88%SAM3-LiteText-S1-16MobileCLIP-S163.53M~82%SAM3-LiteText-L-16MobileCLIP2-L123.80M~65%实验结果显示替换后的模型在图像与视频分割基准上保持了与原版 SAM3 相当的分割性能同时显著降低了静态显存占用。整体架构文本提示如何变成分割掩码从源码 modeling_sam3_lite_text.py 的Sam3LiteTextModel.forward实现看约 L2038-L2226前向数据流为视觉编码pixel_values送入 ViT 视觉编码器AutoModel.from_config(config.vision_config)默认sam3_vision_model输出多级 FPN 特征fpn_hidden_states与fpn_position_encoding文本编码input_ids送入Sam3LiteTextTextModelMobileCLIP 风格文本编码器取pooler_output后经过text_projection线性层从文本编码器隐藏维度投射到 DETR 所需的 256 维几何提示编码可选若传入input_boxes归一化到 [0,1] 的 (cx, cy, w, h) 框与input_boxes_labels1正例、0负例Sam3LiteTextGeometryEncoder用三种方式融合编码每个框——坐标直接线性投射、torchvision.ops.roi_alignROI 池化、正弦位置编码再拼接 CLS token经自注意力视觉交叉注意力的 Transformer 层处理产出geometry_prompt_features提示融合文本特征与几何提示特征在序列维度cat拼接为combined_prompt_features含对齐的 mask若 batch 为 1 而几何提示 batch 更大时会自动repeat对齐DETR 编码/解码Sam3LiteTextDetrEncoder6 层让视觉特征交叉注意提示特征Sam3LiteTextDetrDecoder6 层、200 个查询迭代细化参考框并输出presence_logits打分与出掩码Sam3LiteTextDotProductScoring通过解码器查询特征与文本特征的点积得到pred_logitsSam3LiteTextMaskDecoder将解码器查询与 FPN 特征融合经像素解码器3 级上采样输出pred_masks与semantic_seg。最终输出为Sam3LiteTextImageSegmentationOutputL517-L562核心字段包括pred_masks形状(batch_size, num_queries, height, width)的预测掩码pred_boxes(x1, y1, x2, y2)格式的预测框pred_logits解码器查询与文本特征的点积置信度presence_logits场景内是否存在对象的 presence token 置信度。源码注释明确给出了最终分数组合方式final_scores pred_logits.sigmoid() * presence_logits.sigmoid()。此外模型支持 SDPA 等加速注意力后端_supports_sdpa True但Sam3LiteTextModel显式关闭了 Flash/Flex AttentionL1927-L1929源码注释解释原因DETR 组件会从特征中生成浮点掩码无法安全地分派到 Flash/Flex 后端同时代码中对带相对位置偏置的交叉注意力做了回退 SDPA 的降级处理L634-L645。文本编码器RepMixer 与可插值位置编码Sam3LiteTextTextModelL372-L418是本次减负的核心其结构特点从源码可以直接印证首尾 RepMixer 块当config.use_repmixer_blocksTrue默认时第 0 层和最后一层使用Sam3LiteTextRepMixerBlock而非标准 Transformer 层。RepMixer 由一个 MobileOne 风格的可重参数化深度卷积 token mixerSam3LiteTextRepMixer含参考 BatchNorm 残差分支和一条卷积前馈路径Sam3LiteTextConvolutionalFeedForward深度卷积 两个 1×1 点wise 卷积 MLP组成两条支路都带有可学习的 layer-scale 门控初始值layer_scale_init_value1e-5卷积核大小由repmixer_kernel_size默认 11控制可插值位置编码Sam3LiteTextTextPositionEmbeddingL74-L89存储(1, 1, max_position_embeddings, hidden_size)的可学习位置参数遇到变长序列时用双线性插值 (F.interpolate) 适配实际长度——这正呼应了论文上下文窗口大量闲置的发现默认最大长度只有 77EOT 池化 CLIP 式投影前向时用input_ids.argmax(dim-1)定位 EOT token 的隐藏状态作为池化输出再经无偏置projection线性层投射到projection_dim默认 512对应 CLIP 文本塔的经典结构。组件与配置对照Sam3LiteTextConfigconfiguration_sam3_lite_text.py L143-L229聚合了六个子配置并在__post_init__中自动补全缺省项视觉配置默认解析为sam3_vision_model子配置类关键默认参数Sam3LiteTextTextConfigvocab_size49408、hidden_size512、num_hidden_layers12、num_attention_heads8、max_position_embeddings77、projection_dim512、use_repmixer_blocksTrue、repmixer_kernel_size11、layer_scale_init_value1e-5Sam3LiteTextGeometryEncoderConfighidden_size256、num_layers3、num_attention_heads8、intermediate_size2048、roi_size7ROI 池化输出尺寸Sam3LiteTextDETREncoderConfighidden_size256、num_layers6、num_attention_heads8、intermediate_size2048Sam3LiteTextDETRDecoderConfighidden_size256、num_layers6、num_queries200Sam3LiteTextMaskDecoderConfighidden_size256、num_upsampling_stages3FPN 像素解码器上采样级数注意image_size是代理属性读写都会透传到vision_config.image_sizeL221-L229调整输入分辨率时应通过它而非单独改子配置。所有配置类都用huggingface_hub.dataclasses.strict装饰加载 checkpoint 配置时对未知字段会更严格。快速上手与 SAM3 完全一致的调用接口官方文档强调SAM3-LiteText 是 SAM3 的drop-in replacement。它复用 SAM3 的Sam3Processor提示接口文本提示、框提示、批量推理等与 SAM3 文档 完全一致。以下代码来自模型文档可直接复制运行from io import BytesIO import httpx from PIL import Image from transformers import AutoModel, AutoProcessor model AutoModel.from_pretrained(yonigozlan/sam3-litetext-s0, device_mapauto) processor AutoProcessor.from_pretrained(yonigozlan/sam3-litetext-s0) image_url http://images.cocodataset.org/val2017/000000077595.jpg image Image.open(BytesIO(httpx.get(image_url).content)).convert(RGB) inputs processor(imagesimage, textear, return_tensorspt).to(model.device) outputs model(**inputs) results processor.post_process_instance_segmentation( outputs, threshold0.5, mask_threshold0.5, target_sizesinputs.get(original_sizes).tolist(), )[0] print(fFound {len(results[masks])} objects)这段代码的执行链路值得拆解AutoModel.from_pretrained依据自动映射命中sam3_lite_text → Sam3LiteTextModel见 modeling_auto.py L476AutoProcessor.from_pretrained则映射到 SAM3 的Sam3Processor见 processing_auto.py L75图像处理端在 torchvision 可用时使用Sam3ImageProcessor见 image_processing_auto.py L143后处理参数threshold0.5用于过滤pred_logitsmask_threshold0.5用于二值化pred_maskstarget_sizes来自处理器输出的original_sizes用于把掩码缩放回原图尺寸。进阶用法预计算嵌入以复用编码结果当同一张图要跑多个文本提示、或同一段提示要扫多张图时重复编码是浪费。Sam3LiteTextModel提供了两个预计算入口且forward对pixel_values/vision_embeds、input_ids/text_embeds实行严格的二选一互斥L2084-L2088 会直接抛ValueError。预计算文本嵌入复用到多张图# 一次性算好文本嵌入 text_inputs processor(textcat, return_tensorspt) text_embeds model.get_text_features(**text_inputs).pooler_output # 多张图复用 img_inputs processor(imagesimage, return_tensorspt) outputs model(pixel_valuesimg_inputs.pixel_values, text_embedstext_embeds)预计算视觉嵌入复用到多个提示img_inputs processor(imagesimage, return_tensorspt) vision_embeds model.get_vision_features(pixel_valuesimg_inputs.pixel_values) # 多个文本提示复用 text_inputs processor(textear, return_tensorspt) outputs model(vision_embedsvision_embeds, input_idstext_inputs.input_ids)注意get_text_features返回的pooler_output已经过text_projection投影L1995-L2001因此传入text_embeds时维度与 DETR 一致可直接被forward消费。配置类速览与自定义初始化Sam3LiteTextConfig支持从零构建随机权重模型这也是做微调/蒸馏实验时的起点。官方文档中的示例from transformers import Sam3LiteTextConfig, Sam3LiteTextModel configuration Sam3LiteTextConfig() model Sam3LiteTextModel(configuration) configuration model.config # 访问模型配置各配置类与模型的完整 API 文档含每个参数说明与forward签名由 doc-builder 的[[autodoc]]指令从源码 docstring 自动渲染覆盖以下八个小节Sam3LiteTextConfig、Sam3LiteTextTextConfig、Sam3LiteTextGeometryEncoderConfig、Sam3LiteTextDETREncoderConfig、Sam3LiteTextDETRDecoderConfig、Sam3LiteTextMaskDecoderConfig、Sam3LiteTextTextModel、Sam3LiteTextModel、Sam3LiteTextPreTrainedModel。其中Sam3LiteTextPreTrainedModel定义了几个值得注意的类属性base_model_prefix model、main_input_name pixel_values、input_modalities [image, text]并支持梯度检查点supports_gradient_checkpointing True。而完整的Sam3LiteTextModel会额外忽略视频跟踪权重前缀tracker_model.、tracker_neck.说明该图像分割权重与视频跟踪版共享底座L1923-L1926。实现要点与仓库资源索引模块化定义模型采用 Transformers 的 modular 体系手工维护源文件是 modular_sam3_lite_text.pyconfiguration_sam3_lite_text.py 与 modeling_sam3_lite_text.py 由它自动生成文件头部有 CI 强制的请勿手改警告权重转换脚本convert_sam3_lite_text_to_hf.py 负责把论文仓库SimonZeng7108/efficientsam3 的sam3_litetext分支的原始权重转换为 HF 格式排查权重映射问题时可从它入手测试覆盖tests/models/sam3_lite_text/test_modeling_sam3_lite_text.py 覆盖前向形状、掩码解码输出与自动映射行为自动映射注册六个子model_typesam3_lite_text、sam3_lite_text_text_model、..._detr_encoder等均在 auto_mappings.py 中注册为sam3_lite_text的子配置保证AutoConfig能正确解析嵌套配置。适用前提与限制该模型以文本提示 可选框提示驱动实例分割输出为查询式最多 200 个对象查询的掩码、框与置信度后处理阈值需按数据集自行调整文档中的官方 checkpoint 以yonigozlan/sam3-litetext-s0MobileCLIP-S0约 88% 削减为例S1/L 变体同构可用受 DETR 浮点掩码限制完整检测主干不支持 Flash/Flex Attention 后端对推理吞吐敏感的场景建议关注 SDPA 路径图像编码器保持 SAM3 的 ViT-H 体量不变轻量仅体现在文本侧——若目标是端到端小模型需自行评估图像侧的进一步压缩。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考