国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM

這篇具有很好參考價(jià)值的文章主要介紹了【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

論文:Segment Anything

官網(wǎng):https://segment-anything.com/

代碼:https://github.com/facebookresearch/segment-anything

出處:Meta、FAIR

時(shí)間:2023.04.05

貢獻(xiàn)點(diǎn):

  • 首次提出基于提示的分割任務(wù),并開源了可以分割一切的模型 SAM
  • 開源了一個(gè)包含 1100 萬張圖像(約包含 10 億 masks)的數(shù)據(jù)集 SA-1B,是目前最大的分割數(shù)據(jù)集,數(shù)據(jù)集的標(biāo)注經(jīng)過三個(gè)階段——手動標(biāo)注、半自動標(biāo)注、全自動標(biāo)注,最終提供的 mask 都是全自動標(biāo)注的 mask
  • SAM 具有很強(qiáng)的零樣本遷移能力,在未經(jīng)訓(xùn)練過的數(shù)據(jù)集上的邊緣檢測、proposal 生成、instance segmentation 的效果都很強(qiáng)
  • 開源了三種不同大小的模型,模型大小分別為 375M、1.25G、2.56G,能夠適合不同場景的使用

一、Intruduction

1、背景:

前有經(jīng)過預(yù)訓(xùn)練的大語言模型被證明有很強(qiáng)的 zero-shot 和 few-shot 泛化能力,這些基礎(chǔ)模型能夠泛化到其沒有見過的任務(wù)和數(shù)據(jù)上去。

究其原因就在于 prompt engineering,提示機(jī)制能夠根據(jù)的提示文本來提示模型來生成更好的反饋。

所以 prompt engineering 和基礎(chǔ)模型(在大數(shù)據(jù)集上預(yù)訓(xùn)練)的風(fēng)很快吹到了 CV 領(lǐng)域

如 CLIP[82] 和 ALIGN[55],使用對比學(xué)習(xí)來訓(xùn)練 text 和 image 的 encoder,讓這兩種模態(tài)對齊

一旦經(jīng)過訓(xùn)練,text prompt 就能夠零樣本泛化到新的視覺概念和數(shù)據(jù)分布上

這樣的 encoder 也可以很高效的和其他模型結(jié)合,來實(shí)現(xiàn)下游的任務(wù),如圖像生成

雖然在視覺和語言編碼器方面已經(jīng)取得了很大的進(jìn)展,但計(jì)算機(jī)視覺中有超出這個(gè)范圍的很多問題,比如不存在非常豐富的訓(xùn)練數(shù)據(jù)

所以,本文的目標(biāo)是構(gòu)建一個(gè)圖像分割的基礎(chǔ)模型,將 prompt 引入,且在非常豐富的數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,讓模型有更好的泛化能力,基于這個(gè)基礎(chǔ)模型來更好的解決分割的下游問題。

2、什么是 zero-shot learning 零樣本學(xué)習(xí):

  • 從原理上來說,zero-shot learning 就是讓計(jì)算機(jī)具備人類的推理能力,來識別出一個(gè)從未見過的新事物。
  • 舉個(gè)例子,我們告訴一個(gè)從沒見過斑馬的小朋友:“斑馬是一種長得像馬,身上有黑白色條紋的動物”,他就可以很輕松地在動物園里找出來哪個(gè)是斑馬。
  • 可是,在傳統(tǒng)的圖像識別算法中,要想讓機(jī)器認(rèn)出“斑馬”,往往需要給機(jī)器投喂足夠規(guī)模的“斑馬”樣本才有可能。而且,利用“斑馬”訓(xùn)練出來的分類器,就無法識別其他物種。
  • 但是 zero-shot learning 就可以做到,一次學(xué)習(xí)都沒有,只憑特征描述就識別出新事物,這無疑離人類智力又近了一步。

zero-shot learning 是如何工作的:

  • 利用高維語義特征代替樣本的低維特征,使得訓(xùn)練出來的模型具有遷移性。

  • 比如斑馬的高維語義就是“馬的外形,熊貓的顏色,老虎的斑紋”,盡管缺乏更多細(xì)節(jié),但這些高維語義信息已經(jīng)足夠?qū)Α鞍唏R”進(jìn)行分類,從而讓機(jī)器成功預(yù)測出來。

  • 這就解決了圖像識別長久以來的問題:如果一個(gè)事物從來沒有在現(xiàn)有數(shù)據(jù)集中出現(xiàn)過,機(jī)器應(yīng)該如何學(xué)習(xí)和識別它。

3、SA 模型簡介:

本文提出的 Segment Anything(SA):

  • 提出了一個(gè)新任務(wù):基于提示的分割任務(wù)
  • 提出了一個(gè)新模型:SAM, 可以分割一切
  • 開源了一個(gè)新的用于圖像分割的數(shù)據(jù)集(SA-1B,1 Billion masks,11M images),是當(dāng)前最大的分割數(shù)據(jù)集,包含 1100 萬張圖像,約 10 億標(biāo)注 masks

SA model 的特性:

  • 模型是使用 promptable 的模式訓(xùn)練的,故可以遷移 zero-shot 到新的數(shù)據(jù)和任務(wù)
  • 作者在多種不同的任務(wù)中進(jìn)行了性能測試,發(fā)現(xiàn)其 zero-shot 性能很厲害,可以匹敵或超過一些監(jiān)督訓(xùn)練的結(jié)果

