sam微调过程

根据https://github.com/xzyun2011/finetune_segment_anything_tutorial 微调SAM模型

代码使用

Fine-tuning

  • Step 0, 下载SAM的权重,可以从segment-anything github repo model checkpoint 直接下载

  • Step 1, 准备好VOC2007 dataset,直接在 官网 下载。直链是http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar

    代码里面有个迷你版的VOC2007数据集,在 “data_example”里面,下好了权重可以直接用这个目录文件试跑

  • Step 2, 开始 fine-tuning

    记得把模型、数据路径换成自己的,gpu id也可以指定

    python3 finetune_sam_voc.py --w weights/sam_vit_b_01ec64.pth --type vit_b --data data_example/VOCdevkit

代码讲解

数据读取

使用的是VOC2007分割数据集,总共632张图片(412train_val,210test),一共20个类别,加上背景类一共21,标签是png格式,像素值代表物体类别,同时所有物体mask的外轮廓值是255,训练时会忽略,原始数据集如下目录构造(github上的代码中data_example只是示例,只有几张图),训练使用的是SegmentationObject中的标签:

## VOCdevkit/VOC2007
├── Annotations
├── ImageSets
│   ├── Layout
│   ├── Main
│   └── Segmentation
├── JPEGImages
├── SegmentationClass
└── SegmentationObject

CustomDataset的代码按如上目录结构读取对应数据,根据ImageSets/Segmentation目录下的txt_name指定训练的文件名字