0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在一個(gè)很小的Pascal VOC數(shù)據(jù)集上訓(xùn)練一個(gè)實(shí)例分割模型

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 作者:Kayo Yin ? 2020-12-26 11:26 ? 次閱讀

只使用1349張圖像訓(xùn)練Mask-RCNN,有代碼。

代碼:https://github.com/kayoyin/tiny-inst-segmentation

介紹

計(jì)算機(jī)視覺的進(jìn)步帶來了許多有前途的應(yīng)用,如自動駕駛汽車或醫(yī)療診斷。在這些任務(wù)中,我們依靠機(jī)器的能力來識別物體。

我們經(jīng)常看到的與目標(biāo)識別相關(guān)的任務(wù)有4個(gè):分類和定位、目標(biāo)檢測、語義分割和實(shí)例分割。

在分類和定位中,我們感興趣的是為圖像中目標(biāo)的分配類標(biāo)簽,并在目標(biāo)周圍繪制一個(gè)包圍框。在這個(gè)任務(wù)中,要檢測的目標(biāo)數(shù)量是固定的。

物體檢測不同于分類和定位,因?yàn)檫@里我們沒有預(yù)先假設(shè)圖像中物體的數(shù)量。我們從一組固定的目標(biāo)類別開始,我們的目標(biāo)是分配類標(biāo)簽,并在每次這些類別中的一個(gè)目標(biāo)出現(xiàn)在圖像中時(shí)繪制邊界框。

在語義分割中,我們?yōu)槊總€(gè)圖像像素分配一個(gè)類標(biāo)簽:所有屬于草的像素被標(biāo)記為“grass”,屬于羊的像素被標(biāo)記為“sheep”。值得注意的是,例如,這個(gè)任務(wù)不會對兩只羊產(chǎn)生區(qū)別。

我們的任務(wù)是實(shí)例分割,它建立在目標(biāo)檢測和語義分割之上。在目標(biāo)檢測中,我們的目標(biāo)是在預(yù)定義的類別中標(biāo)記和定位目標(biāo)的所有實(shí)例。但是,我們沒有為檢測到的目標(biāo)生成邊界框,而是進(jìn)一步識別哪些像素屬于該目標(biāo),就像語義分割一樣。與語義分割不同的是,實(shí)例分割為每個(gè)目標(biāo)實(shí)例繪制一個(gè)單獨(dú)的掩碼,而語義分割將為同一類的所有實(shí)例使用相同的掩碼。

在本文中,我們將在一個(gè)很小的Pascal VOC數(shù)據(jù)集上訓(xùn)練一個(gè)實(shí)例分割模型,其中只有1349張圖像用于訓(xùn)練,100張圖像用于測試。這里的主要挑戰(zhàn)是在不使用外部數(shù)據(jù)的情況下防止模型過擬合。

數(shù)據(jù)處理

標(biāo)注采用COCO格式,因此我們可以使用pycocotools中的函數(shù)來檢索類標(biāo)簽和掩碼。在這個(gè)數(shù)據(jù)集中,共有20個(gè)類別。

cb474dc4-4698-11eb-8b86-12bb97331649.png

下面是一些訓(xùn)練圖像和相關(guān)mask的可視化顯示。mask的不同陰影表示同一目標(biāo)類別的多個(gè)實(shí)例的不同掩碼。

圖像的大小和長寬比各不相同,因此在將圖像輸入模型之前,我們調(diào)整每個(gè)圖像的尺寸500x500。當(dāng)圖像尺寸小于500時(shí),我們對圖像進(jìn)行優(yōu)化,使最大邊的長度為500,并添加必要的零以獲得正方形圖像。

為了使模型能夠很好地泛化,特別是在這樣一個(gè)有限的數(shù)據(jù)集上,數(shù)據(jù)增強(qiáng)是克服過擬合的關(guān)鍵。對于每一個(gè)圖像,以0.5的概率水平翻轉(zhuǎn),以0.9到1倍的尺度進(jìn)行隨機(jī)剪裁,以0.5的概率進(jìn)行高斯模糊,標(biāo)準(zhǔn)差為隨機(jī),對比度隨機(jī)調(diào)整尺度為0.75和1.5之間,亮度隨機(jī)調(diào)整尺度在0.8和1.2之間,以及一系列隨機(jī)仿射變換如縮放、平移、旋轉(zhuǎn),剪切。