本文的目標(biāo):

  • 構(gòu)建一個(gè)適用于圖像分割的基礎(chǔ) promptable 模型
  • 有足夠強(qiáng)的泛化能力
  • 能夠使用 prompt 功能來實(shí)現(xiàn)對下游新數(shù)據(jù)的分割問題

要實(shí)現(xiàn)該目標(biāo)就有三個(gè)重要的元素:

  • task:什么任務(wù)能夠提高 zero-shot 的泛化能力
  • model:使用什么樣的模型
  • data:什么樣的數(shù)據(jù)能夠支撐上面的 task 和 model

① Task:promptable segmentation task

在自然語言處理和最近的計(jì)算機(jī)視覺方法中,基礎(chǔ)模型很火,它可以通過使用 “提示” 技術(shù)對新的數(shù)據(jù)集和任務(wù)進(jìn)行 zero-shot 和 few-shot learning。

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

故此,本文提出了【可提示的分割任務(wù)】,其目的是在給定任何分割提示下返回一個(gè)有效的分割掩碼,如圖 1a 所示,可以根據(jù)使用者的提示(point、box、mask、text)來返回分割結(jié)果。

  • prompt 能夠指定要在圖像中分割的內(nèi)容,如一些能夠標(biāo)識目標(biāo)的空間信息或文本信息。

  • 一個(gè)有效的 mask 輸出就意味著,即使當(dāng)一個(gè) prompt 是模糊的或指向多個(gè)目標(biāo)(比如一件襯衫上的像素點(diǎn)可能表示襯衫或穿它的人),mask 的輸出應(yīng)該是合理且可解釋的,至少會包含一個(gè)所指向的目標(biāo)

  • 作者使用提示分割任務(wù)作為預(yù)訓(xùn)練的目標(biāo),并通過 prompt 過程來解決一般的下游分割任務(wù)

② Model:

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

基于提示的分割任務(wù)和現(xiàn)實(shí)中的可用性就給 model 施加了一些約束

  • model 必須支持足夠靈活的提示
  • model 必須能夠支持實(shí)時(shí)交互使用
  • model 必須是模糊感知的,可以對一個(gè)模糊 prompt 輸出多個(gè) masks,從而允許模型能夠自然地處理模糊的目標(biāo),如 shirt 和 person

基于上述約束,作者發(fā)現(xiàn)了一個(gè)簡單的結(jié)構(gòu)能夠同時(shí)滿足上述三種約束:

  • 一個(gè)強(qiáng)大的 image encoder,來計(jì)算 image embedding
  • 一個(gè) prompt encoder 來編碼 prompts
  • 一個(gè)能夠?qū)⑸厦鎯蓚€(gè) embedding 結(jié)合起來的輕量級 mask decoder,預(yù)測分割 mask

Segment Anything Model,SAM,見圖 1b,由三部分組成:

  • image encoder:圖像特征提取
  • prompt encoder:主要使用點(diǎn)、框、mask 、text 作為提示
  • mask decoder:通過對上面兩個(gè)編碼結(jié)果進(jìn)行一定的 cross-attention,得到 mask 結(jié)果

3、Data engine

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

為了實(shí)現(xiàn)在新數(shù)據(jù)集的強(qiáng)大的泛化能力,非常有必要在大量且豐富的 mask 上訓(xùn)練 SAM,而非使用現(xiàn)有的分割數(shù)據(jù)集來訓(xùn)練。

有一些基礎(chǔ)模型方法[82] 使用在線獲取數(shù)據(jù),但 mask 并不豐富

本文作者建立了一種 ‘data engine’ (數(shù)據(jù)引擎)的方法, 如圖 1c 所示,作者使用 model-in-the-loop 數(shù)據(jù)集標(biāo)注和 SAM 模型來共同開發(fā),有三個(gè)階段:

  • assisted-manual:SAM 輔助標(biāo)注工具來標(biāo)注 masks,類似于傳統(tǒng)的分割標(biāo)注步驟
  • semi-automatic:SAM 能夠根據(jù)提示目標(biāo)的位置來為一些目標(biāo)生成 mask,標(biāo)注工具會對其他剩余的目標(biāo)進(jìn)行標(biāo)注
  • fully automatic:用規(guī)則的前景網(wǎng)格點(diǎn)來提示 SAM,為每個(gè) image 生成約 100 個(gè)高質(zhì)量的 masks

4、Dataset

最終得到的 dataset 是 SA-1B,包括 1B mask(10億),11M imgs(1100萬),如圖 2 所示:

  • SA-1B 使用的由 data engine 的最后一個(gè)階段標(biāo)注結(jié)果
  • 是現(xiàn)有的分割數(shù)據(jù)集 mask 數(shù)量的 400x 之多,且 mask 的質(zhì)量都較高且更豐富

5、Responsible AI

作者研究且說明了在使用 SA-1B 和 SAM 時(shí)潛在的公平問題和偏差。

SA-1B的圖像跨越了地理和經(jīng)濟(jì)上不同的國家,我們發(fā)現(xiàn) SAM 表現(xiàn)在不同的人群中也是同樣的。

