ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAM 自定义训练完整实战:从 800 张标注到可用的领域微调模型

SAM 自定义训练完整实战:从 800 张标注到可用的领域微调模型 SAM 自定义训练完整实战从 800 张标注到可用的领域微调模型【免费下载链接】segment-anythingThe repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/GitHub_Trending/se/segment-anything在遥感影像里做光伏板分割时未经微调的 SAM 对细窄的板体边缘经常漏切mIoU 大致落在 0.5~0.6 区间用本项目segment-anything的推理入口在自己标注的 800 张图上微调 15 个 epoch 后同一验证集上通常能进到 0.78~0.85 区间示例值实际以你的数据为准单张推理耗时基本不变。本文手把手带你走完 segment-anything 自定义训练全流程环境怎么装、COCO 数据集怎么准备、训练怎么启动、效果怎么验证以及参数不收敛时怎么排查。 场景与你能拿到的结果先说结果再说做法。你最终会拿到三样东西一个适配你领域的微调权重.pth 文件、一份可复现的训练配置、以及一张微调前 vs 微调后的掩码对比图。用一句话概括收益通用预训练权重是万金油你的领域数据是调味剂。当任务里出现高频纹理、细小部件、特定光照条件时直接推理的指标往往卡在瓶颈上而 SAM 本身是提示驱动的——它不靠类别名靠的是图像理解 提示响应所以用少量领域标注几百到几千张就能把掩码质量显著拉高而不需要重新预训练一个大模型。上面这张图就是 SAM 对一张街景做自动掩码生成的输出每个连通区域独立上色。微调后你领域里的目标会从背景杂色里被单独、干净地切出来。 原理速览数据流与模型选型微调前先花两分钟看懂数据是怎么流动的。这张图展示了 SAM 的核心链路图像只过一次图像编码器得到特征图之后每次提示点、框都只走很轻的掩码解码器输出若干个候选掩码和置信度分数。这决定了微调策略图像编码器参数最多、改动最贵所以通常最后才动提示编码器和掩码解码器小、贴近任务所以最先训。记住这个顺序后面调参不慌。三个规格怎么选看这张表规格参数量单卡显存需求约建议场景ViT-B~93M8GB 起步快速迭代、大批量实验ViT-L~373M16GB 起步精度与速度的折中ViT-H~636M24GB 起步最终交付、精度优先显存数字为近似值batch size 翻倍它也跟着涨实际以你的硬件为准。 完整流程三步跑通微调第一步数据集怎么准备格式统一用 COCO标注里存 bounding box 加 RLE 编码的 segmentation。RLE 你可以理解为把掩码里连续的 0/1压缩成一串游程数字比存整张二值图省一个数量级空间。目录这样摆my_sam_data/ ├── train/ val/ # 原图 ├── ann_train.json # COCO 标注 └── ann_val.json训练/验证按 8:2 切分同一样本的图不能跨集。数据量参考500 张起步能看到趋势2000 张以上微调收益稳定。第二步环境搭建与启动训练环境最小化装好 PyTorch 和项目本体即可。仓库获取方式git clone https://gitcode.com/GitHub_Trending/se/segment-anything。conda create -n sam_ft python3.9 -y conda activate sam_ft pip install torch torchvision opencv-python pycocotools matplotlib pip install -e . # 在项目根目录执行模型加载入口在 segment_anything/build_sam.py里面按 ViT 规格注册了三个构建函数提示编码逻辑在 prompt_encoder.py损失设计可以参考 mask_decoder.py。启动训练时先冻结图像编码器只训解码侧python scripts/train_finetune.py \ --model_type vit_b \ --pretrained sam_vit_b.pth \ --data my_sam_data \ --freeze encoder \ --epochs 15 --lr 2e-4 --bs 4--freeze encoder就是前文说的先训小模块。跑完前 5 个 epoch 看验证曲线稳定后再把--freeze去掉做全量微调每侧 5~10 个 epoch 足够。第三步验证效果用项目自带的推理 notebook 加载你的权重在验证集上跑指标。仓库里 notebooks/predictor_example.ipynb 演示了点提示推理automatic_mask_generator_example.ipynb 演示自动掩码把模型路径换成你的微调权重即可。python scripts/evaluate.py \ --checkpoint outputs/sam_ft/best.pth \ --data my_sam_data \ --metric miou dice重点看两件事验证 mIoU 是否比未微调基线高 5 个 points 以上以及最难的 20% 样本是否还在改善。前者说明微调生效后者决定要不要加数据。⚙️ 实战要点超参速查与排错超参不用全试从表内推荐值出发按影响列的优先级逐项动参数推荐值可试范围敏感度学习率解码侧2e-45e-5 ~ 5e-4高学习率编码器全量阶段2e-55e-6 ~ 5e-5高batch size42 ~ 8中权重衰减1e-41e-5 ~ 1e-3中训练轮数冻结阶段1510 ~ 25低排错对照表训练出问题先查这里现象常见原因处理办法损失前几个 batch 就是 NaN学习率相对全量微调太大降一个量级或检查冻结是否生效训练降、验证不降标注噪声或切分泄漏抽查 50 张标注重切 train/val边缘样本 mIoU 上不去掩码解码输出分辨率有限提高图像输入分辨率或后处理细化显存 OOM输入分辨率或 batch 过大降到 1024 输入bs 减半开梯度累积微调后通用场景变差全量微调过久导致遗忘缩短全量阶段轮数混合通用数据共训 回顾与延伸回顾五个关键点微调优先动提示编码器和掩码解码器图像编码器最后且用 10 倍小的学习率。数据格式用 COCO RLE标注质量比数量更先决定上限。训练分两阶段冻结编码器跑通曲线再全量微调 5~10 轮。评估固定用未微调基线 vs 微调后的同一验证集做差值。每次改一个变量曲线才能归因。延伸方向三个把微调权重导出成 ONNX 做推理加速仓库提供 scripts/export_onnx_model.py 作为起点用 segment_anything/utils/amg.py 的自动掩码生成器批量产出伪标签做半监督扩增跟进 SAM-2 等视频分割方向的开源实现。按这套流程迭代下去你的领域分割指标会稳定地越过纯推理的天花板。【免费下载链接】segment-anythingThe repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/GitHub_Trending/se/segment-anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表