最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

通用圖像分割任務(wù):使用 Mask2Former 和 OneFormer

2023-03-10 10:59 作者:HuggingFace  | 我要投稿

本文介紹兩個領(lǐng)先的圖像分割神經(jīng)網(wǎng)絡(luò)模型: Mask2Former 和 OneFormer。相關(guān)模型已經(jīng)在 ?? Transformers 提供。?? Transformers 是一個開源庫,提供了很多便捷的先進(jìn)模型。在本文中,你也會學(xué)到各種圖像分割任務(wù)的不同之處。

  • ?? Transformers 文檔鏈接:
    https://hf.co/transformers

圖像分割

圖像分割任務(wù)旨在鑒別區(qū)分出一張圖片的不同部分,比如人物、汽車等等。從技術(shù)角度講,圖像分割任務(wù)需要根據(jù)不同的語義信息區(qū)分并聚集起對應(yīng)相同語義的像素點。讀者可以參考 Hugging Face 的 任務(wù)頁面 來簡要了解。

  • 任務(wù)頁面地址:
    https://hf.co/tasks/image-segmentation

大體上,圖像分割可以分為三個子任務(wù): 實例分割 (instance segmentation) 、語義分割 (semantic segmentation) 、全景分割 (panoptic segmentation)。這三個子任務(wù)都有著大量的算法與模型。

  • 實例分割?任務(wù)旨在區(qū)分不同的“實例”,例如圖像中不同的人物個體。實例分割從某種角度看和物體檢測很像,不同的是在這里我們需要的是一個對應(yīng)類別的二元的分割掩膜,而不是一個檢測框。實例也可以稱為“物體 (objects)”或“實物 (things)”。需要注意的是,不同的個體可能在圖像中是相互重疊的。

  • 語義分割?區(qū)分的是不同的“語義類別”,比如屬于人物、天空等類別的各個像素點。與實例分割不同的是,這里我們不需要區(qū)分開同一類別下的不同個體,例如這里我們只需要得到“人物”類別的像素級掩膜即可,不需要區(qū)分開不同的人。有些類別根本不存在個體的區(qū)分,比如天空、草地,這種類別我們稱之為“東西 (stuff)”,以此區(qū)分開其它類別,稱之為“實物 (things)”。請注意這里不存在不同語義類別間的重疊,因為一個像素點只能屬于一個類別。

  • 全景分割?在 2018 年由 Kirillov et al. 提出,目的是為了統(tǒng)一實例分割和語義分割。模型單純地鑒別出一系列的圖像部分,每個部分既有對應(yīng)的二元掩膜,也有對應(yīng)的類別標(biāo)簽。這些區(qū)分出來的部分,既可以是“東西”也可以是“實物”。與實例分割不同的是,不同部分間不存在重疊。

下圖展示了三個子任務(wù)的不同: (圖片來自 這篇博客文章)

  • 博客文章:
    https://www.v7labs.com/blog/panoptic-segmentation-guide

近年來,研究者們已經(jīng)推出了很多針對實例、語義、全景分割精心設(shè)計的模型架構(gòu)。實例分割和全景分割基本上是通過輸出一系列實例的二元掩膜和對應(yīng)類別標(biāo)簽來處理的 (和物體檢測很像,只不過這里不是輸出每個實例的檢測框)。這一操作也常常被稱為“二元掩膜分類”。語義分割則不同,通常是讓模型輸出一個“分割圖”,令每一個像素點都有一個標(biāo)簽。所以語義分割也常被視為一個“像素級分類”的任務(wù)。采用這一范式的語義分割模塊包括 SegFormer 和 UPerNet。針對 SegFormer 我們還寫了一篇 詳細(xì)的博客。

  • SegFormer:
    https://hf.co/docs/transformers/model_doc/segformer

  • UPerNet:
    https://hf.co/docs/transformers/main/en/model_doc/upernet

  • 博客地址:
    https://hf.co/blog/fine-tune-segformer

通用圖像分割

