赞
踩
Segment Anything Model(以下简称SAM)是Meta研究团队提出的一个大模型,其实现了只需要一个key point或者bbox就可以完整分割实例的强大功能,并且这个模型不需要额外的训练以及微调,就可以在全新的数据集上使用。这种特性在标注全新的实例分割数据集时可以大大减少所需要的工作量。
同时Label Studio作为一个优秀的标注平台,其基于网页以及高度可定制化的特性被广泛的采用。其优秀的社区提供了名为label-studio-ml-backend的库来为标注提供后端机器学习模型的辅助功能,这为SAM和其结合提供了便利。并且官方以及提供了实用SAM来标注的例子方便我们学习使用。
因此本文的主要目的是尝试以Label Studio作为前端、SAM作为后端来搭建半自动实例分割标注平台,
注意:Label Studio官方建议使用Docker来进行部署,但由于许多GPU租借平台本身(如本文采用的AutoDL)就使用了虚拟化,不可在内部再进行虚拟化部署,因此本文使用非docker的方案部署。
对于Label studio以及label-studio-ml-backend的详细使用方法将在之后单独发文章进行介绍。
安装Label Studio可以直接使用pip进行,在所使用的虚拟环境/conda环境下直接使用以下命令即可
pip install label-studio
安装label-studio-ml-backend从github直接进行,按照以下命令即可
git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/
pip install -e .
对于SAM环境的按照我们暂且按照官方的example实现,后续如果需要其他库可以自行进行安装
对于SAM模型运行所需要的配置在仓库的label_studio_ml/examples/segment_anything_model
路径下,此处直接使用pip进行安装
pip install -r label_studio_ml/examples/segment_anything_model
官方例子分别提供了完整模型(sam_vit_h_4b8939.pth)与轻量级模型(mobile_sam.pt)我们可以使用链接进行下载,放置于当前工作目录下。使用以下指令启动模型后端
label-studio-ml start label_studio_ml/examples/segment_anything_model
使用以下命令启动Label Studio
label-studio
注意:在autodl上使用的时候需要标注端口6006
label-studio -p 6006
- 1
第一次进入label studio为如下界面,使用邮箱账号注册后进行登陆进入主界面
点击创建项目(create Project)后按照如下指示
使用如下代码创建项目模版(根据不同的任务项目进行修改)
<View> <Image name="image" value="$image" zoom="true"/> <Header value="Brush Labels"/> <BrushLabels name="tag" toName="image"> <Label value="Dog" background="#FF0000"/> <Label value="Cat" background="#0d14d3"/> </BrushLabels> <Header value="Keypoint Labels"/> <KeyPointLabels name="tag2" toName="image" smart="true"> <Label value="Dog" smart="true" background="#000000" showInline="true"/> <Label value="Cat" smart="true" background="#000000" showInline="true"/> </KeyPointLabels> <Header value="Rectangle Labels"/> <RectangleLabels name="tag3" toName="image" smart="true"> <Label value="Dog" background="#000000" showInline="true"/> <Label value="Cat" background="#000000" showInline="true"/> </RectangleLabels> </View>
点击save后完成项目创建
进入项目的设置界面,点击Machine Learning并添加模型
添加后端模型,其中URL填写前面后端服务启动时候的地址
根据情况进行辅助的选择,最后点击保存,完成后端连接
打开项目,点击import对于数据进行导入
导入后进入界面开始标注
标注界面如下,首先打开自动标注选项卡,唤起自动标注工具
基于点进行标注:将自动标注工具切换为key-point形式(注:单击进行切换)
在下方选择类别之后在目标上打上点,会自动生成mask内容,若满意则进行确认。对于部分只使用一个点并不能完美分割的实例(如下图),可以在确认之前再增加关键点数量来提供更多信息,实现准确的划分,同时按住option键也可以打负样本点。
最后点击确定按钮来合成一个完整的mask
对于自动标注无法完美实现的,也可以在生成后通过笔刷以及橡皮擦来进行再次的微调。
基于框标注:除了基于关键点进行标注,也可以使用框来进行,使用智能标注工具中的框标注工具,可以绘制包括实例的矩形,再自动生成mask
前文中,Mask是按照Brush进行标注,因此在导出的时候有两个选项比较推荐
两者都会将mask以图片相同的大小进行导出,每个实例一个单独的mask文件。之后可以将其转换为COCO等其他格式便于使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。