发表于
作者
isvee
最近Open-mmlab开源了Playground项目,将最近引起CV界轰动的SAM(Segment Anything Model)模型和Open-mmlab多个视觉框架相结合,可实现多种视觉任务的自动标注,本文将采用Open-mmlab的Playground开源项目,使用SAM和LabelStudio,实现分割任务的半自动标注。
下载playground的github库
git clone https://github.com/open-mmlab/playground
安装Pytorch
安装工具包
pip install opencv-python pycocotools matplotlib onnxruntime onnx
安装SAM
git clone https://github.com/facebookresearch/segment-anything.git
python setup.py install
下载SAM预训练权重
可下载以下几个预训练权重文件,文件从小到大依次排列,越大的模型分割效果越好,但是分割时间也越长,建议先使用最小的模型试试效果,目前实测最小的模型分割效果也很不错。
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth
安装label-studio
pip install label-studio
安装label-studio-ml-backend
pip install label-studio-ml
启动SAM后端并加载模型
cd E:\playground-main\label_anything
label-studio-ml start sam --port 8003 --with sam_config=vit_b sam_checkpoint_file=E:/Downloads/sam_vit_b_01ec64.pth out_poly=True out_mask=True out_bbox=True device=cuda:0
1,sam_checkpoint_file=E:/Downloads/sam_vit_b_01ec64.pth,这里为SAM预训练模型路径,指定为你自定义的路径;
2,device=cpu使用CPU,device=cuda:0使用GPU;
3,out_poly=True 表示保存结果的时候会保存分割的polygon标注信息;
4,out_mask=True 表示保存结果的时候会保存分割的Mask信息;
5,out_bbox=True 表示保存结果的时候会保存分割的边界框标注信息;
6,sam_config=vit_b和使用的模型预训练权重相对应
此时,SAM后端推理服务已经启动。接下来,您可以在Label-Studio Web系统中配置http://localhost:8003后端推理服务。上述终端窗口需要保持打开状态。
启动Label-Studio的Web服务
若需要使用vit-h大模型,则需要设置以下环境变量,但是大模型加载时间很长,容易导致与后端连接超时。如果不使用则跳过该步骤,不然会导致与后端连接超时。
Linux requires the following commands
export ML_TIMEOUT_SETUP=40
Windows requires the following commands
set ML_TIMEOUT_SETUP=40
启动Web服务
label-studio start
打开浏览器并访问 http://localhost:8080/ 以查看Label-Studio平台界面
启动Web服务到Label Studio平台后,如果之前没有注册,需要进行注册再登陆。
在Settings/Labeling界面中配置Label-Studio关键点、掩码和其他标注信息。在示例图中,KeyPointLabels用于关键点标注,BrushLabels用于掩码标注,PolygonLabels用于边界多边形标注,RectangleLabels用于矩形标注。
将下面的XML复制并添加到Label-Studio,然后单击Save。
添加OpenMMLabPlayGround后端推理服务
设置并单击Add Model添加openmmlabgame后端推理服务。为SAM后端推断服务设置URL http://localhost:8003,启用Use for interactive preannotations,即自动标注开关,并单击Validate和Save。
开始半自动标注
回到项目界面,单击Label开始标注
要使用自动标注功能,需要打开Auto-annotation开关,并建议勾选Auto accept annotation建议选项。然后单击右侧工具栏最下面的按钮,可以切换点、框、矩形框等模式,默认为点模式,并从下面的标签选项中选择你想要标注的类别
或者使用eiseg
https://github.com/PaddlePaddle/PaddleSeg/blob/develop/EISeg/docs/install.md
安装PaddlePaddle
pip install paddlepaddle-gpu==2.5.1.post116 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html
安装eiseg
pip install eiseg
下载预训练模型
https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.8/EISeg/docs/image.md
eiseg