6、Experiments

  • 使用 23 個(gè)分割數(shù)據(jù)集,我們發(fā)現(xiàn) SAM 從單個(gè)前景點(diǎn)產(chǎn)生高質(zhì)量的掩模,通常只略低于手動標(biāo)注的 gt
  • 其次,在使用提示引擎的 zeor-shot 時(shí),各種下游任務(wù)的定量和定性都獲得了較好的結(jié)果(包括邊緣檢測、目標(biāo)建議生成、實(shí)例分割以及 text-to-mask 等)

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

圖 2 展示了數(shù)據(jù)集中的一些標(biāo)注樣本,標(biāo)注的 mask 都是最后一個(gè)階段 SAM 自動標(biāo)注的,每個(gè)圖像中平均包含約 100 個(gè) masks

可以看出標(biāo)注非常的細(xì)致,有邊界區(qū)分的圖像區(qū)域(盡管可能同屬于一個(gè) person 或者 car)都被進(jìn)行了很細(xì)粒度的分割,每個(gè)土豆都被分割成了一個(gè)區(qū)域,這和我們通常意義上的實(shí)例分割或語義分割的標(biāo)注 label 有很大的差異。

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

二、Segment Anything Task

1、Task

首先將 prompt 的概念從 NLP 轉(zhuǎn)換到分割

prompt:

  • 可以是一組前景/背景點(diǎn),如圖 3,綠色的點(diǎn)就是 point prompt,模型會給出這個(gè)點(diǎn)所在的目標(biāo)的 mask
  • 一個(gè)粗糙的框或 mask
  • 自由形式的文本
  • 或者能夠表示在圖像中要分割的內(nèi)容的任何形式

promptable segmentation task 的目標(biāo):

  • 給定任何 prompt,返回有效的分割 mask(如圖 3 所示,任何模糊的提示都要有一個(gè)有效的 mask),輸出至少要是一個(gè)目標(biāo)

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

2、Pre-training

可提示的分割任務(wù)提出了一種預(yù)訓(xùn)練方法,能夠?yàn)槊總€(gè)訓(xùn)練樣本模擬一系列提示(如 points、box、mask),并且和真實(shí)的 gt mask 做對比。

3、zero-shot transfer

pre-training 任務(wù)賦予了模型在推理時(shí)對任何提示做出適當(dāng)反應(yīng)的能力,因此下游任務(wù)可以通過設(shè)計(jì)合適的 prompt 方法來解決。

  • 假設(shè)有一個(gè)貓的 box,可以通過提供檢測器的 box 輸出作為模型的 prompt,來獲得貓的實(shí)例分割結(jié)果
  • 一般來說,實(shí)際的分割任務(wù)都可以被視為 prompting。除了自動數(shù)據(jù)集標(biāo)記,第七章中探索了 5 個(gè)不同的示例任務(wù)。

4、related tasks

分割任務(wù)有很多子任務(wù),例如:

  • interactive segmentation [57, 109]
  • edge detection [3]
  • super pixelization [85]
  • object proposal generation [2]
  • foreground segmentation [94]
  • semantic segmentation [90]
  • instance segmentation [66]
  • panoptic segmentation [59]

提示性的分割模型能支持盡可能多的場景,但不是全部場景

5、discussion

提示和組合能夠使單個(gè)模型能夠以可擴(kuò)展的方式使用,并有可能完成在模型設(shè)計(jì)時(shí)未知的任務(wù)。

這種方法類似如何使用其他基礎(chǔ)模型,例如,CLIP [82] 是 圖像生成系統(tǒng) DALL·E[83] 的文本-圖像對齊組件。

由 prompt 技術(shù)驅(qū)動的可組合的系統(tǒng)設(shè)計(jì),將會比專門為一組固定的任務(wù)訓(xùn)練的應(yīng)用更加廣泛。

三、Segment Anything Model

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

SAM 有三個(gè)部分,如圖 4 所示:

  • image encoder:

    使用 MAE pre-trained Vision Transformer(ViT)來處理高分辨率的輸入,image encoder 會對每張圖像都運(yùn)行一次,且可以在使用提示之前應(yīng)用。

    image encoder 的輸出是經(jīng)過 16x 下采樣的結(jié)果,輸入大小為 1024x1024,所以經(jīng)過 image embedding 后的結(jié)果是 64x64 大小,為了降低通道數(shù)量,使用了 1x1 卷積將通道降為 256。

  • flexible prompt encoder:有兩種 prompts

    • sparse(points、boxes、text):通過位置編碼來表示 points 和 box,通過 CLIP 的 off-the-shelf text encoder 來表示 text。sparse prompts 都是 256-d 的向量。point 表示位置編碼和該點(diǎn)是前景還是背景;box 表示左上角學(xué)習(xí)到的編碼和右下角學(xué)習(xí)到的編碼。text 是從 CLIP 中得到的編碼。
    • dense(masks):使用卷積來進(jìn)行編碼,并對編碼結(jié)果進(jìn)行 element-wise 求和。mask 是將圖像下采樣 4x 后輸入的,然后是 1x1 卷積將通道變?yōu)?256,然后將 image embedding 和 mask 進(jìn)行逐點(diǎn)相加,如果沒有 mask prompt,則不加即可
  • fast/lightweight mask decoder

    • decoder 能夠高效地對 image embedding 和 prompt embedding 進(jìn)行映射,得到輸出的 mask,如圖 14 所示。
    • 共有兩層 decoder layer,通過 cross-attention 來更新 image embedding 和 prompt token

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

