Meta AI最新出品,全能的分割模型SAM:掀桌子的Segment Anything,CV届的ChatGPT已经到来!

掀桌子的Segment Anything

本来不打算再发关于分割的相关内容的,但是13小时前,2023年4月5号,Meta AI在Arxiv网站发布了文章《Segment Anything》,并将SAM模型代码和数据开源。作为通用的分割网络,SAM或许将成为,甚至是已经成为了CV届的ChatGPT。简简单单的两个词Segment Anything,简单粗暴却不失优雅。

说一些题外话,大概2023年初这段时间,ChatGPT访问量在国内迅速爆发(当然需要一些魔法),这个基于Transformer的大型预训练模型,直接就把NLP研究者们的饭桌给掀翻了(此处应该有乌鸦哥)。

OpenAI的ChatGPT满足了我小时候对未来科技的幻想,什么小学生写日记,ChatGPT给你写;暑假作业不会做,问ChatGPT;1+1不会算?ChatGPT给你算!ChatGPT就是这么简单粗暴,哪里不会点哪里,比步步高点读机还要牛逼。

随后微软、谷歌也相继发布了类ChatGPT的产品New-Bing、Bard。当然这里鞭尸一下百度的文言一心,一坨答辩。这方面国内确实做的不好,平均落后1-2年。当然,你OpenAI、Google、Microsoft什么公司,我百度什么公司,我有那个能力吗,我能做吗,做不了懂不懂啊(有请Batman)。

当然,不光是钱的问题,钱的问题好解决,难以解决的是大环境下人才的问题,这里的问题就复杂多了,总之,就是缺乏创新、缺乏设备、缺乏数据、不敢想、不敢做或者说敢想敢做却不能做,总是缺乏那一点心气,恰恰差了这点心气难成大事。OpenAI宁有种乎?

话说回来,Meta AI SAM模型的发布,同样掀翻了CV研究者们的饭桌。1100万张训练图像、11亿个mask 标签,如此大规模的训练数据集再加上Alexander Kirillov大神的一系列微操,Segment Anything成为囊中之物。

同样还是哪里不会点哪里,自动一键多任务分割,想要图中任何的东西,SAM都能给你割出来,只要你点一下或者框选一下甚至是提供文本。面对歧义的分割点时,甚至给你多个分割对象供你挑选。什么语义分割、实例分割、全景分割、视频追踪等等,统统拿下。总之就两个字——无敌(其实那两个字是通用)(人家确实无敌)。

一键式全景分割、实例分割

视频分割、追踪

交互式分割、一键分割

人家连文字输入也可以搞定哦!

人家的Demo又帅又多,直接上地址

Segment Anything | Meta AI (segment-anything.com)

你还可以上传你自己的图像

Segment Anything | Demo

简单割一下我自己,效果很不错,眼镜、书包带都给我割好了。还可以进行选框、选点。不过并未在Demo中找到文本输入的选项(再让我找找看)。

SAM

不得不说,人家做的就是好。连网络图还给你个会动的(当然是网页上,不是paper上)

先上一下人家的概念图

光看概念图,就能发现Meta AI的目标还是很远大的,要达到的就是ChatGPT的效果,就是要和人家并驾齐驱,要和你neck and neck。当大家还在考虑怎么发布和ChatGPT相似的聊天机器人时,人家已经独辟蹊径羽化登仙了。

图a,Meta AI想做什么不言而喻。人家就是希望能够通过一些点、框、位置、文字这种prompt提示,帮助model对image进行segment。

图b,prompt通过一个prompt encoder输入,image则是通过一个image encoder进行输入,最后信息在一个轻量的mask decoder中融合,分割出需要的mask。大道至简,简单的模型架构得到优秀的结果。就和我们的大脑,不就是神经元连来连去吗,但是人类的大脑就是如此神奇,如此聪明,还能诞生爱因斯坦这种天才。

图c,数据驱动,Meta收集了1100万张图像,11亿多个标注。不过其中99.1%的标注都是模型完成的,省去了大部分的时间和人力成本,也是基本操作。(再自我发问一下,我们就收集不到1100万张图像吗?可惜。要赚钱的嘛,baidu:莆田系医院,说你呢,你的广告费结一下)

再上网络模型图

让我们来看看模型结构到底是什么。

好吧,人家是Vit!懂不懂Vision Transformer的含金量!

📌What is the structure of the model?

  1. A ViT-H image encoder that runs once per image and outputs an image embedding
  2. A prompt encoder that embeds input prompts such as clicks or boxes
  3. A lightweight transformer based mask decoder that predicts object masks from the image embedding and prompt embeddings

