首页 / 资讯中心 / 文章详情

如何在自定义数据集上微调 SAM 3 分割模型:完整指南

如何在自定义数据集上微调 SAM 3 分割模型:完整指南 ★ FEATURED ARTICLE
如何在自定义数据集上微调 SAM 3 分割模型完整指南【免费下载链接】sam3The repository provides code for running inference and finetuning with the Meta Segment Anything Model 3 (SAM 3), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/gh_mirrors/sam/sam3SAM 3Segment Anything Model 3能按文本提示检测并分割物体但通用模型放到垂直领域往往力不从心医学影像、工业质检、你自己的商品类别都需要在自有数据上微调mask 边界和文本对应关系才能稳定。这篇文章带你走一遍 SAM 3 微调的完整流程准备 COCO 格式数据、改配置文件、用单卡/多卡/集群启动训练最后跑评估验证效果。先轻扫一遍模型结构微调前不用深读论文记住推理链路即可文本编码器把 a penguin 这类 prompt 转成特征图像编码器从当前帧提取视觉特征检测器负责找出帧内新出现的物体跟踪器把上一帧的 mask 传播过来两路结果合并后输出历史帧信息存入 Memory Bank 供后续复用。训练侧同样跑这套架构损失主要作用在检测分支box presence分割损失可配置开启。开工前准备环境、数据与配置三处路径依赖安装先克隆代码再装训练依赖trainextra 会带进 hydra-core、submitit、tensorboard 这些训练必需的包git clone https://gitcode.com/gh_mirrors/sam/sam3 cd sam3 pip install -e .[train]装完后能正常跑python sam3/train/train.py -c ...即说明环境没问题。数据格式速查训练数据走 COCO 格式每个 split 要有图像JPG/PNG和标注 JSON 两类文件JSON 里包含图像路径与尺寸、XYWH 边界框、RLE 或多边形掩码、类别名与文本描述。目录建议这样组织images/train/、images/val/各 split 的图像目录annotations/train.json、annotations/val.json对应的标注文件sam3/train/configs/ 下自带 Roboflow-100 和 ODinW13 两套完整配置数据组织方式可以直接照抄。SA-CO 数据集的标注效果见下图每个实例都对应一条文本描述这就是微调的目标样式配置文件改哪三节拷一份现有配置放到 sam3/train/configs/最小改动是三处。paths全是占位符必须填成实际路径paths: odinw_data_root: YOUR_DATA_DIR # 改为你的数据根目录 experiment_log_dir: YOUR_LOG_DIR # 改为实验日志输出目录 bpe_path: sam3/assets/bpe_simple_vocab_16e6.txt.gz训练超参数集中在scratch节最常动的几个字段scratch: resolution: 1008 # 输入分辨率显存紧张时调低 max_ann_per_img: 200 # 单图最大标注数 train_batch_size: 1 # 每卡 batch size max_data_epochs: 40 # 训练轮数launcher节控制节点数与每节点卡数但命令行参数--num-gpus/--num-nodes会覆盖它们一般不用改文件。训练启动三档单卡、多卡、集群训练入口是sam3/train/train.py-c指定配置相对sam3/train/目录--use-cluster 0表示本地跑。单卡启动命令python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml \ --use-cluster 0 --num-gpus 1执行后终端会先打印完整配置同时写入日志目录的config.yaml随后开始逐 epoch 训练logs/下能看到 loss 打印。多卡启动命令同一台机器换卡数即可python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml \ --use-cluster 0 --num-gpus 4内部走 torch.multiprocessing 的 spawn 方式每卡起一个进程通信后端是 NCCL。SLURM 集群提交参数python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_full_ft_100_images.yaml \ --use-cluster 1 --partition gpu_partition \ --account your_account --num-gpus 8 --num-nodes 2提交成功后终端打印Submitit Job ID: ...集群任务日志落在日志目录的submitit_logs/下可用squeue查排队状态。训练中的观测与调参实验目录启动后是标准布局config.yaml原始配置、config_resolved.yaml展开全部变量后的最终配置排错最有用、checkpoints/、tensorboard/、logs/。默认只保存最后一个 checkpointsave_freq: 0要留中间产物就调这个值。实时曲线建议直接开 TensorBoardtensorboard --logdir /path/to/experiment_log_dir/tensorboard重点盯训练 lossbbox、giou、ce、presence 四条线和学习率验证集每 10 个 epoch 跑一次val_epoch_freq: 10出 COCO bbox 的 AP 指标。常见调参方向验证 AP 不涨先查标注覆盖是否足够再下调lr_scale或换train_transforms里的数据增强组合速度太慢调低resolution把num_val_workers提到接近 CPU 核数除以卡数GPU 显存爆降resolution或train_batch_size配置里默认已开 activation checkpointinguse_act_checkpoint_*系列预测收集阶段 CPU 内存爆把gather_pred_via_filesys改为 true预测改走文件系统聚合评估验证评估命令与指标同一个入口也能当评估用把配置的trainer.mode切到val再跑对应的 eval 配置python sam3/train/train.py -c configs/roboflow_v100/roboflow_v100_eval.yaml执行完输出 COCO bbox 评测结果AP 等指标预测文件 dump 到日志目录的dumps/下可以离线画图核对。微调后 mask 与真实标注的差距有多大参考下面这张图SA-CO 上三位标注者对同一批实例的分割对比直观展示了边界精度要追的标杆踩坑速查报找不到配置-c是相对sam3/train/的路径从项目根目录按上文示例执行即可配置里还有YOUR_DATA_DIR占位符所有占位符都要填实用config_resolved.yaml核对展开结果少量任务 loss 发散官方 README 提到小样本场景个别 job 可能发散取发散前最后一个 checkpoint 的结果即可一次想刷多个数据集Roboflow 配置带submitit.job_arraynum_tasks: 100时每个任务自动选一个 supercategory延伸方向打开 examples/ 里的图像与视频 notebook用文本 prompt 验证微调后的实际效果试 odinw13 配置复现 10-shot few-shot 训练流程看 README_TRAIN.md 里 job array 与三种子seed 300/30/3聚合评估的细节往视频方向走sam3/model/下的 tracker 与 Memory Bank 组件支持跨帧 mask 传播可迁移到视频分割任务【免费下载链接】sam3The repository provides code for running inference and finetuning with the Meta Segment Anything Model 3 (SAM 3), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/gh_mirrors/sam/sam3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站