每個(gè) decoder layer 有 4 個(gè)步驟:

  • 首先,對 prompt token 上進(jìn)行 self-attention
  • 然后,對 token(as queries)到 image embedding 進(jìn)行 cross-attention
  • 接著,使用逐點(diǎn)的 MLP 來更新每個(gè) token
  • 最后,對 image embedding(as queries)到 token 進(jìn)行 cross-attention,使用 prompt 信息更新 image embedding

這里的 token 是什么:

  • 我們知道在圖像分類 ViT 中,在 49 個(gè) patch embedding 后面又添加了一個(gè) cls token,變成了 50 維的特征輸入到了 Transformer 中進(jìn)行特征提取,最后使用 cls token 經(jīng)過 MLP 后得到類別,這里的 cls token 就是最終用于分類的特征
  • 所以在本文中,在 prompt embedding 中也添加了一個(gè) token,在 decoder 的輸出中會用到

如何進(jìn)行 cross-attention:

  • 將 image embedding 看做一系列 64x64x256 的向量
  • 每個(gè) self、cross-attention、MLP 在訓(xùn)練中都有殘差鏈接、layer norm、dropout
  • 作者使用兩層 decoder,下一個(gè) decoder layer 的輸入是上一層更新后的 token 和更新后的 image embedding

decoder 運(yùn)行完之后,使用兩個(gè)反卷積將特征擴(kuò)大 4x,相比于原圖是 4x 下采樣大小

token 再次被用到 image embedding 上,并且將更新后的輸出 token embedding 經(jīng)過一個(gè)小的 3 層 MLP,輸出的通道和上面經(jīng)過反卷積的 image embedding 保持一致。最后使用 MLP 的輸出和反卷積后的 image embedding 進(jìn)行逐點(diǎn)相乘來預(yù)測 mask

如何解決 prompt 的模糊性:

  • 如果給出一個(gè)模糊的提示,則模型一般會平均多個(gè)有效的 mask 來得到一個(gè)輸出
  • 為了解決這個(gè)問題,作者修改了模型,如果只給了一個(gè) prompt,也會輸出多個(gè)匹配到的 masks(如圖 3)
  • 作者發(fā)現(xiàn) 3 個(gè) mask 輸出通常能夠解決大多數(shù)常見的情況(嵌套 mask 通常最多有三個(gè)深度:整體、部分、子部分)

如何訓(xùn)練:

  • 在訓(xùn)練過程中,僅僅回傳 mask 中最小的 loss
  • 模型會給每個(gè) mask 預(yù)測一個(gè) confidence score (estimated IoU)來進(jìn)行排序

高效性:

  • prompt encoder 和 mask decoder 都運(yùn)行在 web browser 上,在 CPU 上大概為 50ms

Loss:

  • 使用 focal loss 和 dice loss 的線性組合來監(jiān)督 mask prediction,且 focal loss 和 dice loss 的權(quán)重比為 20:1
  • 此外,作者證明在每個(gè) decoder layer 后面使用輔助 loss 也有效果,所有使用 MSE loss 來監(jiān)督 IoU head

Training:

  • 使用混合 geometric promps 來訓(xùn)練 promptable segmentation task
  • 對每個(gè) mask 都會進(jìn)行 11 輪隨機(jī)采樣 prompt 來模擬交互,允許 SAM 和 data engine 無縫銜接

四、Segment Anything Data Engine

由于現(xiàn)有大分割數(shù)據(jù)集并不豐富,所以作者搭建了一個(gè)數(shù)據(jù)引擎來持續(xù)收集數(shù)據(jù)

數(shù)據(jù)引擎分為三個(gè)階段:

  • 模型輔助手動標(biāo)注階段
  • 包含自動預(yù)測 mask 和模型輔助標(biāo)注的半自動階段
  • 全自動階段,模型生成 mask 且沒有標(biāo)注器

1、手動標(biāo)注階段

類似于傳統(tǒng)的交互式分割,標(biāo)注人員使用標(biāo)注工具進(jìn)行 mask 的標(biāo)注

沒有對標(biāo)記對象施加語義約束,標(biāo)注人員可以自由的標(biāo)注 ‘stuff’ 和 ‘things’

作者會建議標(biāo)注人員標(biāo)注其自己認(rèn)為可以命名或描述的對象,但并不需要類別來對這些被 mask 的對象進(jìn)行描述

標(biāo)注人員會按圖像中物體的突出程度來按順序標(biāo)注物體

在這個(gè)階段,SAM 使用常見的公共分割數(shù)據(jù)集進(jìn)行訓(xùn)練,在進(jìn)行足夠的數(shù)據(jù)標(biāo)注后,只使用新的標(biāo)注 mask 來重新訓(xùn)練。

隨著標(biāo)注 mask 的增多,image encoder 從 ViT-B 擴(kuò)展到 ViT-H,其他結(jié)構(gòu)不變

共進(jìn)行了 6 次訓(xùn)練

隨著模型效果的提升,每個(gè) mask 的平均標(biāo)注時(shí)間從 34s 降到了 14s

14s 比 COCO 的 mask annotation 快 6.5x,比 box annotation 慢 2x

隨著 SAM 的提升,每個(gè)圖像中的 mask 的平均數(shù)量從 20 提升到了 44

在這個(gè)階段從 120k 數(shù)據(jù)中得到了 4.3M masks