幸運的是,從大約 2020 年開始,人們開始研究能同時解決三個任務(wù) (實例、語義和全景分割) 的統(tǒng)一模型。DETR 是開山之作,它通過“二元掩膜分類”的范式去解決全景分割問題,把“實物”和“東西”的類別用統(tǒng)一的方法對待。其核心點是使用一個 Transformer 的解碼器 (decoder) 來并行地生成一系列的二元掩膜和類別。隨后 MaskFormer 又在此基礎(chǔ)上進(jìn)行了改進(jìn),表明了“二元掩膜分類”的范式也可以用在語義分割上。

  • DETR:
    https://hf.co/docs/transformers/model_doc/detr

  • MaskFormer:
    https://hf.co/docs/transformers/model_doc/maskformer

Mask2Former 又將此方法擴(kuò)展到了實例分割上,進(jìn)一步改進(jìn)了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。因此,各自分離的子任務(wù)框架現(xiàn)在已經(jīng)進(jìn)化到了“通用圖像分割”的框架,可以解決任何圖像分割任務(wù)。有趣的是,這些通用模型全都采取了“掩膜分類”的范式,徹底拋棄了“像素級分類”這一方法。下圖就展示了 Mask2Former 的網(wǎng)絡(luò)結(jié)構(gòu) (圖像取自 下列論文)。

  • Mask2Former:
    https://hf.co/docs/transformers/main/model_doc/mask2former

  • 論文地址:
    https://arxiv.org/abs/2112.01527

簡短來說,一張圖片首先被送入骨干網(wǎng)絡(luò) (backbone) 里面來獲取一系列,在論文中,骨干網(wǎng)絡(luò)既可以是 ResNet 也可以是 Swin Transformer。接下來,這些特征圖會被一個叫做 Pixel Decoder 的模塊增強(qiáng)成為高分辨率特征圖。最終,一個 transformer 的解碼器會接收一系列的 query,基于上一步得到的特征,把它們轉(zhuǎn)換成一些列二元掩膜和分類預(yù)測。

  • ResNet 文檔鏈接:
    https://hf.co/docs/transformers/model_doc/resnet

  • Swin Transformer:
    https://hf.co/docs/transformers/model_doc/swin

需要注意的是,MasksFormer 仍然需要在每個單獨的任務(wù)上訓(xùn)練來獲取領(lǐng)先的結(jié)果。這一點被 OneFormer 進(jìn)行了改進(jìn),并通過在全景數(shù)據(jù)集上訓(xùn)練,達(dá)到了領(lǐng)先水平。OneFormer 增加了一個文本編碼器 (text encoder),使得模型有了一個基于文本條件 (實例、語義或全景) 的輸入。該模型已經(jīng)收錄入 ?? Transformers 之中,比 Mask2Former 更準(zhǔn)確,但由于文本編碼器的引入,所以速度略慢。下圖展示了 OneFormer 的基本結(jié)構(gòu),它使用 Swin Transformer 或 DiNAT 作為骨干網(wǎng)絡(luò)。

  • OneFormer 論文地址:
    https://arxiv.org/abs/2211.06220

  • ?? Transformers:
    https://hf.co/docs/transformers/main/en/model_doc/oneformer

  • DiNAT 文檔鏈接:
    https://hf.co/docs/transformers/model_doc/dinat

使用 Transformers 庫中的 Mask2Former 和 OneFormer 進(jìn)行推理

使用 Mask2Former 和 OneFormer 方法相當(dāng)直接,而且和它們的前身 MaskFormer 非常相似。我們這里從 Hub 中使用一個在 COCO 全景數(shù)據(jù)集上訓(xùn)練的一個模型來實例化一個 Mask2Former 以及對應(yīng)的 processor。需要注意的是,在不同數(shù)據(jù)集上訓(xùn)練出來的 checkpoints 已經(jīng)公開,數(shù)量不下 30 個。

  • Mask2Former 模型一覽:
    https://hf.co/models?other=mask2former


然后我們從 COCO 數(shù)據(jù)集中找出一張貓的圖片,用它來進(jìn)行推理。

我們使用 processor 處理原始圖片,然后送入模型進(jìn)行前向推理。

模型輸出了一系列二元掩膜以及對應(yīng)類別的 logit。Mask2Former 的原始輸出還可以使用 processor 進(jìn)行處理,來得到最終的實例、語義或全景分割結(jié)果:

在全景分割中,最終的 prediction 包含兩樣?xùn)|西: 一個是形狀為 (height, width) 的 segmentation 圖,里面針對每一個像素都給出了編碼實例 ID 的值; 另一個是與之對應(yīng)的 segments_info,包含了不同分割區(qū)域的更多信息 (比如類別、類別 ID 等)。需要注意的是,為了高效,Mask2Former 輸出的二元掩碼的形狀是 (96, 96) 的,我們需要用 target_sizes 來改變尺寸,使得這個掩膜和原始圖片尺寸一致。

將結(jié)果可視化出來:

可以看到,模型區(qū)分開了不同的貓和遙控器。相比較而言,語義分割只會為“貓”這一種類創(chuàng)建一個單一的掩膜。

如果你想試試 OneFormer,它和 Mask2Former 的 API 幾乎一樣,只不過多了一個文本提示的輸入; 可以參考這里的 demo notebook。

  • 演示 notebook 地址:
    https://github.com/NielsRogge/Transformers-Tutorials/tree/master/OneFormer

使用 transformers 微調(diào) Mask2Former 和 OneFormer

讀者可以參考這里的 demo notebooks 來在自定義的實例、語義或全景分割數(shù)據(jù)集上微調(diào) Mask2Former 或 OneFormer 模型。MaskFormer、Mask2Former 和 OneFormer 都有著相似的 API,所以基于 MaskFormer 進(jìn)行改進(jìn)十分方便、需要的修改很少。

  • 演示 notebook 地址:
    https://github.com/NielsRogge/Transformers-Tutorials/tree/master/MaskFormer/Fine-tuning

在上述 notebooks 中,都是使用 MaskFormerForInstanceSegmentation 來加載模型,而你需要換成使用 Mask2FormerForUniversalSegmentation 或 OneFormerForUniversalSegmentation。對于 Mask2Former 中的圖像處理,你也需要使用 Mask2FormerImageProcessor。你也可以使用 AutoImageProcessor 來自動地加載適合你的模型的 processor。OneFormer 則需要使用 OneFormerProcessor,因為它不僅預(yù)處理圖片,還需要處理文字。

總結(jié)

總的來說就這些內(nèi)容!你現(xiàn)在知道實例分割、語義分割以及全景分割都有什么不同了,你也知道如何使用 ?? Transformers 中的 Mask2Former 和 OneFormer 之類的“通用架構(gòu)”了。

  • ?? Transformers 文檔:
    https://hf.co/transformers

我們希望你喜歡本文并學(xué)有所學(xué)。如果你微調(diào)了 Mask2Former 或 OneFormer,也請讓我們知道你是否對結(jié)果足夠滿意。

如果想深入學(xué)習(xí),我們推薦以下資源:

  • 我們針對 MaskFormer, Mask2Former and OneFormer, 推出的 demo notebooks,將會給出更多關(guān)于推理 (包括可視化) 和微調(diào)的知識。
    https://github.com/NielsRogge/Transformers-Tutorials/blob/master/MaskFormer
    https://github.com/NielsRogge/Transformers-Tutorials/blob/master/Mask2Former
    https://github.com/NielsRogge/Transformers-Tutorials/blob/master/OneFormer

  • 在 Hugging Face Hub 上, Mask2Former 和 OneFormer 的 live demo spaces,可以讓你快速用自己的輸入數(shù)據(jù)嘗試不同模型。
    https://huggingface.co/spaces/shivi/mask2former-demo
    https://huggingface.co/spaces/shi-labs/OneFormer

原文鏈接:https://hf.co/blog/mask2former

作者: Niels Rogge、Shivalika Singh、Alara Dirik

譯者: Hoi2022

審校、排版: zhongdongy (阿東)


通用圖像分割任務(wù):使用 Mask2Former 和 OneFormer的評論 (共 條)

分享到微博請遵守國家法律
安宁市| 胶州市| 兰州市| 柯坪县| 改则县| 鄂托克旗| 曲周县| 大连市| 宁强县| 康乐县| 建湖县| 河津市| 辉南县| 康马县| 长汀县| 团风县| 肇庆市| 灌云县| 眉山市| 墨江| 九龙坡区| 鄂伦春自治旗| 灵台县| 磐安县| 禄丰县| 恩施市| 沂南县| 凤山县| 科技| 泾阳县| 惠安县| 云安县| 玛多县| 五原县| 上虞市| 宜川县| 六盘水市| 神农架林区| 祁连县| 上犹县| 南通市|