分别是什么呢,1是一个ViT-H用来嵌入图像块。2是一个prompt编码器来嵌入像点、提示框这种提示。3是一个轻量化的Transformer encoder,这个东西可以根据图像嵌入特征和提供的点、框、文本提示来预测对象的分割mask。

好了,整体结构介绍完了,这些模块都是老朋友,都是先前的老工作(什么CLIP、MAE、ViT),但这些work一连起来,效果就是这么好。(国内企业扪心自问一下,为什么别人总是走在前面)。

细节一点说:

Image encoder

这里Image encoder选择ViT-H模型,用了何凯明的MAE方法进行预训练,保证模型能够适应高分辨率的图像。(不得不说,SAM模型的分割分辨率确实比别人优秀,最早Swin Transformer在高分辨率的情况下进行分割,现在SAM在更高的分辨率下获得了更好的效果,这得归功于数据量和MAE)

Prompt encoder

Prompt的输入包含两种,1是稀疏的prompt(点、框、文本),2是密集的prompt(掩码mask)。当然,这些Prompt要通过某种方式嵌入到特征之中才行,这里通过老熟人positional encoding将这些点和框进行嵌入(文中提到的是将这些点、框和学习到的image embeddings进行相加);基于CLIP中的方法(an off-the-shelf text encoder)对文本信息进行嵌入;通过卷积模块对mask进行嵌入(sum element-wise with the image embedding,同样是相加)。


Clip的模型

Mask decoder

Mask decoder可以有效的将image embedding、prompt embedding的信息进行融合,输出mask结果。Mask decoder选择了Transformer结构,并在后面加了一个dynamic mask prediction head。不过这个Transformer中的Attention计算方式有所不同,这里添加了prompt self-attention和cross-attention对两个方向(prompt-to-image和image-to-prompt)进行计算,并更新embeddings特征。

Mask decoder一共包含了两个这样的Transformer block。运行完这两个block后,再对图像嵌入进行上采样,MLP 将输出标记映射到动态线性分类器,然后计算每个图像位置的mask probability。

这三个模块就简单讲完了。人家还做了一些其他工作。

Resolving ambiguity

对于一个输出,如果给出的prompt提示不明确,模型将平均多个有效掩码。这样的话效果可能不好,人还会看走眼呢。

为了解决这个问题,大神们修改了模型以预测单个提示的多个输出掩码(见下图)。基于经验,3 个mask输出就足够满足分割需求(嵌套mask有三个深度:整体、部分和子部分)(输出1个mask可能有错误,那我输出很多个就没错误了吧,属实大聪明,但是人家是真的有效果)。

输出的mask基于IoU分数进行排序。

Efficiency

在我自己的电脑上(3060GPU)运行了一下,ViT-H的模型还是能用的,把图像resize小一些,效率嘛,还是ViT运行占了时间花销,毕竟计算attention还是需要点时间的。不过整体上而言,足够贫民化,比ChatGPT好用多了。

Losses and training.

损失函数使用了focal loss 和 dice loss,属实是把以前好的工作都带上了。

训练时采用mixture of geometric prompts策略。

还在训练时设置了对prompt的随机采样来模拟交互设置(可以参考Reviving iterative training with mask guidance for interactive segmentation)。

Segment Anything Data Engine

本来数据驱动是没必要说的,而且用的还是大家都能想到的方法,但是人家做了,做的也很好,而且人家也开源了。

Meta收集了1100万张图像、11亿mask。通过渐进的三个阶段对数据进行标注

  1. Assisted-manual stage:手动标注阶段类似于原始的labelme标注。不过看起来是Meta内部基于初始的SAM模型开发了一个标注框架,使用SAM模型先进行分割,然后在结果上手动调整。这至少比从头开始要快。说明Meta在较早时期就着手开发SAM了。在这一阶段获取了大概12万张图像。
  2. Semi-automatic stage:在这个阶段,收集的图像往多样性方向发展,以提高模型在各种物品上的分割效果。还是人+SAM结合的标注方法。不过这一阶段SAM输出的mask更多,平均为44-72个,说明SAM能够看到更多的东西了。
  3. Fully automatic stage:全自动阶段自然就是SAM模型来自动分割。本身SAM已经被喂入足够多的数据,在分割任务上也能得到相对好的效果。 而且在这一阶段加入了Resolving ambiguity,如果一个部位有歧义,那就会返回整体、部分、子部分三个mask。

Segment Anything Dataset

数据集也可以提一嘴。

These images are high resolution (3300×4950 pixels on average), and the resulting data size can present accessibility and storage challenges

