三篇論文解決「語義分割的優(yōu)化和評估」難題!魯汶/清華/牛津等聯(lián)合提出全新方法
優(yōu)化語義分割模型常用的損失有Soft Jaccard損失,Soft Dice損失和Soft Tversky損失,但它們都和軟標簽不兼容,所以無法支持一些重要的訓練技術(例如標簽平滑,知識蒸餾,半監(jiān)督學習,多標注員等)。
另一方面,語義分割常用的評價指標有mAcc和mIoU,但是因為它們都會偏向數(shù)據集中尺寸較大的物體,所以會嚴重的影響它們對模型安全性能的評估。
為了解決這些問題,魯汶大學和清華的研究人員首先提出了JDT損失。JDT損失是原有損失函數(shù)的變體,包括了Jaccard Metric損失,Dice Semimetric損失和Compatible Tversky損失。JDT損失在硬標簽下與原有的損失函數(shù)等價,但能完全兼容軟標簽。
研究人員將JDT損失應用于軟標簽的四個重要場景:標簽平滑、知識蒸餾、半監(jiān)督學習和多標注員,展示了它們提高模型準確性和校準性的能力。
圖片
論文鏈接:https://arxiv.org/pdf/2302.05666.pdf
圖片
論文鏈接:https://arxiv.org/pdf/2303.16296.pdf
除此之外,研究人員還提出了細粒度的評價指標。這些細粒度的評價指標對大尺寸物體的偏見較小,能提供更豐富的統(tǒng)計信息,并能為模型和數(shù)據集審計提供有價值的見解。
并且,研究人員進行了一項廣泛的基準研究,強調了不應基于單個指標進行評估的必要性,并發(fā)現(xiàn)了神經網絡結構和JDT損失對優(yōu)化細粒度指標的重要作用。
圖片
論文鏈接:https://arxiv.org/pdf/2310.19252.pdf
代碼鏈接:https://github.com/zifuwanggg/JDTLosses
現(xiàn)有的損失函數(shù)
由于Jaccard Index和Dice Score是定義在集合上的,所以并不可導。為了使它們可導,目前常見的做法有兩種:一種是利用集合和相應向量的Lp模之間的關系,例如Soft Jaccard損失(SJL),Soft Dice損失(SDL)和Soft Tversky損失(STL)。
它們把集合的大小寫成相應向量的L1模,把兩個集合的交集寫成兩個相應向量的內積。另一種則是利用Jaccard Index的submodular性質,在集合函數(shù)上做Lovasz拓展,例如Lovasz-Softmax損失(LSL)。
圖片
這些損失函數(shù)都假定神經網絡的輸出x是一個連續(xù)的向量,而標簽y則是一個離散的二值向量。如果標簽為軟標簽,即y不再是一個離散的二值向量,而是一個連續(xù)向量時,這些損失函數(shù)就不再兼容。
以SJL為例,考慮一個簡單的單像素情況:
圖片
可以發(fā)現(xiàn),對于任意的y > 0,SJL都將在x = 1時最小化,而在x = 0時最大化。因為一個損失函數(shù)應該在x = y時最小化,所以這顯然是不合理的。
與軟標簽兼容的損失函數(shù)
為了使原有的損失函數(shù)與軟標簽兼容,需要在計算兩個集合的交集和并集時,引入兩個集合的對稱差:
圖片
注意兩個集合的對稱差可以寫成兩個相應向量的差的L1模:
圖片
把以上綜合起來,我們提出了JDT損失。它們分別是SJL的變體Jaccard Metric損失(JML),SDL的變體Dice Semimetric 損失(DML)以及STL的變體Compatible Tversky損失(CTL)。
圖片
JDT損失的性質
我們證明了JDT損失有著以下的一些性質。
性質1:JML是一個metric,DML是一個semimetric。
性質2:當y為硬標簽時,JML與SJL等價,DML與SDL等價,CTL與STL等價。
性質3:當y為軟標簽時,JML,DML,CTL都與軟標簽兼容,即x = y ó f(x,y) = 0。
由于性質1,它們也因此被稱為Jaccard Metric損失和Dice Semimetric損失。性質2說明在僅用硬標簽進行訓練的一般場景下,JDT損失可以直接用來替代現(xiàn)有的損失函數(shù),而不會引起任何的改變。
如何使用JDT損失
我們進行了大量的實驗,總結出了使用JDT損失的一些注意事項。
注意1:根據評價指標選擇相應的損失函數(shù)。如果評價指標是Jaccard Index,那么應該選擇JML;如果評價指標是Dice Score,那么應該選擇DML;如果想給予假陽性和假陰性不同的權重,那么應該選擇CTL。其次,在優(yōu)化細粒度的評價指標時,JDT損失也應做相應的更改。
注意2:結合JDT損失和像素級的損失函數(shù)(例如Cross Entropy損失,F(xiàn)ocal損失)。本文發(fā)現(xiàn)0.25CE + 0.75JDT一般是一個不錯的選擇。
注意3:最好采用一個較短的epoch來訓練。加上JDT損失后,一般只需要Cross Entropy損失訓練時一半的epoch。
注意4:在多個GPU上進行分布式訓練時,如果GPU之間沒有額外的通信,JDT損失會錯誤的優(yōu)化細粒度的評價指標,從而導致其在傳統(tǒng)的mIoU上效果變差。
注意5:在極端的類別不平衡的數(shù)據集上進行訓練時,需注意JDL損失是在每個類別上分別求損失再取平均,這可能會使訓練變得不穩(wěn)定。
實驗結果
實驗證明,與Cross Entropy損失的基準相比,在用硬標簽訓練時,加上JDT損失可以有效提高模型的準確性。引入軟標簽后,可以進一步提高模型的準確性和校準性。
圖片
只需在訓練時加入JDT損失項,本文取得了語義分割上的知識蒸餾,半監(jiān)督學習和多標注員的SOTA。
圖片
圖片
圖片
現(xiàn)有的評價指標
語義分割是一個像素級別的分類任務,因此可以計算每個像素的準確率:overall pixel-wise accuracy(Acc)。但因為Acc會偏向于多數(shù)類,所以PASCAL VOC 2007采用了分別計算每個類別的像素準確率再取平均的評價指標:mean pixel-wise accuracy(mAcc)。
但由于mAcc不會考慮假陽性,從PASCAL VOC 2008之后,就一直采用平均交并比(per-dataset mIoU, mIoUD)來作為評價指標。PASCAL VOC是最早的引入了語義分割任務的數(shù)據集,它使用的評價指標也因此被之后的各個數(shù)據集所廣泛采用。
具體來說,IoU可以寫成:
圖片
為了計算mIoUD,我們首先需要對每一個類別c統(tǒng)計其在整個數(shù)據集上所有I張照片的true positive(真陽性,TP),false positive(假陽性,F(xiàn)P)和false negative(假陰性,F(xiàn)N):
圖片
有了每個類別的數(shù)值之后,我們按類別取平均,從而消除對多數(shù)類的偏好:
圖片
因為mIoUD把整個數(shù)據集上所有像素的TP,F(xiàn)P和FN合計在一起,它會不可避免的偏向于那些大尺寸的物體。
在一些對安全要求較高的應用場景中,例如自動駕駛和醫(yī)療圖像,經常會存在一些尺寸小但是不可忽略的物體。
如下圖所示,不同照片上的汽車的大小有著明顯的不同。因此,mIoUD對大尺寸物體的偏好會嚴重的影響其對模型安全性能的評估。
細粒度的評價指標
為了解決mIoUD的問題,我們提出細粒度的評價指標。這些指標在每張照片上分別計算IoU,從而能有效的降低對大尺寸物體的偏好。
mIoUI
對每一個類別c,我們在每一張照片i上分別計算一個IoU:
圖片
接著,對每一張照片i,我們把這張照片上出現(xiàn)過的所有類別進行平均:
圖片
最后,我們把所有照片的數(shù)值再進行平均:
圖片
mIoUC
類似的,在計算出每個類別c在每一張照片i上的IoU之后,我們可以把每一個類別c出現(xiàn)過的所有照片進行平均:
最后,把所有類別的數(shù)值再進行平均:
由于不是所有的類別都會出現(xiàn)在所有的照片上,所以對于一些類別和照片的組合,會出現(xiàn)NULL值,如下圖所示。計算mIoUI時先對類別取平均再對照片取平均,而計算mIoUC時先對照片取平均再對類別取平均。
這樣的結果是mIoUI可能會偏向那些出現(xiàn)得很頻繁的類別(例如下圖的C1),而這一般是不好的。但另一方面,在計算mIoUI時,因為每張照片都有一個IoU數(shù)值,這能幫助我們對模型和數(shù)據集進行一些審計和分析。
圖片
最差情況的評價指標
對于一些很注重安全的應用場景,我們很多時候更關心的是最差情況的分割質量,而細粒度指標的一個好處就是能計算相應的最差情況指標。我們以mIoUC為例,類似的方法也可以計算mIoUI相應的最差情況指標。
對于每一個類別c,我們首先把其出現(xiàn)過的所有照片(假設有Ic個這樣的照片)的IoU數(shù)值進行升序排序。接著,我們設q為一個很小的數(shù)字,例如1或者5。然后,我們僅用排序好的前Ic * q%張照片來計算最后的數(shù)值:
圖片
有了每個類c的數(shù)值之后,我們可以像之前那樣按類別取平均,從而得到mIoUC的最差情況指標。
實驗結果
我們在12個數(shù)據集上訓練了15個模型,發(fā)現(xiàn)了如下的一些現(xiàn)象。
現(xiàn)象1:沒有一個模型在所有的評價指標上都能取得最好的效果。每個評價指標都有著不同的側重點,因此我們需要同時考慮多個評價指標來進行綜合的評估。
現(xiàn)象2:一些數(shù)據集上存在部分照片使得幾乎所有的模型都取得一個很低的IoU數(shù)值。這一方面是因為這些照片本身就很有挑戰(zhàn)性,例如一些很小的物體和強烈的明暗對比,另一方面也是因為這些照片的標簽存在問題。因此,細粒度的評價指標能幫助我們進行模型審計(發(fā)現(xiàn)模型會犯錯的場景)和數(shù)據集審計(發(fā)現(xiàn)錯誤的標簽)。
現(xiàn)象3:神經網絡的結構對優(yōu)化細粒度的評價指標有著至關重要的作用。一方面,由ASPP(被DeepLabV3和DeepLabV3+采用)等結構所帶來的感受野的提升能幫助模型識別出大尺寸的物體,從而能有效提高mIoUD的數(shù)值;另一方面,encoder和decoder之間的長連接(被UNet和DeepLabV3+采用)能使模型識別出小尺寸的物體,從而提高細粒度評價指標的數(shù)值。
現(xiàn)象4:最差情況指標的數(shù)值遠遠低于相應的平均指標的數(shù)值。下表展示了DeepLabV3-ResNet101在多個數(shù)據集上的mIoUC和相應的最差情況指標的數(shù)值。一個值得以后考慮的問題是,我們應該如何設計神經網絡結構和優(yōu)化方法來提高模型在最差情況指標下的表現(xiàn)?
圖片
現(xiàn)象5:損失函數(shù)對優(yōu)化細粒度的評價指標有著至關重要的作用。與Cross Entropy損失的基準相比,如下表的(0,0,0)所示,當評價指標變得細粒度,使用相應的損失函數(shù)能極大的提升模型在細粒度評價指標上的性能。例如,在ADE20K上,JML和Cross Entropy損失的mIoUC的差別會大于7%。
圖片
未來工作
我們只考慮了JDT損失作為語義分割上的損失函數(shù),但它們也可以應用在其他的任務上,例如傳統(tǒng)的分類任務。
其次,JDT損失只被用在標簽空間中,但我們認為它們能被用于最小化任意兩個向量在特征空間上的距離,例如用來替代Lp模和cosine距離。
參考資料:
https://arxiv.org/pdf/2302.05666.pdf
https://arxiv.org/pdf/2303.16296.pdf
https://arxiv.org/pdf/2310.19252.pdf