1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用PyTorch進(jìn)行語(yǔ)義分割

        共 4904字,需瀏覽 10分鐘

         ·

        2022-06-13 13:06

        點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        木易 發(fā)自 凹非寺 
        量子位 報(bào)道 | 公眾號(hào) QbitAI

        很久沒(méi)給大家?guī)?lái)教程資源啦。

        正值PyTorch 1.7更新,那么我們這次便給大家?guī)?lái)一個(gè)PyTorch簡(jiǎn)單實(shí)用的教程資源:用PyTorch進(jìn)行語(yǔ)義分割。

        圖源:stanford

        該教程是基于2020年ECCV Vipriors Chalange Start Code實(shí)現(xiàn)了語(yǔ)義分割,并且添加了一些技巧。

        友情提示:教程中的所有文件均可以在文末的開(kāi)源地址獲取。

        預(yù)設(shè)置

        在開(kāi)始訓(xùn)練之前,得首先設(shè)置一下庫(kù)、數(shù)據(jù)集等。

        庫(kù)準(zhǔn)備

        pip install -r requirements.txt

        下載數(shù)據(jù)集

        教程使用的是來(lái)自Cityscapes的數(shù)據(jù)集MiniCity Dataset。

        數(shù)據(jù)集的簡(jiǎn)單數(shù)據(jù)分析

        將各基準(zhǔn)類(lèi)別進(jìn)行輸入:

        之后,便從0-18計(jì)數(shù),對(duì)各類(lèi)別進(jìn)行像素標(biāo)記:

        使用deeplab v3進(jìn)行基線(xiàn)測(cè)試,結(jié)果發(fā)現(xiàn)次要類(lèi)別的IoU特別低,這樣會(huì)導(dǎo)致難以跟背景進(jìn)行區(qū)分。

        如下圖中所示的墻、柵欄、公共汽車(chē)、火車(chē)等。

        分析結(jié)論:數(shù)據(jù)集存在嚴(yán)重的類(lèi)別不平衡問(wèn)題。

        訓(xùn)練基準(zhǔn)模型

        使用來(lái)自torchvision的DeepLabV3進(jìn)行訓(xùn)練。

        硬件為4個(gè)RTX 2080 Ti GPU (11GB x 4),如果只有1個(gè)GPU或較小的GPU內(nèi)存,請(qǐng)使用較小的批處理大小(< = 8)。

        python baseline.py --save_path baseline_run_deeplabv3_resnet50 --crop_size 576 1152 --batch_size 8;
        python baseline.py --save_path baseline_run_deeplabv3_resnet101 --model DeepLabv3_resnet101 --train_size 512 1024 --test_size 512 1024 --crop_size 384 768 --batch_size 8;

        損失函數(shù)

        有3種損失函數(shù)可供選擇,分別是:交叉熵?fù)p失函數(shù)(Cross-Entropy Loss)、類(lèi)別加權(quán)交叉熵?fù)p失函數(shù)(Class-Weighted Cross Entropy Loss)和焦點(diǎn)損失函數(shù)(Focal Loss)。

        交叉熵?fù)p失函數(shù),常用在大多數(shù)語(yǔ)義分割場(chǎng)景,但它有一個(gè)明顯的缺點(diǎn),那就是對(duì)于只用分割前景和背景的時(shí)候,當(dāng)前景像素的數(shù)量遠(yuǎn)遠(yuǎn)小于背景像素的數(shù)量時(shí),模型嚴(yán)重偏向背景,導(dǎo)致效果不好。

        # Cross Entropy Loss
        python baseline.py --save_path baseline_run_deeplabv3_resnet50 --crop_size 576 1152 --batch_size 8;

        類(lèi)別加權(quán)交叉熵?fù)p失函數(shù)是在交叉熵?fù)p失函數(shù)的基礎(chǔ)上為每一個(gè)類(lèi)別添加了一個(gè)權(quán)重參數(shù),使其在樣本數(shù)量不均衡的情況下可以獲得更好的效果。

        # Weighted Cross Entropy Loss
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_wce --crop_size 576 1152 --batch_size 8 --loss weighted_ce;

        焦點(diǎn)損失函數(shù)則更進(jìn)一步,用來(lái)解決難易樣本數(shù)量不平衡。

        # Focal Loss
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_focal --crop_size 576 1152 --batch_size 8 --loss focal --focal_gamma 2.0;

        歸一化層

        有4種歸一化方法:BN(Batch Normalization)、IN(Instance Normalization)、GN(Group Normalization)和EvoNorm(Evolving Normalization)。

        BN是在batch上,對(duì)N、H、W做歸一化,而保留通道 C 的維度。BN對(duì)較小的batch size效果不好。

        # Batch Normalization
        python baseline.py --save_path baseline_run_deeplabv3_resnet50 --crop_size 576 1152 --batch_size 8;

        IN在圖像像素上,對(duì)H、W做歸一化,用在風(fēng)格化遷移。

        # Instance Normalization
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_instancenorm --crop_size 576 1152 --batch_size 8 --norm instance;

        GN將通道分組,然后再做歸一化。

        # Group Normalization
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_groupnorm --crop_size 576 1152 --batch_size 8 --norm group;

        EvoNorm則是4月份由谷歌和DeepMind 聯(lián)合發(fā)布的一項(xiàng)新技術(shù)。實(shí)驗(yàn)證明,EvoNorms 在多個(gè)圖像分類(lèi)模型上效果顯著,而且還能很好地遷移到 Mask R-CNN 模型和 BigGAN。

        # Evolving Normalization
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_evonorm --crop_size 576 1152 --batch_size 8 --norm evo;

        數(shù)據(jù)增強(qiáng)

        2種數(shù)據(jù)增強(qiáng)技術(shù):CutMix、Copy Blob。

        • CutMix

        將一部分區(qū)域cut掉但不填充0像素,而是隨機(jī)填充訓(xùn)練集中的其他數(shù)據(jù)的區(qū)域像素值,分類(lèi)結(jié)果按一定的比例分配。

        而在這里,則是在原有CutMix的基礎(chǔ)上,引入了語(yǔ)義分割。

        # CutMix Augmentation
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_cutmix --crop_size 576 1152 --batch_size 8 --cutmix;
        • Copy Blob

        在 Blob 存儲(chǔ)的基礎(chǔ)上構(gòu)建,并通過(guò)Copy的方式增強(qiáng)了性能。

        另外,如果要解決前面所提到的類(lèi)別不平衡問(wèn)題,則可以使用視覺(jué)歸納優(yōu)先的CopyBlob進(jìn)行增強(qiáng)。

        # CopyBlob Augmentation
        python baseline.py --save_path baseline_run_deeplabv3_resnet50_copyblob --crop_size 576 1152 --batch_size 8 --copyblob;

        推理

        訓(xùn)練結(jié)束后,對(duì)訓(xùn)練完成的模型進(jìn)行評(píng)估。

        python baseline.py --save_path baseline_run_deeplabv3_resnet50 --batch_size 4 --predict;

        多尺度推斷

        使用[0.5,0.75,1.0,1.25,1.5,1.75,2.0,2.2]進(jìn)行多尺度推理。另外,使用H-Flip,同時(shí)必須使用單一批次。

        # Multi-Scale Inference
        python baseline.py --save_path baseline_run_deeplabv3_resnet50 --batch_size 1 --predict --mst;

        使用驗(yàn)證集計(jì)算度量

        計(jì)算指標(biāo)并將結(jié)果保存到results.txt中。

        python evaluate.py --results baseline_run_deeplabv3_resnet50/results_val --batch_size 1 --predict --mst;

        最終結(jié)果

        最后的單一模型結(jié)果是0.6069831962012341,

        如果使用了更大的模型或者更大的網(wǎng)絡(luò)結(jié)構(gòu),性能可能會(huì)有所提高。

        另外,如果使用了各種集成模型,性能也會(huì)有所提高。

        資源地址:
        https://github.com/hoya012/semantic-segmentation-tutorial-pytorch

        好消息!

        小白學(xué)視覺(jué)知識(shí)星球

        開(kāi)始面向外開(kāi)放啦??????




        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線(xiàn)檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線(xiàn)、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 76
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            女人把脚张来开让男人桶 | 男男h双腿涨灌play慎入动漫 | 国产在线91在线电影 | 狠狠操综合网 | 白嫩白嫩国产精品 | 美女让男人操 | 亚洲精品午夜国产va久久成人 | 黄色在线不卡 | 男人操女人视频软件 | 欧洲激情网|