Bëtum Tool SAM 3 模块实战:Promptable 基础分割与 Mask 转 BBox 的 COCO AP@50 评估管线

发布时间:2026/11/11 5:05:08

Bëtum Tool SAM 3 模块实战:Promptable 基础分割与 Mask 转 BBox 的 COCO AP@50 评估管线 人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载本文是 Bëtum Tool 仓库中 SAM 3Segment Anything Model 3模块的完整技术指南。该模块面向 Artemis Workshop 的植物表型视觉提取任务利用 SAM 3 的稠密实例分割能力以文本提示Prompt驱动的概念分割PCS方式输出像素级掩码再通过最小/最大坐标提取将其转换为统一的目标检测格式COCO 边界框最终用 COCOEval 以 AP50 单一指标与其他分组OWL-ViT、YOLO26、DiffusionDet横向对比。读完本文你将掌握SAM 3 在 Bëtum Tool 中的目录结构与执行流程、mask_to_bbox的源码级实现与单元测试验证、端到端推理 Notebook 的分步用法、共享评估入口evaluate_coco的参数语义以及提示词工程、置信度阈值扫描等关键实验变量。1. 模块定位为什么要用分割基础模型做目标检测models/sam3/README.md明确了本模块的定位实现SAM 3的稠密实例分割并构建一条掩码 → 边界框的转换管线以对齐 Workshop 的目标检测评测目标。其核心任务有两类重推理heavy inference直接利用 SAM 3 的零样本能力对图像中所有匹配提示概念的实例输出掩码微调掩码解码器fine-tune mask decoder冻结图像编码器只针对掩码解码器进行下游适配以提升特定农业概念如未成熟腰果的分割质量。之所以走分割→检测路线是因为在 Bëtum Tool 的整体设计中见 betum_tool/README.md四个小组共享同一评测指标AP50COCOEval分组模型技术路线1OWL-ViT开放词汇零样本检测2YOLO26实时监督检测3SAM 3可提示分割 → 边界框4DiffusionDet / InstructPix2Pix生成式感知因此 SAM 3 组面临的科学问题是一个以提示驱动的分割基础模型能否在定位任务上匹敌专门设计的检测模型为了回答这个问题模型输出的像素级掩码必须被转换为标准边界框纳入统一评测框架。2. 目录结构与交付物SAM 3 模块遵循每组只在自己的models/name/目录下工作的约定目录结构如下与 README 中声明一致betum_tool/models/sam3/ ├── README.md # 本模块说明文档 ├── notebooks/ │ └── template_inference.ipynb # 推理 Colab 模板端到端管线 ├── scripts/ │ └── masks_to_bboxes.py # SAM 掩码 → COCO 边界框转换 ├── results/ │ └── ablations.md # 每次实验的 AP50 记录日志 └── tests/ └── masks_to_bboxes_test.py # 转换工具的单元测试各交付物的职责Notebook可一键在 Google Colab 中打开覆盖依赖安装、数据下载、HF 认证、推理、评估、阈值扫描、可视化与结果保存全流程详见第 4 节脚本核心转换工具同时提供掩码分数 → COCO 预测条目的批量接口消融日志以 Markdown 表格记录每次运行的 AP50、提示词集与后处理参数供组内汇报与跨组对比。3. Mask → BBox 转换管线源码与测试印证README 给出了管线的核心调用方式# Extract bounding box from a binary mask from scripts.masks_to_bboxes import mask_to_bbox bbox mask_to_bbox(binary_mask) # Returns [x_min, y_min, width, height]对应实现位于 betum_tool/models/sam3/scripts/masks_to_bboxes.pymask_to_bbox第 36-56 行。其原理是对二值掩码做两次逐行/逐列投影找出非零区域的最小/最大行列坐标def mask_to_bbox(mask): Convert a binary mask to COCO-format [x_min, y_min, width, height]. rows np.any(mask, axis1) cols np.any(mask, axis0) if not rows.any(): return None # Empty mask y_min, y_max np.where(rows)[0][[0, -1]] x_min, x_max np.where(cols)[0][[0, -1]] return [ int(x_min), int(y_min), int(x_max - x_min 1), int(y_max - y_min 1), ]实现要点输入约定mask为形状(height, width)的布尔型 NumPy 数组空掩码处理若某行都不为真rows.any()为假说明掩码为空返回None而不是一个退化的框——调用方需要显式跳过空掩码闭区间修正1COCO 的[x_min, y_min, width, height]约定为像素数量因此宽度计算为x_max - x_min 1、高度为y_max - y_min 1避免相邻像素被少算一格整型输出坐标全部转为int与 COCO JSON 中 bbox 的整数规范一致。同一文件还提供了批量接口pcs_output_to_coco_predictions(masks, scores, image_id, category_id)第 59-82 行它将一组掩码与其置信度分数打包成标准的 COCO 预测字典列表空掩码自动跳过predictions.append({ image_id: image_id, category_id: category_id, bbox: bbox, score: float(score), })3.1 单元测试验证配套测试 betum_tool/models/sam3/tests/masks_to_bboxes_test.py 覆盖了四个关键场景可作为你自行修改转换逻辑时的回归基准测试用例输入期望输出验证点test_mask_to_bbox_empty10×10 全 False 掩码None空掩码返回Nonetest_mask_to_bbox_single_pixel仅(4,5)为 True[5, 4, 1, 1]单像素框test_mask_to_bbox_rectangle行 2-4、列 3-6 为 True[3, 2, 4, 3]矩形区域的坐标与尺寸换算test_pcs_output_to_coco_predictions两个掩码 分数[0.95, 0.85]两条含image_id/category_id/bbox/score的预测批量打包与字段完整性注意测试中的断言bbox [5, 4, 1, 1]再次印证了[x, y, w, h]的坐标在前、宽高在后的 COCO 约定且坐标指像素格索引而非边界坐标。运行测试的方式遵循仓库约定在仓库根目录执行python -m betum_tool.models.sam3.tests.masks_to_bboxes_test仓库使用python -m模块化运行方式见 betum_tool/README.md 的 Running Scripts 一节。4. 端到端推理template_inference.ipynb 分步解析betum_tool/models/sam3/notebooks/template_inference.ipynb 是 README Quick Start 指向的核心执行载体。README 给出的三步快速开始为在 Google Colab 中打开notebooks/template_inference.ipynb按单元格顺序下载数据、运行 SAM 3 推理、将掩码转换为边界框在results/ablations.md中记录你的结果。Notebook 内部将上述过程细化为 11 个阶段其中若干关键阶段值得展开4.1 环境与数据准备Setup安装依赖pip install -q transformers torch torchvision pycocotools Pillow matplotlib numpy gdown——注意transformers需要支持Sam3Model/Sam3Processor的版本稀疏克隆仓库仅拉取betum_tool目录git sparse-checkout set betum_tool避免下载 2GB 的 monorepo 代码下载数据集从 Mendeley Data数据集r46c6bpfpf下载 Coffee Cashew Nut 数据集压缩包并用unrar解压最终验证Cashew/Cashew-Uganda/images与Coffee/Batch1/images结构格式转换调用共享工具 betum_tool/common/flatten_coffee.py 摊平 Coffee 批次再调用 betum_tool/common/yolo_to_coco.py 将 YOLO 标注转换为 COCO JSON--class_map betum_tool/common/class_map.json --split_ratio 0.8生成cashew_val.json/coffee_val.jsonGT 可视化使用 betum_tool/common/visualize_coco.py 的visualize()抽查验证集标注质量。4.2 配置变量ConfigurationNotebook 用一组 Python 变量集中管理实验配置直接对应 README 的Key Parameters to Explore清单是零样本实验最值得调整的部分NUM_EXAMPLES 4 # 冒烟测试设为 None 跑全量数据集 DATASET cashew # [cashew, coffee] MODEL_ID facebook/sam3 # HuggingFace 门控模型仓库 CONFIDENCE_THRESHOLD 0.05 # 零样本起步用低阈值之后调优 SCORE_THRESHOLDS_TO_SWEEP [0.01, 0.05, 0.1, 0.15, 0.2] TEXT_QUERIES { cashew: [cashew tree, cashew flower, premature cashew nut, unripe cashew nut, ripe cashew nut, spoilt cashew nut], coffee: [unripe coffee berry, ripening coffee berry, ripe coffee berry, spoilt coffee berry, coffee tree], }关键说明TEXT_QUERIES的列表顺序必须与 COCO JSON 中的category_id顺序一一对应0, 1, 2, ...。类别映射定义在 betum_tool/common/class_map.jsoncashew 为0tree, 1flower, 2premature, 3unripe, 4ripe, 5spoiltcoffee 为0unripe, 1ripening, 2ripe, 3spoilt, 4coffee_tree由于数据集中unripe咖啡 96.0%与spoilt腰果 29.2%等类别高度不平衡详见 betum_tool/TECHNICAL_BRIEFING.md提示词的选择会显著影响哪些概念被看见。4.3 设备选择与模型加载设备选择按CUDA → MPSApple Silicon→ CPU的优先级自动降级模型加载使用 Transformers 原生接口from transformers import Sam3Model, Sam3Processor processor Sam3Processor.from_pretrained(MODEL_ID) model Sam3Model.from_pretrained(MODEL_ID).to(device)由于facebook/sam3是门控gated模型仓库必须先完成 Hugging Face 认证注册账号 → 在模型页申请访问权限 → 生成 Read 权限的 User Access Token → 在 Notebook 中执行notebook_login()。4.4 推理主循环PCS 输出与框坐标换算Notebook 的核心函数run_sam3_native_pcs展示了 SAM 3 原生 PCS 的完整调用链对每张图、每个文本提示执行inputs processor(imagesimage, textprompt_text, return_tensorspt).to(device) with torch.no_grad(): outputs model(**inputs) results processor.post_process_instance_segmentation( outputs, threshold0.01, # 低阈值先捕捉候选之后统一扫描 mask_threshold0.0, target_sizesinputs.get(original_sizes).tolist(), )[0]results包含三个关键张量masks形状[num_objects, H, W]、boxes形状[num_objects, 4]xyxy 格式、scores形状[num_objects]。随后 Notebook 将模型直接输出的 xyxy 框转换为 COCO 的[x1, y1, w, h]w x2 - x1这与masks_to_bboxes.py的闭区间换算1是两套并行实现二者都服务于同一个目标生成符合 COCO 规范的预测条目{image_id, category_id, bbox, score}。4.5 统一评估与阈值扫描评估阶段调用共享封装 betum_tool/common/evaluate.pyfrom common.evaluate import evaluate_coco results evaluate_coco(gt_jsonCOCO_VAL_JSON, predictionsall_predictions, score_thresholdCONFIDENCE_THRESHOLD) print(fAP50 {results[AP50]})从源码看evaluate_coco第 147-250 行的职责包括灵活的输入形态gt_json与predictions均可传路径、Python 列表或COCO实例predictions为空文件或空列表会给出显式警告并返回全 0 指标阈值过滤score_threshold参数在进入 COCOeval 前先做一次score threshold的预过滤多维指标返回值包含APIoU 0.50:0.95 均值、AP50、AP75与逐类别per_class_ap50逐类 AP50 计算通过对 COCOeval 的 5 维 precision 张量维度[T, R, K, A, M]见_slice_precision_matrix注释切片取 IoU0.50、maxDets最大索引对应的召回维度均值可读报告verboseTrue时打印带类别名与 AP50 的格式化汇总表_print_summary_report。Notebook 还实现了 README 强调的置信度阈值扫描对SCORE_THRESHOLDS_TO_SWEEP中的每个阈值重复调用run_coco_eval输出阈值 vs AP50汇总表用于在精度与召回之间寻找平衡点——低阈值召回更多真实实例高阈值过滤低置信度误检。5. 评估约定与消融日志5.1 统一 COCO JSON 评估README 明确要求所有预测必须转换为 COCO JSON 格式后进行统一评估from shared.evaluate import evaluate_coco results evaluate_coco(gt_pathpath/to/gt.json, pred_pathpath/to/predictions.json)该模块对应的共享实现即 betum_tool/common/evaluate.py注意实际参数名为gt_json与predictions二者均支持文件路径。Notebook 最后一步会把全部预测写入results/{DATASET}_predictions.json用于跨模型分析与与其他分组做对比评测。5.2 消融记录规范betum_tool/models/sam3/results/ablations.md 是实验日志模板要求每次运行一行包含四类信息Results 主表Run | Mode | Dataset | Prompts / Config | Confidence Threshold | AP50 | Notes模板预置了 4 行zero-shot PCS实验Cashew/Coffee × baseline/simple 提示词阈值 0.05提示词工程笔记按baseline如cashew tree,premature cashew nut、simple如tree,flower,premature、domain-specific如cashew tree foliage,cashew inflorescence,immature cashew nut三档记录提示词集及其对 AP50 的影响后处理 / 推理笔记跟踪confidence_threshold默认 0.05、min_mask_area_pixels、nms_iou_threshold三个参数的变化与效果。6. 建议探索的参数空间Key ParametersREADME 在结尾给出了五个实验维度结合源码与 Notebook 可以进一步明确每个维度的操作含义参数维度说明在仓库中的落点提示类型point / box / textSAM 3 支持点、框、文本三类提示本模块默认走文本 PCS 路线run_sam3_native_pcs中processor(images..., text...)每目标点数number of points per object点提示模式下每实例的采样点数量影响掩码细节使用点提示时在processor的input_points中配置掩码解码器微调冻结编码器 vs 全量微调冻结图像编码器只训练掩码解码器可降低算力需求全量微调则适配更强属于任务定义的一部分README Overview可在models/sam3/下扩展训练脚本后处理 NMS对提取出的边界框做非极大值抑制减少同一实例的重复框对应ablations.md中nms_iou_threshold字段置信度阈值低阈值起步0.05保证零样本召回再通过扫描找到最优值CONFIDENCE_THRESHOLD/SCORE_THRESHOLDS_TO_SWEEP/evaluate_coco(score_threshold...)7. 总结SAM 3 模块是 Bëtum Tool 统一 AP50 评测框架下的分割路线代表。其核心价值在于以最小工程代价mask_to_bbox数十行代码 一个 Colab Notebook把基础分割模型的像素级输出无缝接入目标检测评测体系使分割基础模型 vs 检测专用模型的横向对比成为可能。无论你是要复现零样本 PCS 基线、开展提示词消融还是尝试冻结编码器的掩码解码器微调模板推理 Notebook、转换脚本 及其单元测试构成了一个自洽、可验证的起点而 消融日志 则保证了每个实验结论都能被追溯、对比与沉淀。赞分享人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载相关推荐Transformers 中的 Mask Generation掩码生成基于 SAM / SAM 2 的分割推理与微调实战Transformers 中的 Mask Generation掩码生成基于 SAM / SAM 2 的分割推理与微调实战 导读 本文讲解 Trans前端UI组件设计系统如何用 Detectron2 COCOEvaluator 在自定义 COCO 格式数据集上评估检测与实例分割 AP如何用 Detectron2 COCOEvaluator 在自定义 COCO 格式数据集上评估检测与实例分割 AP 假设你手上有一个按 COCO 格式标注的验证人工智能计算机视觉深度学习机器学习Darknet中的实例分割Mask YOLO实现与配置指南Darknet中的实例分割Mask YOLO实现与配置指南 在计算机视觉领域目标检测技术已广泛应用于各类场景但仅能提供目标的边界框信息。而实例分割Ins人工智能深度学习计算机视觉机器学习上一篇Awesome Lockpicking资源大全从入门教程到高级锁匠技巧下一篇TurboGears2部署与运维Docker、Nginx和Gunicorn的生产环境配置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/11 5:05:08