2、半自動標(biāo)注階段

在這個(gè)階段,目標(biāo)是增加 mask 的多樣性,以提高模型分割任何東西的能力

為了將標(biāo)注器集中到不太突出的目標(biāo)上,首先,自動檢測到很有信心的 mask,然后對這些 mask 的地方進(jìn)行填充,然后讓標(biāo)注器去關(guān)注其他未標(biāo)注的地方。

如何得到有信心的 mask:

  • 為了檢測有信息的 masks,訓(xùn)練了一個(gè) bbox 檢測器[84] ,使用的是通用的 ‘object’ category。

在這個(gè)階段,在 180k 數(shù)據(jù)中得到了 5.9M masks(和前面的一共 10.2M mask)

通過進(jìn)行 5 次訓(xùn)練,每個(gè) mask 的標(biāo)注時(shí)間又變成了 34s,因?yàn)檫@些 mask 的標(biāo)注比較難,每個(gè)圖像中的 mask 從 44 擴(kuò)充到了 72 個(gè)

3、全自動標(biāo)注階段

在最后一個(gè)階段,是進(jìn)行全自動的標(biāo)注,這也是可行的

  • 其一,因?yàn)樵谶@個(gè)階段的開始,已經(jīng)收集到了足夠的 mask,包括前兩個(gè)階段收集到的多種多樣的 mask
  • 其二,在這個(gè)階段,開發(fā)了感知模糊模型,運(yùn)行對模糊的 prompt 進(jìn)行輸出

具體方法:

  • 使用 32x32 的網(wǎng)格 point prompt 模型,為每個(gè) point 預(yù)測一系列可能對應(yīng)于有效目標(biāo)的 mask
  • 對于感知模糊模型,如果一個(gè) point 位于一個(gè) part 或 subpart 上,則模型會返回該 part、shupart、whole 的目標(biāo)
  • 使用 IoU 預(yù)測模塊來選擇 confident mask
  • 此外,作者只選擇 stable masks
  • 選擇到 confident 和 stable 的 mask 后,使用 NMS 進(jìn)行過濾
  • 為了進(jìn)一步提升小 mask 的質(zhì)量,還使用了多種重疊的 zoom-in 的方式

經(jīng)過最后一階段的全自動標(biāo)注,共在 11M 圖像上得到了 1.1B 的高質(zhì)量 mask

五、Segment Anything Dataset

1、Images

這些 11M 圖像都是經(jīng)過授權(quán)的,都是高分辨率圖像(平均 3300x4950 pixels),該量級的數(shù)據(jù)大小對訪問和存儲都是挑戰(zhàn)。

因此,作者發(fā)布了最短邊長為 1500 px 的降采樣圖像,這樣也高于一些常用的圖像(如 COCO 大約為 480x640 px 左右)

2、Masks

共包含 1.1B 個(gè) mask,其中 99.1% 都是自動生成的,因此 mask 的質(zhì)量至關(guān)重要

作者會將生成的 mask 和專業(yè)標(biāo)注的結(jié)果進(jìn)行比較,并且在第 7 章證明了本文的數(shù)據(jù)集標(biāo)注 mask 是高質(zhì)量的

3、Mask quality

為了估計(jì) mask 的質(zhì)量,作者隨機(jī)抽取了 500 張圖像,約 50k masks,并要求標(biāo)注人員提高這些 mask 的質(zhì)量。

這樣一來就能產(chǎn)生成對的預(yù)測 mask 和矯正后的 mask

通過計(jì)算 IoU 發(fā)現(xiàn):

  • 有 94% 的 mask pair 的 IoU > 90%
  • 有 97% 的 mask pair 的 IoU > 75%

4、Mask properties

如圖 5,繪制了 SA-1B 的所有 mask center(mask 中心店)和現(xiàn)有流行分割數(shù)據(jù)集的 mask center 的空間分布對比

在所有的數(shù)據(jù)集中,都存在攝影師偏差

  • SA-1B 相比于 LVIS v1 和 ADE20K,具有更大的 mask 覆蓋范圍,即 mask center 的分布很廣泛,沒有明顯的集中到圖像中心的位置,mask 的位置的分布較為均衡

  • COCO 和 Open Images V5 有更突出的中心偏差??梢悦黠@的看出 COCO 中心點(diǎn)顏色很深,說明 coco 的很大部分的 mask 的中心點(diǎn)集中在圖像的中心點(diǎn)

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

在圖 6 中,按大小對比了這些數(shù)據(jù)集

SA-1B 比第二大開放圖像數(shù)據(jù)集多 11x 圖像 和 400x mask,平均每幅圖像比開放圖像多 36x mask

如圖 6 中間,SA-1B 的每個(gè)圖中有更多的 mask,故包含了更多中小目標(biāo)

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

六、Segment Anything RAI Analysis

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

這里將臺灣和香港被列為 Country,有嚴(yán)重的問題,已經(jīng)有網(wǎng)友給作者發(fā)郵件敦促修改,這里靜等結(jié)果!

七、Zero-shot Transfer Experiments

本節(jié)主要介紹使用 SAM 進(jìn)行 zero-shot transfer 實(shí)驗(yàn),包括了 5 個(gè)任務(wù):

  • 實(shí)驗(yàn)測試的是 SAM 在沒見過的數(shù)據(jù)集和任務(wù)上的效果(和 CLIP 的使用類似)
  • 數(shù)據(jù)集中包括新的數(shù)據(jù)分布,如水下或俯視圖(如圖8)

