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

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò))

這篇具有很好參考價值的文章主要介紹了【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、前言

如何快速搭建圖像分割網(wǎng)絡(luò)? 要手寫把backbone ,手寫decoder 嗎? 介紹一個分割神器,分分鐘搭建一個分割網(wǎng)絡(luò)。

倉庫的地址:

https://github.com/qubvel/segmentation_models.pytorch

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò)),計算機視覺,計算機視覺,pytorch,網(wǎng)絡(luò),圖像分割,encoder
該庫的主要特點是:

  • 高級 API(只需兩行即可創(chuàng)建神經(jīng)網(wǎng)絡(luò))
  • 用于二元和多類分割的 9 種模型架構(gòu)(包括傳奇的 Unet) 124 個可用編碼器(以及 timm 的 500 多個編碼器)
  • 所有編碼器都有預(yù)先訓(xùn)練的權(quán)重,以實現(xiàn)更快更好的收斂
  • 訓(xùn)練例程的流行指標(biāo)和損失

二、快速引入—使用 SMP 創(chuàng)建您的第一個分割模型

分割模型只是一個 PyTorch nn.Module,創(chuàng)建起來很簡單:

import segmentation_models_pytorch as smp

model = smp.Unet(
    encoder_name="resnet34",        # choose encoder, e.g. mobilenet_v2 or efficientnet-b7
    encoder_weights="imagenet",     # use `imagenet` pre-trained weights for encoder initialization
    in_channels=1,                  # model input channels (1 for gray-scale images, 3 for RGB, etc.)
    classes=3,                      # model output channels (number of classes in your dataset)
)

三、Architectures

我們可以用到的 model 有:

  • Unet
  • Unet++
  • MAnet
  • Linknet
  • FPN
  • PSPNet
  • PAN
  • DeepLabV3
  • DeepLabV3+

3.1 UNet

UNet是一種常用于圖像分割任務(wù)的深度學(xué)習(xí)架構(gòu)。它由Olaf Ronneberger、Philipp Fischer和Thomas Brox于2015年在他們的論文《U-Net: Convolutional Networks for Biomedical Image Segmentation》中提出。

UNet的名字來自其U形的網(wǎng)絡(luò)結(jié)構(gòu)。它的設(shè)計目標(biāo)是從輸入圖像中捕獲低層次和高層次特征,然后利用這些信息生成像素級別的分割掩碼。UNet在醫(yī)學(xué)圖像分析中特別受歡迎,因為它對于分割器官、腫瘤和其他感興趣的結(jié)構(gòu)非常有效。

UNet架構(gòu)主要由兩個部分組成:

  1. 收縮路徑:該部分類似于典型的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),包含多個卷積和池化層。它被稱為"收縮路徑",因為每個卷積層減小空間維度,同時增加特征通道數(shù)量。

  2. 擴展路徑:該部分涉及將特征映射進行上采樣,恢復(fù)原始空間維度。它被稱為"擴展路徑",因為它增加空間維度,同時減少特征通道數(shù)量。

在U形架構(gòu)的中心,有一個瓶頸層,它保留了局部和全局的上下文信息。

收縮路徑和擴展路徑是對稱的,并通過跳躍連接相連接。這些跳躍連接有助于在上采樣過程中保留細(xì)粒度的空間信息,使UNet特別適合圖像分割任務(wù)。

在原始的UNet論文中,作者將該架構(gòu)應(yīng)用于生物醫(yī)學(xué)圖像分割任務(wù),例如在電子顯微鏡數(shù)據(jù)中分割神經(jīng)結(jié)構(gòu)。然而,自那時以來,UNet架構(gòu)已廣泛應(yīng)用于其他領(lǐng)域的圖像分割任務(wù),如自然圖像、衛(wèi)星圖像等。

由于其有效性,UNet已成為各種擴展和改進的基礎(chǔ),并且在深度學(xué)習(xí)領(lǐng)域仍然是圖像分割任務(wù)的熱門選擇。

3.2 UNet++

Unet++是對UNet進行改進和擴展的深度學(xué)習(xí)架構(gòu)。它是由Zhou et al.于2018年在論文《UNet++: A Nested U-Net Architecture for Medical Image Segmentation》中提出的。