看起来Meta收集的图像质量都很高。个人认为,图像分割算法就是得往高分辨率的方向发展,人类的眼睛分辨率远远大于这个数值,模型自然需要获得更高分辨率的输入,当然目前还是受限于计算量,毕竟Attention在高分辨率图像下计算量还是十分之大。以前由于CNN感受野受限,图像分辨率还局限在1024以下。(COCO数据集为480×640,分辨率太低图实在是看不清,我的眼睛和大脑都看不清楚,怎么能指望模型能看清楚呢)

前面讲了,Mask是通过SAM模型输出来的,随机采样了500张图像对Mask进行评估,发现 mask的IoU在85-91%之间,结果还可以。

这里还绘制了数据集SA-1B的物体中心点分布。发现SA-1B和ADE20k分布比较类似,但SA-1B对角点覆盖更广泛。

SA-1B数据中mask的数量也普遍多于其他数据集,mask也相对更加细致。

其他实验部分就看原论文吧。

Discussion and Result

预训练模型

这些年使用预训练模型已经成为一个基本的trick了,以前一般用ImageNet上训练好的ResNet,后来用ViT,再后来何凯明提出MAE用于Transformer模型的预训练。经过在大规模数据集上进行预训练过的模型,往往能获得更好的效果。

组合和扩展

SAM模型可以扩展到其他任何CV相关的任务重,包括像基于RGB-D的3D重建、可穿戴设备对于目标点进行注释和提示(像什么智能眼镜,戴上变身赛文)

Limitation

SAM总体上看似完美,但还是存在一些小问题,毕竟作为通用的架构,保证的是在绝大部分图像上都能进行分割,而不是保证获得较高的IoU。在细节任务上,还是存在不足的,笔者也试了一些生物领域的数据集,至少效果还有待提升。

对于text-to-mask的任务,SAM的性能还是存在一些问题。毕竟CLIP也刚发不久,还有很长的路可以走。相信SAM能够像GPT一样,一飞冲天。

写在最后

因为本文写得比较仓促,部分专业性的描述可能有误。下午得知SAM模型,赶紧去翻了论文。如需考证,请查阅Segment Anything原论文。对于Zero-shot的实验部分也省略了,有兴趣的话还是看原论文,毕竟原文整篇文章写得十分精彩。

加油吧CVers。

最后,饭碗没了,是不是要考虑转行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7295.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日记20190416

研究生小白虐炼日记20190416 未来学家 科大云炬 2019-04-17 花了一天多时间为明天的组会准备了20页ppt。 阅读 18

【BBuf的CUDA笔记】九,使用newbing(chatgpt)解析oneflow softmax相关的fuse优化