實(shí)驗(yàn)的核心目標(biāo):

  • 測試是否能夠從任何提示中生成一個(gè)有效的 mask

使用一系列從低到中再到高水平的圖像理解來證明效果:

  • 邊緣檢測
  • 分割所有內(nèi)容,即生成 object proposal
  • 對檢測到的目標(biāo)進(jìn)行分割,即實(shí)例分割
  • 作為一個(gè)概念,從 free-form text 的提示中來分割對象。

實(shí)驗(yàn)設(shè)置:

  • SAM 使用基于 MAE 預(yù)訓(xùn)練的 ViT-H[33] 作為 image encoder
  • SAM 在 SA-1B 上訓(xùn)練,該數(shù)據(jù)集的標(biāo)注 mask 只有自動標(biāo)注的結(jié)果

圖 8 展示了作者使用的 23 個(gè)測試開源數(shù)據(jù)集

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

7.1 zero-shot single point valid mask evaluation

1、Task

作者測試了從單個(gè)前景 point 出發(fā)來進(jìn)行一個(gè)目標(biāo)的分割

2、Datasets

作者使用由不同的 23 個(gè)數(shù)據(jù)集組成的數(shù)據(jù),如圖 8 展示了 dataset 并且展示了每個(gè)數(shù)據(jù)集的樣本(表 7 更詳細(xì))

使用 mIoU 作為評估標(biāo)準(zhǔn):

  • 對于 human study:使用如圖 9b 的 subset

3、Results

如圖 9a,SAM 和 RITM 對比了每個(gè)數(shù)據(jù)集的結(jié)果

  • SAM 取得了 16 個(gè)數(shù)據(jù)集的更好的結(jié)果
  • 此外,還展示了 oracle 結(jié)果,抽出 SAM 的 3 個(gè) mask 和 gt 對比,而非使用所有的 confident mask,SAM 在所有數(shù)據(jù)集上都超越了 RITM

human study 的結(jié)果見圖 9b

7.2 zero-shot edge detection

作者在 BSDS500 數(shù)據(jù)集上測試了 SAM 邊緣檢測的效果

使用 16x16 的規(guī)則前景點(diǎn) grid 作為 prompt,得到 768 個(gè)預(yù)測 mask(每個(gè)點(diǎn)預(yù)測 3 個(gè)),多余的 mask 使用 NMS 剔除掉

然后使用 sobel 濾波和后處理,得到最終的邊緣 maps

結(jié)果:

如圖 10 (圖 15 更多)所示:

  • 定性來看,盡管 SAM 沒有訓(xùn)練過邊緣檢測的任務(wù),但也能得到理想的邊緣檢測結(jié)果
  • 和 gt 相比,SAM 預(yù)測了更多的邊緣,包括 BSDS500 中沒有標(biāo)注的一些邊緣

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

7.3 zero-shot object detection

作者在 object proposal generation 任務(wù)上也測試了 SAM 的性能

這項(xiàng)任務(wù)在目標(biāo)檢測任務(wù)上很重要

作者將 mask 自動生成的 pipeline 進(jìn)行了一些修改,用于生成 proposal,輸出的 mask 作為 proposals

average recall (AR) 作為評判標(biāo)準(zhǔn)

表 4 展示了結(jié)果

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

7.4 zero-shot instance segmentation

作者也使用了 instance segmentation 來評判了 SAM 的效果

  • 首先運(yùn)行一個(gè)目標(biāo)檢測網(wǎng)絡(luò)
  • 將檢測結(jié)果作為 SAM 的 prompt

結(jié)果:

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

7.5 zero-shot text-to-mask

作者在根據(jù) free-form text 來進(jìn)行目標(biāo)分割的任務(wù)上也進(jìn)行了實(shí)驗(yàn)

  • 對每個(gè)面積大于 10 0 2 100^2 1002 像素的 mask,都抽取 CLIP image embedding
  • 在訓(xùn)練階段,使用 CLIP image embedding 作為 SAM 的 prompt,在推理階段,使用 text embedding 就可以了。因?yàn)?CLIP 的 image embedding 是和 text embedding 對齊的
  • 所以,在推理階段,通過 CLIP 的文本編碼器對文本編碼,然后將生成的文本編碼作為提示符提供給 SAM

結(jié)果:

如圖 12 所示,SAM 可以在給定文本提示符的情況下來分割對應(yīng)的目標(biāo)

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

八、總結(jié)

SAM 能夠?qū)崿F(xiàn)非常細(xì)粒度的圖像分割,分割粒度之細(xì)讓人望而生畏,突破了以前實(shí)例分割和語義分割的標(biāo)注上限。能達(dá)到這樣的細(xì)粒度標(biāo)注的一個(gè)關(guān)鍵原因就在于沒有給標(biāo)注過程設(shè)置 “類別” 的界限,只要標(biāo)注人員(第一階段)認(rèn)為這個(gè)區(qū)域是能夠抽象描述的,就可以將這個(gè)區(qū)域 mask 出來,而無需給定一個(gè)類別描述或語言描述。

