博客專欄

        EEPW首頁 > 博客 > 視覺分類任務(wù)中處理不平衡問題的loss比較

        視覺分類任務(wù)中處理不平衡問題的loss比較

        發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2022-06-19 來源:工程師 發(fā)布文章

        來源:機(jī)器學(xué)習(xí)AI算法工程

        在計(jì)算機(jī)視覺(CV)任務(wù)里常常會(huì)碰到類別不平衡的問題, 例如:


        1. 圖片分類任務(wù),有的類別圖片多,有的類別圖片少2. 檢測(cè)任務(wù)。現(xiàn)在的檢測(cè)方法如SSD和RCNN系列,都使用anchor機(jī)制。訓(xùn)練時(shí)正負(fù)anchor的比例很懸殊.3. 分割任務(wù), 背景像素?cái)?shù)量通常遠(yuǎn)大于前景像素。
        從實(shí)質(zhì)上來講, 它們可以歸類成分類問題中的類別不平衡問題:對(duì)圖片/anchor/像素的分類。
        再者,除了類不平衡問題, 還有easy sample overwhelming的問題。easy sample如果太多,可能會(huì)將有效梯度稀釋掉。
        這兩個(gè)問題通常都會(huì)一起出現(xiàn)。如果不處理, 可能會(huì)對(duì)模型性能造成很大傷害。用Focal Loss里的話說,就是訓(xùn)練不給力, 且會(huì)造成模型退化:
        (1) training is inefficient as most locations are easy negatives…(2) the easy negatives can overwhelming training and lead to degenerate models.
        如果要處理,那么該怎么處理呢?在CV領(lǐng)域里, 若不考慮修改模型本身, 通常會(huì)在loss上做文章, 確切地說,是在樣本選擇或loss weight上做文章。
        常見的解決辦法介紹
        常見的方法有online的, 也有非online的;有只處理類間不平衡的,有只處理easy example的, 也有同時(shí)處理兩者的。
        Hard Negative Mining, 非online的mining/boosting方法, 以‘古老’的RCNN(2014)為代表, 但在CV里現(xiàn)在應(yīng)該沒有人使用了(吧?)。若感興趣,推薦去看看OHEM論文里的related work部分。
        Mini-batch Sampling,以Fast R-CNN(2015)和Faster R-CNN(2016)為代表。Fast RCNN在訓(xùn)練分類器, Faster R-CNN在訓(xùn)練RPN時(shí),都會(huì)從N = 1或2張圖片上隨機(jī)選取mini_batch_size/2個(gè)RoI或anchor, 使用正負(fù)樣本的比例為1:1。若正樣本數(shù)量不足就用負(fù)樣本填充。使用這種方法的人應(yīng)該也很少了。從這個(gè)方法開始, 包括后面列出的都是online的方法。
        Online Hard Example Mining, OHEM(2016)。將所有sample根據(jù)當(dāng)前l(fā)oss排序,選出loss最大的N個(gè),其余的拋棄。這個(gè)方法就只處理了easy sample的問題。
        Oline Hard Negative Mining, OHNM, SSD(2016)里使用的一個(gè)OHEM變種, 在Focal Loss里代號(hào)為OHEM 1:3。在計(jì)算loss時(shí), 使用所有的positive anchor, 使用OHEM選擇3倍于positive anchor的negative anchor。同時(shí)考慮了類間平衡與easy sample。
        Class Balanced Loss。計(jì)算loss時(shí),正負(fù)樣本上的loss分別計(jì)算, 然后通過權(quán)重來平衡兩者。暫時(shí)沒找到是在哪提出來的,反正就這么被用起來了。它只考慮了類間平衡。
        Focal Loss(2017), 最近提出來的。不會(huì)像OHEM那樣拋棄一部分樣本, 而是和Class Balance一樣考慮了每個(gè)樣本, 不同的是難易樣本上的loss權(quán)重是根據(jù)樣本難度計(jì)算出來的。
        從更廣義的角度來看,這些方法都是在計(jì)算loss時(shí)通過給樣本加權(quán)重來解決不平衡與easy example的問題。不同的是,OHEM使用了hard weight(只有0或1),而Focal Loss使用了soft weight(0到1之間).
        現(xiàn)在依然常用的方法特性比較如下:
        圖片

        接下來, 通過修改過的Cifar數(shù)據(jù)集來比較這幾種方法在分類任務(wù)上的表現(xiàn),當(dāng)然, 主要還是期待Focal Loss的表現(xiàn)。
        實(shí)驗(yàn)數(shù)據(jù)
        實(shí)驗(yàn)數(shù)據(jù)集
        Cifar-10, Cifar-100。使用Cifar的原因沒有別的, 就因?yàn)楦F,畢竟要像Focal Loss論文里那樣跑那么多的大實(shí)驗(yàn)對(duì)大部分學(xué)校和企業(yè)來說是不現(xiàn)實(shí)的。
        處理數(shù)據(jù)得到類間不平衡將多分類任務(wù)轉(zhuǎn)換成二分類:


        new_label = label == 1

        原始Cifar-10和100里有很多類別,每類圖片的數(shù)量基本一樣。按照這種方式轉(zhuǎn)變后,多分類變成了二分類, 且正負(fù)樣本比例相差懸殊:9倍和99倍。
        實(shí)驗(yàn)?zāi)P?/span>
        一個(gè)5層的CNN,完成一個(gè)不平衡的二分類任務(wù)。使用Cross Entropy Loss,按照不同的方法使用不同的權(quán)值方案。以不加任何權(quán)重的CE Loss作為baseline。
        衡量方式
        在這種不平衡的二分類問題里, 準(zhǔn)確率已經(jīng)不適合用來衡量模型的好與壞了。此處使用F-Score作標(biāo)準(zhǔn).
        實(shí)現(xiàn)細(xì)節(jié)
        CE(Cross Entroy Loss)
        圖片

        OHEM


        分為以下三步:
        1. 計(jì)算ce_loss, 同CE
        2. 根據(jù)ce_loss排序, 選出top N 個(gè)sample:

        圖片
        圖片

        Class Balance CE


        形式多種多樣,我個(gè)人最喜歡使用:
        圖片
        圖片
        圖片

        優(yōu)化方法


        • 最簡單的SGD, 初始lr=0.1, 每200,000步衰減一次, 衰減系數(shù)為0.1。Cifar-100上focal_loss的初始lr=0.01。
        • batch_size = 128.

        實(shí)驗(yàn)結(jié)果


        CIFAR-10:
        圖片
        圖片
        Focal Loss的一個(gè)補(bǔ)丁
        對(duì)于CIFAR-100,batch_size=128時(shí), 一個(gè)batch內(nèi)可能會(huì)一個(gè)positive sample都沒有, 即n_pos == 0, 這時(shí),paper里用n_pos來normalize loss 的方式就不可行了。測(cè)試過兩種簡單的選擇:一是用所有weight之和來normalize, 二是直接不normalize。前者很難訓(xùn)練甚至訓(xùn)練不出來, 后者可用。所以上面的Focal loss計(jì)算代碼應(yīng)該補(bǔ)充為:
        圖片

        經(jīng)驗(yàn)總結(jié)


        圖片

        Code Available On Github

        https://github.com/dengdan/test_tf_models

        Branch:focal_loss


        References
        Focal Loss for Dense Object Detection, https://arxiv.org/pdf/1708.02002.pdfRCNN, https://arxiv.org/abs/1311.2524Fast RCNN, http://arxiv.org/abs/1504.08083Faster-RCNN, http://arxiv.org/abs/1506.01497Training Region-based Object Detectors with Online Hard Example Mining, https://arxiv.org/abs/1604.03540


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 金塔县| 闽清县| 马公市| 米脂县| 交口县| 清远市| 闽清县| 田林县| 临城县| 淮安市| 龙口市| 都匀市| 绥德县| 黎平县| 应用必备| 普陀区| 英德市| 营山县| 万载县| 阳朔县| 甘洛县| 张家界市| 乌鲁木齐县| 慈溪市| 徐水县| 鄯善县| 昌黎县| 辛集市| 贵州省| 临江市| 广河县| 华蓥市| 固阳县| 汝阳县| 天台县| 蕲春县| 疏附县| 洞头县| 土默特左旗| 德格县| 綦江县|