首页 > 其他分享 >极智项目 | 实战Segment-Anything分割一切

极智项目 | 实战Segment-Anything分割一切

时间:2023-05-04 11:07:37浏览次数:28  
标签:分割 sam SAM Anything 模型 项目 极智 Segment


欢迎关注我的公众号 [极智视界],获取我的更多经验分享

大家好,我是极智视界,本文带来一个实战项目 Segment-Anything分割一切,并提供完整项目工程源码 (划重点:单卡就能跑)。

Segment Anything,也即Segment Anyhing Model,也即SAM,这个工作由facebook提出,最近十分火热,给CV领域大模型的研究打开了一扇门。很多人其实根本意想不到CV领域的第一个大模型竟然出在分割,而不是相对容易的任务如分类、目标检测。从这点也足以看出facebook的实力和那么些傲娇(可能寓意着分割我都能做出来,那么其他如分类、检测任务就不在话下了)。

SAM有几个特点十分重要:

  • (1) zero shot ==> 由segment anything引出的zero-shot,这个词你是不是在哪里听过,没错就是CLIP。这意味着你拿到SAM预训练模型后,不用微调、不用迁移,就能实现对一切物体的分割,十分地霸道;
  • (2) 分割标注 ==> SAM还有一个十分重要的意义在于它可以成为一个分割数据集辅助标注的工具模型,大家知道分割的标注成本十分昂贵(这也是为什么通常的分割数据集都不够大 以及 吃惊在分割领域数据集如此匮乏的情况下facebook做出了十分依赖大数据集的分割大模型)。当然,SAM的大多训练数据集也是它自己标注的,而不是人工标注,这对于未来CV大模型的发展意义重大;

由于SAM本身不需要再训练,所以属于开箱即用型。

项目整体的流程是:跟语言大模型一样,需要给sam模型一个prompt提示,这个提示可以是一个点(point),也可以是几个点(points),也可以是一个框(box),也可以是一个文本(text),而SAM就根据prompt提示分割目标物体,就像下面这样:

极智项目 | 实战Segment-Anything分割一切_分割

为了方便展示,本项目用一个jupyter进行项目的执行。

首先需要安装conda环境 ==> 对应于jupyter执行的kernel。

# 参考项目README.md
# 安装conda环境
# 安装anaconda过程略过
conda create -n sam_py39 python=3.9

conda activate sam_py39

# 这里咱们安装最新的pytorch2.0 ==> pytorch官网下载链接:https://pytorch.org/get-started/locally/
# 这里cuda118,其他版本可以自行切换
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 安装sam
pip install git+https://github.com/facebookresearch/segment-anything.git
# 或
git https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .

# 执行run_sam.ipynb进行分割

run_sam.ipynb执行的时候选择上述构建的kernel,然后进行一些基础设施构建:

极智项目 | 实战Segment-Anything分割一切_ViT_02

今天YY刚回国,这里咱们就用YY来做项目的演示。首先导入YY:

极智项目 | 实战Segment-Anything分割一切_SAM_03

然后进行模型的加载:

极智项目 | 实战Segment-Anything分割一切_分割_04

然后给模型一个提示prompt,这里给他一个点:

极智项目 | 实战Segment-Anything分割一切_大模型_05

来看看sam的分割效果:

极智项目 | 实战Segment-Anything分割一切_大模型_06

极智项目 | 实战Segment-Anything分割一切_SAM_07

极智项目 | 实战Segment-Anything分割一切_SAM_08

再来一个好玩的,我给它两个点,一个点是想让它分割的(绿色点),一个点是反选的(红色点),来看效果:

极智项目 | 实战Segment-Anything分割一切_SAM_09

可以看到反选的效果十分之好。

下面是给它喂一个提示框的分割效果:

极智项目 | 实战Segment-Anything分割一切_ViT_10

以下是一些其他图片的效果图:

极智项目 | 实战Segment-Anything分割一切_SAM_11

极智项目 | 实战Segment-Anything分割一切_ViT_12

另外这里提供的项目工程还有其他一些能力,比如输入多点和多框的配合、比如多batch图片同时进行分割等,实现均放在工程内run_sam.ipynb,有兴趣的同学可以把玩一下,见识一下AI2.0的视界。

好了,以上分享了 Segmet-Anything分割一切,包括完整的项目工程源码和模型分享,希望我的分享能对你的学习有一点帮助。



标签:分割,sam,SAM,Anything,模型,项目,极智,Segment
From: https://blog.51cto.com/u_15531854/6241896

相关文章

  • 使用SAM(Segment Anything Model)查找Waldo
    你知道你可以教#GPT3找到Waldo吗? ......
  • dba_segments与dba_extents
    好久没写博客了最近在忙的有几点1.RAC+ADG基于阿里云DBFS数据库文件系统,实验训练一周被告知项目内容可能会更改,只剩下ADG容灾。2.挖矿病毒提前防护,客户中毒较多,打了一片片的补丁。3.RAC集群宕机,原因查了两天,发现服务器本身问题,有点无语。4.拆分数据库内容优化及处理,之前没怎......
  • IC99680: SEGMENTATION FAULT AND CRASH DURING DSMSERV FORMAT COMMAND
      APARstatusClosedasprogramerror. ErrordescriptionThedsmservformatprocesscancrashwithasegmentationfaultwheninitiatedbyanadministratorduringmanualinstanceconfiguration.Forexample:$/opt/tivoli/tsm/serv......
  • SegmentTree
    线段树SegmentTree功能:计算子数组累加和支持区间修改,新增publicclassSegmentTree{intMAX;int[]arr;int[]sum;int[]lazy;int[]change;boolean[]update;publicSegmentTree(int[]origin){this.MAX=origin.length+......
  • meta seg_anything and grounding_dino
    https://github.com/IDEA-Research/GroundingDINOhttps://github.com/facebookresearch/segment-anything......
  • M3AE: Multimodal Representation Learning for Brain Tumor Segmentation with Missi
     摘要 提出SimCLR,用于视觉表征的对比学习,简化了最近提出的对比自监督学习算法,为了理解是什么使对比预测任务能够学习有用的表示,系统研究了提出框架的主要组成部分,发现:(1)数据增强的组成在定义有效的预测任务中起着关键的作用(2)在表示和对比损失之间引入一个可学习的非线性变换......
  • Good Segment
    Givenanarrayofbadnumbersandarangeofintegers,determinethelongestsegmentofintegerswithintherangethatdoesnotincludeanybadnumbers.Examplen=6badNumbers=[37,7,22,15,49,60]lower=3upper=48Thesegmentsintherange3to......
  • 上线一天,4k star | Facebook:Segment Anything
    前言 本文介绍了FacebookAIResearch的SegmentAnything(SA)项目:用于图像分割的新任务、模型和数据集。在数据收集循环中使用该模型,它构建了迄今为止最大的分割数据集,在1100万张许可和尊重隐私的图像上有超过10亿个掩码。该模型被设计和训练为可提示的,因此它可以将零样本......
  • 一个类似Tabs的控件SegmentControl
    packagecom.ql.view;importjava.util.HashMap;importjava.util.Map;importandroid.content.Context;importandroid.graphics.Color;importandroid.util.AttributeSet;importandroid.view.MotionEvent;importandroid.view.View;importandroid.widget.Linea......
  • segment anything
    Whatisthestructureofthemodel?AViT-HimageencoderthatrunsonceperimageandoutputsanimageembeddingApromptencoderthatembedsinputpromptssuchasclicksorboxesAlightweighttransformerbasedmaskdecoderthatpredictsobjectmasks......