0x0. 背景 随着年纪越来越大,读代码越来越困难,如果你发现看不懂同事写的代码应该怎么办呢?不要担心,大语言模型的时代了来了,chatgpt和gpt4会教会我们怎么读代码。本篇文章就来展示一下使用newbing(chatg…

企业级ChatGPT开发的三大核心内幕及案例实战(二)

2.2 企业级ChatGPT开发的三大核心剖析 Gavin老师:NLP_Matrix_Space 本节讲解LangChain官方提供的一个项目,跟大家展示企业级开发的核心元素,如图2-1所示,是项目的架构示意图。 图2- 1 LangChain项目架构示意图 一个基本原则是你的提示词和模型进行交互,作为和模型交互的…

跟着ChatGPT学PsychoPy编程3:将想要的数据写入数据文件/属性的用处

一:将想要的数据写入数据文件 问题描述: 通常使用组件直接设置的内容可能会被自动写入数据文件,比如键盘组件、图片组件等(具体来说,比如按键的反应时、正确的按键、在组件中添加的变量等)。 然而&#…

我们都被 ChatGPT 给骗了?

引言: 用过 ChatGPT 的人都知道,当你与 chatgpt 对话的时候,它是“逐字输出”的,就像真的有个人在跟你打字一样。其实,这种技术并没有那么神奇,这种技术叫做“实时文本生成”或“逐字输出”技术&#xff0…

将小米SoundMove 无缝接入 ChatGPT

将小米SoundMove 无缝接入 ChatGPT 本教程内容参考 Github 地址(可选)部署查看小米 SoundMove 信息的环境(可选)查看小米 SoundMove 的信息以容器方式部署程序到小米万兆路由器实际效果有待改善点 本教程内容 1 是记录了将小米 SoundMove 接入 ChatGPT 的操作步骤。 2 是将小米…

《2023 ChatGPT for Robotics:Design Principles and Model Abilities》阅读笔记

1 Introduction 自然语言处理(NLP)的快速发展导致了大型语言模型(LLMs)的发展,如BERT[2]、GPT-3[3]和Codex[4],这些模型正在对广泛的应用程序进行革命。这些模型在文本生成、机器翻译和代码合成等各种任务中都取得了显著的效果。这个模型集合的最新成员是…

chatgpt赋能python:Python冒泡排序:理解流程图

Python冒泡排序:理解流程图 当涉及到排序算法时,Python中最流行的算法之一就是冒泡排序。它是一种简单而有效的排列方法,旨在让列表中的元素按升序或降序排列。在此文章中,我们将讨论冒泡排序的流程图,并重点介绍每个…

Itchat 微信聊天机器人

微信聊天机器人(Itchat) 不务正业,想起干点啥有意思的事,于是想起了用聊天机器人去调戏微信好友也许会有点意思吧,于是参照别人写的东西,自己也浅尝一下。基本原理还是很简单的,就是让机器人替你去聊天。 主要有以下…

利用微信API将你的微信变为聊天机器人

想想将个人微信变为一个机器人也是很好玩的,这个项目就教你如何把自己的微信变为一个聊天机器人,嗯~对的,和小冰差不多的感觉吧(哈哈哈~)。 最终效果图: 效果图 原理: 通过微信的Python接口it…

itchat+在线聊天机器人接口实现微信聊天机器人

闲来无事(其实还在期末考试),想着怎么利用手里的服务器搞点事情时,发现了python的itchat库,想着可以再利用网页聊天机器人,做一个自动聊天的微信机器人。 总体思路很简单,用itchat登录微信,接受消息&#…

AI 微信自动聊天机器人

微信聊天机器人 # /usr/bin/env python # -*- coding: utf-8 -*- # Time : 18-5-4 下午23:37 # Author : 杨星星 # Email : yangshilong_liu163.com # File : wechart.py # Software: PyCharm#codingutf8 import requests import itchat import random# KEY 8edce3c…

聊天机器人集成PC端微信

1.PyWeChatSpy 可以操作PC端微信 github地址如下 https://github.com/veikai/PyWeChatSpy 2.chatterbot 可以实现自制语料库的聊天机器人 安装方法 pip install chatterbot训练方法,语料库制作方法 官网上都有 https://chatterbot.readthedocs.io/en/stable/devel…

微信自动聊聊天机器人(利用腾讯的智能聊天接口)

微信智能聊天机器人 利用python做一个微信聊天机器人早已不是黑科技,网上有很多通过图灵机器人接口和itchat实现的教程。这里呢我用到腾讯的智能闲聊,是没有次数限制的,当然还有很多这样的api,百度也有,这里我只说腾讯…

ChatGPT修bug横扫全场,准确率达78%!程序员要开心了

ChatGPT到底有多会修bug? 这事终于有人正儿八经地搞研究了—— 来自德国、英国的研究人员,专门搭了个“擂台”来检验ChatGPT的这项本领。 除了ChatGPT之外,研究人员还找来了其它三位修bug的“AI猛将”,分别让它们修复40个错误代码…

区块链龙头股都有哪些?区块链概念股有哪些?

区块链龙头股都有哪些?区块链概念股有哪些? 区块链技术的应用程序似乎很广泛,它可以用于金融服务行业,例如,用于转移资金。它可以切断中间人,并可能带来更大的效率。这有可能提高不同行业的储蓄水平,从而提高盈利水平…

2019区块链概念股龙头

除了在教育行业的运用,区块链技术如今也被运用在其它社会事业的管理上。在国,社会事业种类特别多,需要处理的数据量也十分巨大。在档案管理,个人社会信用、公证、身份认证、遗产继承以及代理投票方面的作用十分突出。只要需要网络…

海外上市中国概念股每日行情

海外上市中国概念股每日行情 (单位:美元) 股票名称股票代码开盘最低最高收盘涨跌额涨跌幅成交量市值市盈率小时日期网易NTES39.8739.2540.2339.520.020.05%541482 $ 1,235,955,00025.994:00pm2/17/2005新浪SINA23.3423.1423.8023.18-0.091-0.39%168105…

九龙证券|受益行业红利,这些龙头股获资金青睐!

今天职业普涨,15个职业主力资金净流入。 证券时报数据宝计算,今天沪深两市主力资金净流出16.34亿元,较昨日流出力度大幅减缓。其间创业板净流入2.41亿元,沪深300成份股净流入17.13亿元。 今天职业普涨,申万一级职业中…