如上所述,SAM 分割的結(jié)果是不含類別信息的(因?yàn)橛?xùn)練數(shù)據(jù)的 label 也是沒有類別信息的,只有像素是否是否屬于一個(gè) mask 的信息),使用 text 作為 prompt 的時(shí)候可以輸入類別信息,如 ‘cat’,就可以輸出一張圖中的所有 cat,這個(gè) cat 是基于圖文編碼匹配的,而分割的結(jié)果中原本是沒有任何類別信息的。

SAM 作為首個(gè)圖像分割的大基礎(chǔ)模型,為未來 CV 方向提供了更多的可能,為自動標(biāo)注也提供了很好的范本。

九、在線體驗(yàn)

體驗(yàn)地址

點(diǎn)擊右上角的 demo 即可體驗(yàn),可以使用網(wǎng)站上的圖,也可以點(diǎn)擊 Upload an image 上傳自己的圖

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

點(diǎn)擊左側(cè) Everything 即可對圖中所有目標(biāo)進(jìn)行分割:
【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

點(diǎn)擊 Box 就可以使用 box prompt 來提示模型輸出 box 內(nèi)的分割 mask:

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

點(diǎn)擊 Hover&Click 就可以在頁面上點(diǎn)擊,會輸出該點(diǎn)所在的 mask 的結(jié)果:

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

十、代碼

代碼路徑

只能做推理

1、環(huán)境安裝

conda create -n seg_any python=3.8 pytorch=1.10 torchvision cudatoolkit=11.7 -c pytorch -c conda-forge
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .
pip install opencv-python pycocotools matplotlib onnxruntime onnx -i http://pypi.douban.com/simple/

2、模型下載

在 github 項(xiàng)目中有模型下載地址:

【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM,多模態(tài),人工智能,計(jì)算機(jī)視覺,深度學(xué)習(xí),圖像分割

3、簡單使用

# 根據(jù) prompt 生成 mask
from segment_anything import SamPredictor, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
predictor = SamPredictor(sam)
predictor.set_image(<your_image>)
masks, _, _ = predictor.predict(<input_prompts>)
# 獲取圖中所有的 mask
from segment_anything import SamAutomaticMaskGenerator, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>") # model type: ['default', 'vit_l', 'vit_b']
mask_generator = SamAutomaticMaskGenerator(sam)
masks = mask_generator.generate(<your_image>)
# 也可以使用單行命令實(shí)現(xiàn)
python scripts/amg.py --checkpoint <path/to/checkpoint> --model-type <model_type> --input <image_or_folder> --output <path/to/output>

4、image encoder

  • 輸入:1024x1024x3
  • 第一步:patch embedding:patch 大小為 16x16(使用 16x16,步長為 16 的二維卷積實(shí)現(xiàn)),得到 16x16x768 維的特征,輸出為 [N, 16, 16, 768]
  • 第二步:給圖像編碼加上位置編碼
  • 第三步:輸入 Transformer Encoder 中,進(jìn)行多級 MHSA 和 MLP,ViT 深度為 12,多頭自注意力的 head 數(shù)為 12
  • 第四步:經(jīng)過 Neck(1x1 conv + LN + 3x3 conv + LN)
  • 輸出:64x64x256 大小

5、prompt encoder

  • 對 points 編碼
  • 對 box 編碼
  • 對 mask 編碼

6、mask decoder文章來源地址http://www.zghlxwxcb.cn/news/detail-585741.html

  • 對 image encoder 和 prompt encoder 的結(jié)果做 cross-attention

