SAM-2.1 自定义分割微调实战从自定义数据集到自动掩码生成这篇教程是我根据 SAM-2.1 自定义数据集微调和自动 mask 生成流程整理出来的。重点演示如何下载 SAM2 格式数据集配置 SAM-2.1 训练脚本训练后对比微调模型和基础模型的分割效果。SAM-2.1 的训练流程依赖官方仓库、配置文件和 checkpoint。这个 notebook 适合作为完整项目复现模板尤其适合希望把 SAM-2.1 迁移到特定零件、工业目标或业务数据集的场景。本文会重点跑通以下流程下载 SAM2 格式数据集克隆并安装 SAM2 官方仓库修正数据集文件名以适配训练配置启动 SAM-2.1 单 GPU 微调对比微调模型和基础模型的自动 mask 结果如果你正在系统学习多模态微调、目标检测、OCR 或图像分割建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录SAM-2.1 自定义分割微调实战从自定义数据集到自动掩码生成 下载 SAM-2.1 与数据集 修改数据集文件名️ 开始训练 SAM-2.1 可视化微调模型结果 小结 同系列教程汇总 下载 SAM-2.1 与数据集先从数据集后台获取 car parts 数据集再克隆 SAM2 官方仓库和训练配置。注意原 notebook 中直接写了 API key发布前建议替换为自己的密钥或 Colab Secrets。fromtypesimportSimpleNamespace# 从数据集后台下载并解压数据集后修改 DATASET_DIR 指向数据集目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR)!git clone https://github.com/facebookresearch/sam2.git!wget-O/content/sam2/sam2/configs/train.yamlhttps://drive.usercontent.google.com/download?id11cmbxPPsYqFyWq87tmLgBAQ6OZgEhPG3%cd./sam2/!pip install-e.[dev]-q!cd./checkpoints./download_ckpts.sh 修改数据集文件名SAM-2.1 训练对文件名格式有要求这一步把 自定义数据集导出的文件名改成兼容形式。# 将 自定义数据集文件名改成 SAM 2.1 兼容格式。# 也可以通过调整 sam2/sam2/configs/train.yaml 来避免这一步。importosimportre FOLDER/content/data/trainforfilenameinos.listdir(FOLDER):# Replace all except last dot with underscorenew_filenamefilename.replace(.,_,filename.count(.)-1)ifnotre.search(r_\d\.\w$,new_filename):# Add an int to the end of base namenew_filenamenew_filename.replace(.,_1.)os.rename(os.path.join(FOLDER,filename),os.path.join(FOLDER,new_filename))️ 开始训练 SAM-2.1使用官方训练脚本和配置文件启动单 GPU 训练并可通过 TensorBoard 查看训练曲线。!python training/train.py-cconfigs/train.yaml--use-cluster0--num-gpus1%load_ext tensorboard%tensorboard--bind_all--logdir./sam2_logs/ 可视化微调模型结果加载微调 checkpoint 和基础 checkpoint在验证集图片上生成 mask 并并排对比。!pip install supervision-qimporttorchfromsam2.build_samimportbuild_sam2fromsam2.automatic_mask_generatorimportSAM2AutomaticMaskGeneratorimportsupervisionassvimportosimportrandomfromPILimportImageimportnumpyasnp# 在整个 notebook 中使用 bfloat16# from Meta notebooktorch.autocast(cuda,dtypetorch.bfloat16).__enter__()iftorch.cuda.get_device_properties(0).major8:torch.backends.cuda.matmul.allow_tf32Truetorch.backends.cudnn.allow_tf32Truecheckpoint/content/sam2/sam2_logs/configs/train.yaml/checkpoints/checkpoint.ptmodel_cfgconfigs/sam2.1/sam2.1_hiera_b.yamlsam2build_sam2(model_cfg,checkpoint,devicecuda)mask_generatorSAM2AutomaticMaskGenerator(sam2)checkpoint_base/content/sam2/checkpoints/sam2.1_hiera_base_plus.ptmodel_cfg_baseconfigs/sam2.1/sam2.1_hiera_b.yamlsam2_basebuild_sam2(model_cfg_base,checkpoint_base,devicecuda)mask_generator_baseSAM2AutomaticMaskGenerator(sam2_base)validation_setos.listdir(/content/data/valid)# choose random with .json extensionimagerandom.choice([imgforimginvalidation_setifimg.endswith(.jpg)])imageos.path.join(/content/data/valid,image)opened_imagenp.array(Image.open(image).convert(RGB))resultmask_generator.generate(opened_image)detectionssv.Detections.from_sam(sam_resultresult)mask_annotatorsv.MaskAnnotator(color_lookupsv.ColorLookup.INDEX)annotated_imageopened_image.copy()annotated_imagemask_annotator.annotate(annotated_image,detectionsdetections)base_annotatorsv.MaskAnnotator(color_lookupsv.ColorLookup.INDEX)base_resultmask_generator_base.generate(opened_image)base_detectionssv.Detections.from_sam(sam_resultbase_result)base_annotated_imageopened_image.copy()base_annotated_imagebase_annotator.annotate(base_annotated_image,detectionsbase_detections)sv.plot_images_grid(images[annotated_image,base_annotated_image],titles[Fine-Tuned SAM-2.1,Base SAM-2.1],grid_size(1,2)) 小结这篇教程完整整理了Fine-Tune SAM-2.1的核心复现流程。实际操作时建议先确认 GPU、依赖版本、数据集路径和模型权限再逐段运行 notebook。下载 SAM2 格式数据集克隆并安装 SAM2 官方仓库修正数据集文件名以适配训练配置启动 SAM-2.1 单 GPU 微调对比微调模型和基础模型的自动 mask 结果后续我会继续按源项目顺序整理 项目教程 中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标SAM-2.1 自定义分割微调实战从自定义数据集到自动掩码生成-本文