Mask-RCNN

我們使用matterport實(shí)現(xiàn)的Mask-RCNN進(jìn)行訓(xùn)練。雖然結(jié)果可能會很好看,但我們不會用MS COCO的預(yù)訓(xùn)練權(quán)重來展示我們?nèi)绾沃挥?349張訓(xùn)練圖像就能得到好的結(jié)果。

Mask-RCNN是在2017年Mask-RCNN論文中提出的,是同一作者對Faster-RCNN的擴(kuò)展。Faster-RCNN被廣泛應(yīng)用于目標(biāo)檢測,模型在被檢測物體周圍生成包圍盒。Mask-RCNN進(jìn)一步生成了目標(biāo)的mask 。

我將在下面簡要介紹模型體系結(jié)構(gòu)。

首先,我們使用一個(gè)主干模型從輸入圖像中提取相關(guān)的特征。在這里,我們使用ResNet101架構(gòu)作為骨干。圖像由張量(500,500,3)轉(zhuǎn)換為特征圖(32,32,2048)。

然后將之前獲得的特征輸入到一個(gè)區(qū)域建議網(wǎng)絡(luò)(RPN)中。RPN掃描feature map的區(qū)域,稱為anchors,并嘗試確定包含目標(biāo)的區(qū)域。這些anchor的尺寸和縱橫比各不相同。RPN為每個(gè)anchor分配一個(gè)類別:前景(正樣本anchor)或背景(負(fù)樣本anchor)。中性anchor是指不影響訓(xùn)練的anchor。

正樣本anchors(左),中性anchors(中),負(fù)樣本anchors(右)

建議層然后挑選最有可能包含目標(biāo)的anchor,并優(yōu)化anchor框以更接近目標(biāo)。當(dāng)太多anchor點(diǎn)重疊時(shí),只保留前景分?jǐn)?shù)最高的那個(gè)(非最大抑制)。這樣,我們就得到了感興趣的區(qū)域(ROI)。

對于每個(gè)由ROI分類器選中的目標(biāo)區(qū)域,模型生成28x28的mask。在訓(xùn)練過程中,將 ground truth mask縮小,用預(yù)測的mask計(jì)算損失,在推理過程中,將生成的mask放大到ROI的邊界框大小。

遷移學(xué)習(xí)

特別是在數(shù)據(jù)有限的情況下,更快更好地訓(xùn)練模型的關(guān)鍵是遷移學(xué)習(xí)。Imagenet數(shù)據(jù)集是一個(gè)巨大的自然圖像語料庫,類似于我們的圖像。因此,我們可以將Resnet101骨干模型的權(quán)值初始化為在Imagenet上預(yù)先訓(xùn)練的權(quán)值。這將提高我們得到的特征圖的準(zhǔn)確性,從而提高整個(gè)模型。

為了微調(diào)在Imagenet上預(yù)訓(xùn)練的模型,我們首先只訓(xùn)練model heads。然后我們在剩下的epochs中訓(xùn)練從ResNet level 4和以上的層。這個(gè)訓(xùn)練方案也有助于最小化過擬合。我們可以不去微調(diào)第一層,因?yàn)槲覀兛梢灾赜媚P蛷淖匀粓D像中提取特征的權(quán)重。

結(jié)果 & 檢測pipeline可視化

我們的測試集上獲得的mAP為0. 53650。下面是隨機(jī)選擇測試圖像的模型輸出的一些可視化結(jié)果:

我們還可以看到算法不同步驟的輸出。下面,我們有在邊界框細(xì)化之前的top anchors的得分。

接下來,我們有了細(xì)化的邊界框和非最大抑制后的輸出。這些建議然后被輸入分類網(wǎng)絡(luò)。注意,在這里,我們有一些框框住了一些目標(biāo),比如標(biāo)志,這些目標(biāo)不屬于我們定義的目標(biāo)類別。

