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>

        從39個kaggle競賽中總結(jié)出來的圖像分割的Tips和Tricks

        共 5930字,需瀏覽 12分鐘

         ·

        2020-12-07 18:30

        ↑ 點擊藍字?關注極市平臺

        作者丨Derrick Mwiti
        來源丨AI公園
        編輯丨極市平臺

        極市導讀

        ?

        作者參加了39個Kaggle比賽,按照整個比賽的順序,總結(jié)了賽前數(shù)據(jù)的處理,模型的訓練,以及后處理等可以助力大家的tips和tricks,非常多的技巧和經(jīng)驗,現(xiàn)在全部分享給大家。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

        想象一下,如果你能得到所有的tips和tricks,你需要去參加一個Kaggle比賽。我已經(jīng)超過39個Kaggle比賽,包括:

        • Data Science Bowl 2017 – $1,000,000

        • Intel & MobileODT Cervical Cancer Screening – $100,000

        • 2018 Data Science Bowl – $100,000

        • Airbus Ship Detection Challenge – $60,000

        • Planet: Understanding the Amazon from Space – $60,000

        • APTOS 2019 Blindness Detection – $50,000

        • Human Protein Atlas Image Classification – $37,000

        • SIIM-ACR Pneumothorax Segmentation – $30,000

        • Inclusive Images Challenge – $25,000

        現(xiàn)在把這些知識都挖出來給你們!

        外部數(shù)據(jù)

        • 使用 LUng Node Analysis Grand Challenge 數(shù)據(jù),因為這個數(shù)據(jù)集包含了來自放射學的標注細節(jié)。

        • 使用 LIDC-IDRI 數(shù)據(jù),因為它具有找到了腫瘤的所有放射學的描述。

        • 使用Flickr CC,維基百科通用數(shù)據(jù)集

        • 使用Human Protein Atlas Dataset

        • 使用IDRiD數(shù)據(jù)集

        數(shù)據(jù)探索和直覺

        • 使用0.5的閾值對3D分割進行聚類

        • 確認在訓練集和測試集的標簽分布上有沒有不一樣的地方

        預處理

        • 使用DoG(Difference of Gaussian)方法進行blob檢測,使用skimage中的方法。

        • 使用基于patch的輸入進行訓練,為了減少訓練時間。

        • 使用cudf加載數(shù)據(jù),不要用Pandas,因為讀數(shù)據(jù)更快。

        • 確保所有的圖像具有相同的方向。

        • 在進行直方圖均衡化的時候,使用對比度限制。

        • 使用OpenCV進行通用的圖像預處理。

        • 使用自動化主動學習,添加手工標注。

        • 將所有的圖像縮放成相同的分辨率,可以使用相同的模型來掃描不同的厚度。

        • 將掃描圖像歸一化為3D的numpy數(shù)組。

        • 對單張圖像使用暗通道先驗方法進行圖像去霧。

        • 將所有圖像轉(zhuǎn)化成Hounsfield單位(放射學中的概念)。

        • 使用RGBY的匹配系數(shù)來找到冗余的圖像。

        • 開發(fā)一個采樣器,讓標簽更加的均衡。

        • 對測試圖像打偽標簽來提升分數(shù)。

        • 將圖像/Mask降采樣到320x480。

        • 直方圖均衡化(CLAHE)的時候使用kernel size為32×32

        • 將DCM轉(zhuǎn)化為PNG。

        • 當有冗余圖像的時候,為每個圖像計算md5 hash值。

        數(shù)據(jù)增強

        • 使用 albumentations 進行數(shù)據(jù)增強。

        • 使用隨機90度旋轉(zhuǎn)。

        • 使用水平翻轉(zhuǎn),上下翻轉(zhuǎn)。

        • 可以嘗試較大的幾何變換:彈性變換,仿射變換,樣條仿射變換,枕形畸變。

        • 使用隨機HSV。

        • 使用loss-less增強來進行泛化,防止有用的圖像信息出現(xiàn)大的loss。

        • 應用channel shuffling。

        • 基于類別的頻率進行數(shù)據(jù)增強。

        • 使用高斯噪聲。

        • 對3D圖像使用lossless重排來進行數(shù)據(jù)增強。

        • 0到45度隨機旋轉(zhuǎn)。

        • 從0.8到1.2隨機縮放。

        • 亮度變換。

        • 隨機變化hue和飽和度。

        • 使用D4:https://en.wikipedia.org/wiki/Dihedral_group增強。

        • 在進行直方圖均衡化的時候使用對比度限制。

        • 使用AutoAugment:https://arxiv.org/pdf/1805.09501.pdf增強策略。

        模型

        結(jié)構(gòu)

        • 使用U-net作為基礎結(jié)構(gòu),并調(diào)整以適應3D的輸入。

        • 使用自動化主動學習并添加人工標注。

        • 使用inception-ResNet v2 architecture結(jié)構(gòu)使用不同的感受野訓練特征。

        • 使用Siamese networks進行對抗訓練。

        • 使用_ResNet50_, Xception, Inception ResNet v2 x 5,最后一層用全連接。

        • 使用global max-pooling layer,無論什么輸入尺寸,返回固定長度的輸出。

        • 使用stacked dilated convolutions。

        • VoxelNet。

        • 在LinkNet的跳躍連接中將相加替換為拼接和conv1x1。

        • Generalized mean pooling。

        • 使用224x224x3的輸入,用Keras NASNetLarge從頭訓練模型。

        • 使用3D卷積網(wǎng)絡。

        • 使用ResNet152作為預訓練的特征提取器。

        • 將ResNet的最后的全連接層替換為3個使用dropout的全連接層。

        • 在decoder中使用轉(zhuǎn)置卷積。

        • 使用VGG作為基礎結(jié)構(gòu)。

        • 使用C3D網(wǎng)絡,使用adjusted receptive fields,在網(wǎng)絡的最后使用64 unit bottleneck layer 。

        • 使用帶預訓練權(quán)重的UNet類型的結(jié)構(gòu)在8bit RGB輸入圖像上提升收斂性和二元分割的性能。

        • 使用LinkNet,因為又快又省內(nèi)存。

        • MASKRCNN

        • BN-Inception

        • Fast Point R-CNN

        • Seresnext

        • UNet and Deeplabv3

        • Faster RCNN

        • SENet154

        • ResNet152

        • NASNet-A-Large

        • EfficientNetB4

        • ResNet101

        • GAPNet

        • PNASNet-5-Large

        • Densenet121

        • AC-GAN

        • XceptionNet (96), XceptionNet (299), Inception v3 (139), InceptionResNet v2 (299), DenseNet121 (224)

        • AlbuNet (resnet34) from ternausnets

        • SpaceNet

        • Resnet50 from selim_sef SpaceNet 4

        • SCSEUnet (seresnext50) from selim_sef SpaceNet 4

        • A custom Unet and Linknet architecture

        • FPNetResNet50 (5 folds)

        • FPNetResNet101 (5 folds)

        • FPNetResNet101 (7 folds with different seeds)

        • PANetDilatedResNet34 (4 folds)

        • PANetResNet50 (4 folds)

        • EMANetResNet101 (2 folds)

        • RetinaNet

        • Deformable R-FCN

        • Deformable Relation Networks

        硬件設置

        • Use of the AWS GPU instance p2.xlarge with a NVIDIA K80 GPU

        • Pascal Titan-X GPU

        • Use of 8 TITAN X GPUs

        • 6 GPUs: 2_1080Ti + 4_1080

        • Server with 8×NVIDIA Tesla P40, 256 GB RAM and 28 CPU cores

        • Intel Core i7 5930k, 2×1080, 64 GB of RAM, 2x512GB SSD, 3TB HDD

        • GCP 1x P100, 8x CPU, 15 GB RAM, SSD or 2x P100, 16x CPU, 30 GB RAM

        • NVIDIA Tesla P100 GPU with 16GB of RAM

        • Intel Core i7 5930k, 2×1080, 64 GB of RAM, 2x512GB SSD, 3TB HDD

        • 980Ti GPU, 2600k CPU, and 14GB RAM

        損失函數(shù)

        • Dice Coefficient ,因為在不均衡數(shù)據(jù)上工作很好。

        • Weighted boundary loss 目的是減少預測的分割和ground truth之間的距離。

        • MultiLabelSoftMarginLoss 使用one-versus-all損失優(yōu)化多標簽。

        • Balanced cross entropy (BCE) with logit loss 通過系數(shù)來分配正負樣本的權(quán)重。

        • Lovasz 基于sub-modular損失的convex Lovasz擴展來直接優(yōu)化平均IoU損失。

        • FocalLoss + Lovasz 將Focal loss和Lovasz losses相加得到。

        • Arc margin loss 通過添加margin來最大化人臉類別的可分性。

        • Npairs loss 計算y_true 和 y_pred之間的npairs損失。

        • 將BCE和Dice loss組合起來。

        • LSEP – 一種成對的排序損失,處處平滑因此容易優(yōu)化。

        • Center loss 同時學習每個類別的特征中心,并對距離特征中心距離太遠的樣本進行懲罰。

        • Ring Loss 對標準的損失函數(shù)進行了增強,如Softmax。

        • Hard triplet loss 訓練網(wǎng)絡進行特征嵌入,最大化不同類別之間的特征的距離。

        • 1 + BCE – Dice 包含了BCE和DICE損失再加1。

        • Binary cross-entropy – ?log(dice) 二元交叉熵減去dice loss的log。

        • BCE, dice和focal 損失的組合。

        • BCE + DICE - Dice損失通過計算平滑的dice系數(shù)得到。

        • Focal loss with Gamma 2 標準交叉熵損失的升級。

        • BCE + DICE + Focal – 3種損失相加。

        • Active Contour Loss 加入了面積和尺寸信息,并集成到深度學習模型中。

        • 1024 * BCE(results, masks) + BCE(cls, cls_target)

        • Focal + kappa – Kappa是一種用于多類別分類的損失,這里和Focal loss相加。

        • ArcFaceLoss?—? 用于人臉識別的Additive Angular Margin Loss。

        • soft Dice trained on positives only – 使用預測概率的Soft Dice。

        • 2.7 * BCE(pred_mask, gt_mask) + 0.9 * DICE(pred_mask, gt_mask) + 0.1 * BCE(pred_empty, gt_empty) 一種自定義損失。

        • nn.SmoothL1Loss()。

        • 使用Mean Squared Error objective function,在某些場景下比二元交叉熵損失好。

        訓練技巧

        • 嘗試不同的學習率。

        • 嘗試不同的batch size。

        • 使用SGD + 動量 并手工設計學習率策略。

        • 太多的增強會降低準確率。

        • 在圖像上進行裁剪做訓練,全尺寸圖像做預測。

        • 使用Keras的ReduceLROnPlateau()作為學習率策略。

        • 不使用數(shù)據(jù)增強訓練到平臺期,然后對一些epochs使用軟硬增強。

        • 凍結(jié)除了最后一層外的所有層,使用1000張圖像進行微調(diào),作為第一步。

        • 使用分類別采樣

        • 在調(diào)試最后一層的時候使用dropout和增強

        • 使用偽標簽來提高分數(shù)

        • 使用Adam在plateau的時候衰減學習率

        • 用SGD使用Cyclic學習率策略

        • 如果驗證損失持續(xù)2個epochs沒有降低,將學習率進行衰減

        • 將10個batches里的最差的batch進行重復訓練

        • 使用默認的UNET進行訓練

        • 對patch進行重疊,這樣邊緣像素被覆蓋兩次

        • 超參數(shù)調(diào)試:訓練時候的學習率,非極大值抑制以及推理時候的分數(shù)閾值

        • 將低置信度得分的包圍框去掉。

        • 訓練不同的卷積網(wǎng)絡進行模型集成。

        • 在F1score開始下降的時候就停止訓練。

        • 使用不同的學習率。

        • 使用層疊的方法用5 folds的方法訓練ANN,重復30次。

        評估和驗證

        • 按類別非均勻的劃分訓練和測試集

        • 當調(diào)試最后一層的時候,使用交叉驗證來避免過擬合。

        • 使用10折交叉驗證集成來進行分類。

        • 檢測的時候使用5-10折交叉驗證來集成。

        集成方法

        • 使用簡單的投票方法進行集成

        • 對于類別很多的模型使用LightGBM,使用原始特征。

        • 對2層模型使用CatBoost。

        • 使用 ‘curriculum learning’ 來加速模型訓練,這種訓練模式下,模型先在簡單樣本上訓練,再在困難樣本上訓練。

        • 使用ResNet50, InceptionV3, and InceptionResNetV2進行集成。

        • 對物體檢測使用集成。

        • 對Mask RCNN, YOLOv3, 和Faster RCNN 進行集成。

        后處理

        • 使用test time augmentation?,對一張圖像進行隨機變換多次測試后對結(jié)果進行平均。

        • 對測試的預測概率進行均衡化,而不是使用預測的類別。

        • 對預測結(jié)果進行幾何平均。

        • 在推理的時候分塊重疊,因為UNet對邊緣區(qū)域的預測不是很好。

        • 進行非極大值抑制和包圍框的收縮。

        • 在實例分割中使用分水嶺算法后處理來分離物體。


        推薦閱讀






        添加極市小助手微信(ID : cvmart2),備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

        △長按添加極市小助手

        △長按關注極市平臺,獲取最新CV干貨

        覺得有用麻煩給個在看啦~??
        瀏覽 56
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        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>
            欧美老肥婆色情免费网站 | 人妻第一页 | 日韩美女做爱 | 久久国产精品波多野结衣 | 豆花视频色| 91成人精品 | 欧美操B视频 | 日韩欧美大香蕉 | 精品人妻无码一区二区三区四川人 | 麻豆视频免费入口 |