到了這里,關(guān)于【多模態(tài)】14、Segment Anything | Meta 推出超強(qiáng)悍可分割一切的模型 SAM的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Segment Anything Model (SAM)——分割一切,具有預(yù)測提示輸入的圖像分割實(shí)踐

    Segment Anything Model (SAM)——分割一切,具有預(yù)測提示輸入的圖像分割實(shí)踐

    不得不說,最近的AI技術(shù)圈很火熱,前面的風(fēng)頭大都是chatGPT的,自從前提Meta發(fā)布了可以分割一切的CV大模型之后,CV圈也熱起來了,昨天只是初步了解了一下SAM,然后寫了一篇基礎(chǔ)介紹說明的博客,早上一大早起來已經(jīng)有2k左右的閱讀量了。 ?我果斷跑去官方項(xiàng)目地址看下:

    2023年04月19日
    瀏覽(29)
  • 計(jì)算機(jī)視覺:分割一切AI大模型segment-anything

    計(jì)算機(jī)視覺:分割一切AI大模型segment-anything

    Segment Anything Model (SAM)來源于Facebook公司Meta AI實(shí)驗(yàn)室。據(jù)Mata實(shí)驗(yàn)室介紹,SAM 已經(jīng)學(xué)會了關(guān)于物體的一般概念,并且它可以為任何圖像或視頻中的任何物體生成 mask,甚至包括在訓(xùn)練過程中沒有遇到過的物體和圖像類型。SAM 足夠通用,可以涵蓋廣泛的用例,并且可以在新的圖像

    2024年02月11日
    瀏覽(26)
  • 【論文閱讀】Segment Anything(SAM)——可分割一切的CV大模型

    【論文閱讀】Segment Anything(SAM)——可分割一切的CV大模型

    【前言】隨著ChatGPT席卷自然語言處理,F(xiàn)acebook憑借著Segment Anything在CV圈也算扳回一城。迄今為止,github的star已經(jīng)超過3萬,火的可謂一塌糊涂。作為AI菜鳥,可不得自己爬到巨人肩膀上瞅一瞅~ 論文地址:https://arxiv.org/abs/2304.02643 代碼地址:GitHub - facebookresearch/segment-anything: T

    2024年02月15日
    瀏覽(20)
  • 【圖像分割】Segment Anything(Meta AI)論文解讀

    【圖像分割】Segment Anything(Meta AI)論文解讀

    論文地址:https://arxiv.org/abs/2304.02643 項(xiàng)目地址:https://github.com/facebookresearch/segment-anything Demo 與數(shù)據(jù)集SA-1B地址:https://segment-anything.com/ Meta 發(fā)布的新模型名叫 Segment Anything Model (SAM) 。他們在博客中介紹說,「SAM 已經(jīng)學(xué)會了關(guān)于物體的一般概念,并且它可以為任何圖像或視頻中

    2023年04月10日
    瀏覽(23)
  • 【segment-anything】- Meta 開源萬物可分割 AI 模型

    論文地址1 論文地址2 項(xiàng)目地址 Demo 地址 SA-1B數(shù)據(jù)集 參考鏈接 論文翻譯 展望未來 Meta 在論文中發(fā)布的新模型名叫 Segment Anything Model (SAM) 。 如標(biāo)題所述,這篇論文只做了一件事情:(零樣本)分割一切。類似 GPT-4 已經(jīng)做到的「回答一切」。 將 NLP 的 prompt 范式引入了 CV 領(lǐng)域,

    2023年04月20日
    瀏覽(48)
  • CV不存在了?體驗(yàn)用Segment Anything Meta分割清明上河圖

    CV不存在了?體驗(yàn)用Segment Anything Meta分割清明上河圖

    在圖像處理與計(jì)算機(jī)視覺領(lǐng)域, 圖像分割(image segmentation) 是在像素級別將一個(gè)完整圖像劃分為若干具有特定語義 區(qū)域(region) 或 對象(object) 的過程。每個(gè)分割區(qū)域是一系列擁有相似特征——例如顏色、強(qiáng)度、紋理等的像素集合,因此圖像分割也可視為 以圖像屬性為特征空間,

    2023年04月20日
    瀏覽(26)
  • Segment Anything Model (SAM)——卷起來了,那個(gè)號稱分割一切的CV大模型他來了

    Segment Anything Model (SAM)——卷起來了,那個(gè)號稱分割一切的CV大模型他來了

    最近每天打開微信看到10個(gè)公眾號里面差不多有11個(gè)都在各種玩賺chatGPT,每個(gè)都在說是各種大好風(fēng)口,哎,看得眼睛都是累的。 今天下午無意間看到Meta發(fā)布了一款號稱能分割一切的CV大模型,CV圈也開始卷起來,今年各種大模型要爆發(fā)了感覺。 吃瓜群眾滿懷好奇,點(diǎn)開了解一

    2023年04月10日
    瀏覽(27)
  • 【CV大模型SAM(Segment-Anything)】真是太強(qiáng)大了,分割一切的SAM大模型使用方法:可通過不同的提示得到想要的分割目標(biāo)

    【CV大模型SAM(Segment-Anything)】真是太強(qiáng)大了,分割一切的SAM大模型使用方法:可通過不同的提示得到想要的分割目標(biāo)

    本文主要介紹SAM模型的使用方法:如何使用不同的提示進(jìn)行目標(biāo)分割。而且該模型在CPU的環(huán)境下就可以快速運(yùn)行,真心不錯(cuò)~,趕緊來試試吧 關(guān)于Segment-Anything模型的 相關(guān)代碼、論文PDF、預(yù)訓(xùn)練模型、使用方法 等,我都已打包好,供需要的小伙伴交流研究, 獲取方式如下 : 關(guān)

    2023年04月18日
    瀏覽(29)
  • Meta AI最新出品,全能的分割模型SAM:掀桌子的Segment Anything,CV屆的ChatGPT已經(jīng)到來!

    Meta AI最新出品,全能的分割模型SAM:掀桌子的Segment Anything,CV屆的ChatGPT已經(jīng)到來!

    本來不打算再發(fā)關(guān)于分割的相關(guān)內(nèi)容的,但是13小時(shí)前,2023年4月5號,Meta AI在Arxiv網(wǎng)站發(fā)布了文章《Segment Anything》,并將SAM模型代碼和數(shù)據(jù)開源。作為通用的分割網(wǎng)絡(luò),SAM或許將成為,甚至是已經(jīng)成為了CV屆的ChatGPT。簡簡單單的兩個(gè)詞Segment Anything,簡單粗暴卻不失優(yōu)雅。 說

    2023年04月15日
    瀏覽(23)
  • Meta:segment anything

    Meta:segment anything

    介紹地址:https://ai.facebook.com/research/publications/segment-anything/ 演示地址:https://segment-anything.com/demo# 論文:https://scontent-akl1-1.xx.fbcdn.net/v/t39.2365-6/10000000_900554171201033_1602411987825904100_n.pdf?_nc_cat=100ccb=1-7_nc_sid=3c67a6_nc_ohc=Ald4OYhL6hgAX-FZV7S_nc_ht=scontent-akl1-1.xxoh=00_AfDDJRfDV85B3em0zMZvyCIp882H7Ha

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包