在建議區(qū)域上運(yùn)行分類網(wǎng)絡(luò),得到正樣本的檢測,生成類概率和邊界框回歸。

在得到邊界框并對其進(jìn)行細(xì)化后,實(shí)例分割模型為每個(gè)檢測到的目標(biāo)生成mask。mask是soft masks(具有浮點(diǎn)像素值),在訓(xùn)練時(shí)大小為28x28。

最后,預(yù)測的mask被調(diào)整為邊界框的尺寸,我們可以將它們覆蓋在原始圖像上以可視化最終的輸出。

英文原文:https://towardsdatascience.com/overcome-overfitting-during-instance-segmentation-with-mask-rcnn-32db91f400bc

責(zé)任編輯:xj

原文標(biāo)題:使用Mask-RCNN在實(shí)例分割應(yīng)用中克服過擬合

文章出處:【微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1690

    瀏覽量

    45876
  • mask
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2895

原文標(biāo)題:使用Mask-RCNN在實(shí)例分割應(yīng)用中克服過擬合

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AI大模型訓(xùn)練數(shù)據(jù)來源分析

    學(xué)術(shù)機(jī)構(gòu)、政府組織或企業(yè)公開發(fā)布,涵蓋了各種類型的數(shù)據(jù),如圖像、文本、音頻、視頻等。例如: ImageNet :個(gè)廣泛用于圖像識別任務(wù)的大規(guī)模圖像數(shù)據(jù)
    的頭像 發(fā)表于 10-23 15:32 ?180次閱讀

    如何訓(xùn)練自己的AI大模型

    訓(xùn)練自己的AI大模型個(gè)復(fù)雜且耗時(shí)的過程,涉及多個(gè)關(guān)鍵步驟。以下是個(gè)詳細(xì)的
    的頭像 發(fā)表于 10-23 15:07 ?142次閱讀

    如何訓(xùn)練個(gè)有效的eIQ基本分類模型

    在 MCX CPU和eIQ Neutron NPU。 eIQPortal它是個(gè)直觀的圖形用戶界面(GUI),簡化了ML開發(fā)。開發(fā)人員可以創(chuàng)建、優(yōu)化、調(diào)試和導(dǎo)出ML模型,以及導(dǎo)入
    的頭像 發(fā)表于 08-01 09:29 ?1631次閱讀
    如何<b class='flag-5'>訓(xùn)練</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>有效的eIQ基本分類<b class='flag-5'>模型</b>

    PyTorch中搭建個(gè)最簡單的模型

    PyTorch中搭建個(gè)最簡單的模型通常涉及幾個(gè)關(guān)鍵步驟:定義模型結(jié)構(gòu)、加載數(shù)據(jù)、設(shè)置損失函數(shù)
    的頭像 發(fā)表于 07-16 18:09 ?1516次閱讀

    20個(gè)數(shù)據(jù)可以訓(xùn)練神經(jīng)網(wǎng)絡(luò)嗎

    當(dāng)然可以,20個(gè)數(shù)據(jù)點(diǎn)對于訓(xùn)練個(gè)神經(jīng)網(wǎng)絡(luò)來說可能非常有限,但這并不意味著它們不能用于訓(xùn)練。實(shí)際
    的頭像 發(fā)表于 07-11 10:29 ?494次閱讀

    預(yù)訓(xùn)練模型的基本原理和應(yīng)用

    預(yù)訓(xùn)練模型(Pre-trained Model)是深度學(xué)習(xí)和機(jī)器學(xué)習(xí)領(lǐng)域中的個(gè)重要概念,尤其是自然語言處理(NLP)和計(jì)算機(jī)視覺(CV)
    的頭像 發(fā)表于 07-03 18:20 ?1857次閱讀

    PyTorch如何訓(xùn)練自己的數(shù)據(jù)

    PyTorch是個(gè)廣泛使用的深度學(xué)習(xí)框架,它以其靈活性、易用性和強(qiáng)大的動態(tài)圖特性而聞名。訓(xùn)練深度學(xué)習(xí)模型時(shí),
    的頭像 發(fā)表于 07-02 14:09 ?1005次閱讀

    【大語言模型:原理與工程實(shí)踐】大語言模型的預(yù)訓(xùn)練

    訓(xùn)練數(shù)據(jù)時(shí),數(shù)量、質(zhì)量和多樣性三者缺不可。 數(shù)據(jù)的多樣性對于大語言模型至關(guān)重要,這主要體現(xiàn)在數(shù)據(jù)
    發(fā)表于 05-07 17:10

    Harvard FairSeg:第一個(gè)用于醫(yī)學(xué)分割的公平性數(shù)據(jù)

    為了解決這些挑戰(zhàn),我們提出了第一個(gè)大規(guī)模醫(yī)學(xué)分割領(lǐng)域的公平性數(shù)據(jù), Harvard-FairSeg。該數(shù)據(jù)
    的頭像 發(fā)表于 01-25 16:52 ?472次閱讀
    Harvard FairSeg:第<b class='flag-5'>一個(gè)</b>用于醫(yī)學(xué)<b class='flag-5'>分割</b>的公平性<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    OpenCV4中聯(lián)通組件分析的個(gè)缺點(diǎn)

    最近別人給了我個(gè)生物數(shù)據(jù)分割的標(biāo)注數(shù)據(jù),讓我訓(xùn)練
    的頭像 發(fā)表于 01-04 15:51 ?387次閱讀
    OpenCV4中聯(lián)通組件分析的<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>缺點(diǎn)

    首個(gè)無需依賴SAM的高效像素級推理大模型PixelLM問世

    進(jìn)步,為了支持這研究領(lǐng)域的模型訓(xùn)練和評估,研究團(tuán)隊(duì)LVIS數(shù)據(jù)
    發(fā)表于 01-04 15:08 ?486次閱讀
    首個(gè)無需依賴SAM的高效像素級推理大<b class='flag-5'>模型</b>PixelLM問世

    Kaggle知識點(diǎn):訓(xùn)練神經(jīng)網(wǎng)絡(luò)的7個(gè)技巧

    訓(xùn)練神經(jīng)網(wǎng)絡(luò)的挑戰(zhàn)訓(xùn)練數(shù)據(jù)的新示例之間取得平衡。七個(gè)具體的技巧,可幫助您更快地
    的頭像 發(fā)表于 12-30 08:27 ?598次閱讀
    Kaggle知識點(diǎn):<b class='flag-5'>訓(xùn)練</b>神經(jīng)網(wǎng)絡(luò)的7<b class='flag-5'>個(gè)</b>技巧

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測

    Hello大家好,今天給大家分享下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估模型自定義的
    的頭像 發(fā)表于 12-22 11:07 ?688次閱讀
    如何基于深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)工件切割點(diǎn)位置預(yù)測

    如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測與圓心位置預(yù)測

    Hello大家好,今天給大家分享下如何基于深度學(xué)習(xí)模型訓(xùn)練實(shí)現(xiàn)圓檢測與圓心位置預(yù)測,主要是通過對YOLOv8姿態(tài)評估模型自定義的
    的頭像 發(fā)表于 12-21 10:50 ?1594次閱讀
    如何基于深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>實(shí)現(xiàn)圓檢測與圓心位置預(yù)測

    如何基于PaddlePaddle平臺訓(xùn)練并測試個(gè)視盤圖像分割的基本模型

    講講如何基于 PaddlePaddle 平臺,訓(xùn)練并測試個(gè)視盤圖像分割的基本模型。 1.準(zhǔn)備 為了實(shí)現(xiàn)這個(gè)實(shí)驗(yàn),Python 是必不可少的
    的頭像 發(fā)表于 11-01 09:20 ?867次閱讀
    如何基于PaddlePaddle平臺<b class='flag-5'>訓(xùn)練</b>并測試<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>視盤圖像<b class='flag-5'>分割</b>的基本<b class='flag-5'>模型</b>