Unet++在原始UNet的基礎(chǔ)上增加了一些重要的結(jié)構(gòu)來提高圖像分割的性能。主要的改進是引入了多層級的嵌套結(jié)構(gòu),使得模型能夠更好地捕獲不同尺度下的特征信息。以下是Unet++的主要特點:

  1. 多層級嵌套:Unet++采用了一種層級嵌套的結(jié)構(gòu),將UNet的每個階段進行進一步細(xì)分。這樣可以在不同的階段獲取更多的細(xì)節(jié)和語義信息,從而提高了分割的準(zhǔn)確性。

  2. 密集跳躍連接:Unet++引入了密集的跳躍連接,將不同層級的特征圖進行融合。這樣可以使低層級的特征圖能夠直接參與到高層級的特征表示中,有助于更好地整合多尺度的信息。

  3. 自適應(yīng)選擇性上采樣:在Unet++的解碼器部分,采用了自適應(yīng)選擇性上采樣技術(shù),根據(jù)不同特征圖的重要性進行選擇性地上采樣。這樣可以減少計算量,并且避免了不必要的信息傳遞。

通過這些改進,Unet++在醫(yī)學(xué)圖像分割等任務(wù)中取得了較好的性能,相對于原始UNet,它能夠更準(zhǔn)確地定位和分割感興趣的目標(biāo)結(jié)構(gòu)。

需要注意的是,自從Unet++的提出以來,還可能有其他進一步的改進和擴展,因為深度學(xué)習(xí)領(lǐng)域一直在不斷發(fā)展和演進。

3.3 FPN

**FPN是"Feature Pyramid Network" 的縮寫,是一種用于目標(biāo)檢測和語義分割任務(wù)的深度學(xué)習(xí)架構(gòu)。它由Tsung-Yi Lin、Piotr Dollár、Ross Girshick和Kaiming He于2017年在論文《Feature Pyramid Networks for Object Detection》中提出。

FPN的目標(biāo)是解決多尺度信息的問題。在許多計算機視覺任務(wù)中,目標(biāo)可能在圖像的不同尺度下出現(xiàn),而且較小的目標(biāo)可能在較低層級的特征圖中丟失細(xì)節(jié)。FPN通過構(gòu)建特征金字塔來解決這個問題。

FPN的主要思想是將不同層級的特征圖進行融合,以提取多尺度的特征信息。它包含以下主要組件:

  • 底層特征:從卷積神經(jīng)網(wǎng)絡(luò)的底層獲得的特征圖。這些特征圖具有高分辨率但缺乏語義信息。
  • 頂層特征:從網(wǎng)絡(luò)的頂層獲得的特征圖。這些特征圖具有較低的分辨率但包含豐富的語義信息。

FPN的構(gòu)建過程如下:

  1. 首先,通過一個卷積層,將頂層特征圖的通道數(shù)降低,使其與底層特征圖的通道數(shù)相同。

  2. 然后,將降低通道數(shù)的頂層特征圖與底層特征圖相加,產(chǎn)生一組新的特征圖,這些特征圖在不同的層級上融合了多尺度的信息。

  3. 接下來,將融合后的特征圖通過上采樣操作(通常使用插值方法)增加分辨率,得到高分辨率的多尺度特征金字塔。

FPN的特征金字塔允許目標(biāo)檢測器或分割器在不同尺度下檢測或分割目標(biāo),從而顯著提高了算法的性能。由于其有效性和簡單性,F(xiàn)PN已成為許多目標(biāo)檢測和語義分割任務(wù)的常用組件,并被廣泛應(yīng)用于許多深度學(xué)習(xí)模型中。

3.4 DeepLabV3

DeepLabV3是用于圖像語義分割的深度學(xué)習(xí)模型,由Google于2018年推出。它是DeepLab系列模型的第三個版本,是對前兩個版本的改進和擴展。

DeepLabV3的目標(biāo)是對輸入圖像的每個像素進行分類,將每個像素標(biāo)記為屬于不同類別的某個目標(biāo)或背景。該模型在圖像分割任務(wù)中取得了很好的性能,尤其在細(xì)粒度的分割和邊界細(xì)化方面表現(xiàn)出色。