Abaqus 2023安装全攻略:Java环境变量与许可证配置详解

1. 为什么 Abaqus 2023 的安装总让人抓狂搞有限元仿真的人,十有八九在 Abaqus 安装这一步栽过跟头。不是危言耸听,我见过太多人软件下了三天,结果卡在许可证配置上,最后无奈重装系统。Abaqus 2023 作为达索系统旗下的主力仿真平台…

2026/11/11 5:02:49

电工证可入户厦门吗?真实经历告诉你外省证怎么转

电工证可入户厦门吗?真实经历告诉你外省证怎么转 之前考的证在外省能不能转过来?这是我最近接到的咨询最多的问题之一。很多人在外地考了电工证,现在想回厦门发展,但又担心证书不能用,入户更是遥不可及。今天我就用自己和身边人的真实经历,帮你理清楚电…

2026/11/11 5:02:49

沧州市电工证办理值不值得考?别再犹豫了,看完这篇就懂

沧州市电工证办理值不值得考?别再犹豫了,看完这篇就懂 你是不是正愁找不到工作?是不是被用人单位要求必须有特种作业操作证才能上岗?别急,今天咱们就来聊聊【沧州市电工证办理】值不值得考,以及怎么考才不走弯路。…

2026/11/11 5:02:48

学校电工证年审要多久?2026河南最新政策怎么应对