主要的改進點包括:

  1. 空洞卷積(Atrous Convolution):DeepLabV3引入了空洞卷積來增大感受野,允許模型在保持計算效率的同時,獲取更大范圍的上下文信息。這有助于識別更大和更細(xì)微的目標(biāo)。

  2. 多尺度信息融合:為了解決多尺度信息的問題,DeepLabV3使用了多尺度空洞卷積,將不同尺度的信息進行融合,從而提高了模型的語義分割性能。

  3. 引入特征金字塔池化(ASPP):ASPP模塊進一步增加了感受野,幫助模型更好地理解圖像中的上下文信息。ASPP模塊由一組并行的空洞卷積層組成,每個卷積層的空洞率不同,從而捕獲不同尺度的信息。

  4. 使用深度可分離卷積:為了減少模型的參數(shù)量和計算量,DeepLabV3采用了深度可分離卷積,這是一種將標(biāo)準(zhǔn)卷積分解為深度卷積和逐點卷積的方法。

DeepLabV3模型在PASCAL VOC 2012和Cityscapes等圖像分割數(shù)據(jù)集上取得了顯著的性能提升,成為當(dāng)時圖像語義分割領(lǐng)域的先進模型。其優(yōu)秀的性能使得DeepLabV3被廣泛應(yīng)用于許多圖像分割任務(wù),特別是在需要準(zhǔn)確分割細(xì)節(jié)的場景中。

四、Encoders

以下是 SMP 中支持的編碼器列表。 選擇適當(dāng)?shù)木幋a器系列,然后單擊展開表格并選擇特定的編碼器及其預(yù)訓(xùn)練權(quán)重(encoder_name 和encoder_weights 參數(shù))。

  1. ResNet
  2. ResNeXt
  3. ResNeSt
  4. Res2Ne(X)t
  5. RegNet(x/y)
  6. GERNet
  7. SE-Net
  8. SK-ResNe(X)t
  9. DenseNet
  10. Inception
  11. EfficientNet
  12. MobileNet
  13. DPN
  14. VGG
  15. Mix Vision Transformer
  16. MobileOne

我這里只展示其中一個,以 ResNet 為例:

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò)),計算機視覺,計算機視覺,pytorch,網(wǎng)絡(luò),圖像分割,encoder

更多權(quán)重詳見我的kaggle數(shù)據(jù)集:

https://www.kaggle.com/datasets/holmes0610/pretrained-resnet-resnext

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò)),計算機視覺,計算機視覺,pytorch,網(wǎng)絡(luò),圖像分割,encoder

https://www.kaggle.com/datasets/holmes0610/timm-pretrained

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò)),計算機視覺,計算機視覺,pytorch,網(wǎng)絡(luò),圖像分割,encoder
Pytorch 圖像模型(又名 timm)有很多預(yù)訓(xùn)練模型和接口,允許使用這些模型作為 smp 中的編碼器,但是,并非所有模型都受支持。

  • 并非所有 Transformer 模型都實現(xiàn)了編碼器所需的 features_only 功能
  • 一些模型的步幅不合適

支持的編碼器總數(shù):549

https://smp.readthedocs.io/en/latest/encoders_timm.html

【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò)),計算機視覺,計算機視覺,pytorch,網(wǎng)絡(luò),圖像分割,encoder
這個網(wǎng)址里面總結(jié)了所有可用的 Encoders。

五、Models API

  • model.encoder:預(yù)訓(xùn)練主干提取不同空間分辨率的特征
  • model.decoder:取決于模型架構(gòu)(Unet / Linknet / PSPNet / FPN)
  • model.segmentation_head:最后一個塊產(chǎn)生所需數(shù)量的掩模通道(還包括可選的上采樣和激活)
  • model.classification_head:在編碼器頂部創(chuàng)建分類頭的可選塊
  • model.forward(x):按順序?qū)?x 通過模型的編碼器、解碼器和分段頭(以及分類頭,如果指定)

六、安裝

PyPI version:

pip install segmentation-models-pytorch

Latest version from source:文章來源地址http://www.zghlxwxcb.cn/news/detail-630510.html

pip install git+https://github.com/qubvel/segmentation_models.pytorch

到了這里,關(guān)于【計算機視覺】干貨分享:Segmentation model PyTorch(快速搭建圖像分割網(wǎng)絡(luò))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包