学校电工证年审要多久?2026河南最新政策怎么应对 怕考不过白交培训费?别急,今天我就给你讲讲【学校电工证年审要多久】这件事,尤其是2026河南最新政策下,你该怎么操作,避免被坑,省下冤枉钱。…

2026/11/11 5:02:48

贵港电工证办理流程6怎么考网上查询

贵港电工证办理流程6怎么考网上查询 之前考的证在外省能不能转过来?这个确实是很多人在考电工证前最关心的问题,尤其是那些已经在外地考了证但想回老家发展的朋友。其实现在国家推行“全国一体化政务服务平台”,很多证书 网上查询 都可以操作,…

2026/11/11 5:02:48

在哪办电工证考试真题与备考技巧

电工证怎么考?郑州报考避坑指南全解析 你是不是也遇到过这种情况:证书快到期了,却不知道怎么复审?一查才发现自己差点就“裸奔”上岗了。别慌,今天我们就来聊聊【在哪办电工证】的那些事儿,特别是郑州的朋友们,更要仔细看看这个【郑州报考避坑指南】,…

2026/11/11 4:57:47

电工证能联网吗千万别踩坑 这些报名避坑指南必须看

电工证能联网吗千万别踩坑 这些报名避坑指南必须看 你是不是正愁不知道去哪报名电工证,怕被中介坑?别急,今天就给你讲讲【电工证能联网吗】这事到底咋回事,还有那些你必须知道的报名避坑指南。我干这行快十年了,见过太多人因为选错地方、听信谣言,结果…

2026/11/10 8:12:38

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