橫向?qū)Ρ? alt=)
ArcFace、Circle、Triplet、Instance Loss…University1652-Baseline的9種損失函數(shù)橫向?qū)Ρ取久赓M(fèi)下載鏈接】University1652-BaselineACM Multimedia2020 University-1652: A Multi-view Multi-source Benchmark for Drone-based Geo-localization :helicopter: annotates 1652 buildings in 72 universities around the world.項(xiàng)目地址: https://gitcode.com/gh_mirrors/un/University1652-BaselineUniversity1652-Baseline 是 ACM MM 2020 無人機(jī)地理定位Drone-based Geo-localization數(shù)據(jù)集的官方基線代碼庫它將 ArcFace、Circle、Triplet、Instance Loss 等 9 種主流度量學(xué)習(xí)損失函數(shù)整合進(jìn)同一個(gè)訓(xùn)練腳本讓你用一條命令就能切換并橫向?qū)Ρ炔煌瑩p失函數(shù)的效果。University1652-Baseline 是什么項(xiàng)目University1652-Baseline 圍繞 University-1652 數(shù)據(jù)集構(gòu)建全球 72 所大學(xué)、1652 棟建筑每棟建筑都有衛(wèi)星、無人機(jī)、地面三種視角的圖像。核心任務(wù)是跨視角地理定位——給定一張無人機(jī)照片從衛(wèi)星圖海中找出對(duì)應(yīng)建筑回答無人機(jī)現(xiàn)在在哪里。決定定位精度的關(guān)鍵不只是網(wǎng)絡(luò)結(jié)構(gòu)而是同一建筑的不同視角特征能否被拉得足夠近、不同建筑被推得足夠遠(yuǎn)——這正是損失函數(shù)Loss Function的工作。9種損失函數(shù)快速總覽全部 9 種損失函數(shù)都在訓(xùn)練腳本train.py中實(shí)現(xiàn)前 8 種通過命令行參數(shù)開啟第 9 種是多損失融合策略。先看全貌#損失函數(shù)參數(shù)類型實(shí)現(xiàn)位置1交叉熵Instance Loss 基礎(chǔ)默認(rèn)分類 共享分類器train.py2Triplet Loss--triplet三元組距離pytorch-metric-learning3Contrast Loss--contrast成對(duì)對(duì)比pytorch-metric-learning4Lifted Loss--lifted全負(fù)對(duì)結(jié)構(gòu)pytorch-metric-learning5ArcFace--arcface角度間隔pytorch-metric-learning6CosFace--cosface余弦間隔pytorch-metric-learning7Circle Loss--circle自適應(yīng)間隔circle_loss.py8SphereFaceSphere Loss--sphere球面間隔pytorch-metric-learning9多視角損失融合--loss_merge融合策略train.py模型結(jié)構(gòu)定義在model.py中三個(gè)視角的網(wǎng)絡(luò)共享同一個(gè)分類器ClassBlock這個(gè)共享權(quán)重正是 Instance Loss 的關(guān)鍵所在。9種損失函數(shù)逐個(gè)詳解1. 交叉熵 / Instance Loss默認(rèn)基線項(xiàng)目的默認(rèn)損失是標(biāo)準(zhǔn)交叉熵nn.CrossEntropyLoss()。它與共享分類器組合后構(gòu)成所謂Instance Loss把同一棟建筑的衛(wèi)星圖、無人機(jī)圖、地面圖視為同一類下的不同實(shí)例用共享權(quán)重強(qiáng)迫不同視角的特征在特征空間中聚攏。Drone→Satellite 方向 R1 58.23、AP 62.91優(yōu)于所有純度量損失是公認(rèn)的基礎(chǔ)起點(diǎn)。2. Triplet Loss經(jīng)典三元組--triplet使用 MultiSimilarityMiner 自動(dòng)挖掘困難樣本對(duì)再計(jì)算 margin0.3 的 TripletMarginLoss。官方實(shí)測 R1 55.18、AP 59.97效果穩(wěn)定但略遜于 Instance Loss。3. Contrast Loss最簡單的成對(duì)對(duì)比ContrastiveLosspos_margin0neg_margin1拉近正樣本、推遠(yuǎn)負(fù)樣本思路最直觀但實(shí)測 R1 52.39 為 9 種中最低——適合用來理解度量學(xué)習(xí)的原理不太適合直接沖榜。4. Lifted Loss考慮全部負(fù)樣本對(duì)GeneralizedLiftedStructureLoss 把 batch 內(nèi)所有負(fù)樣本對(duì)聚合成一個(gè)結(jié)構(gòu)化的總損失比三元組只挑幾個(gè)樣本更充分。官方未單獨(dú)公布其成績定位為可疊加的增強(qiáng)項(xiàng)。5. ArcFace角度間隔派ArcFaceLoss 在特征與類別中心余弦相似度的角度上加入間隔embedding_size512是人臉識(shí)別領(lǐng)域的經(jīng)典配方。開啟后模型會(huì)同時(shí)輸出分類 logits 和 512 維特征兩者損失相加訓(xùn)練。6. CosFace余弦空間加間隔CosFaceLoss 與 ArcFace 是兄弟區(qū)別在于間隔直接加在余弦值上行為更溫和適合與 ArcFace 做 A/B 對(duì)比實(shí)驗(yàn)。7. Circle Loss倉庫內(nèi)實(shí)現(xiàn)的自適應(yīng)間隔CircleLoss(m0.25, gamma32) 實(shí)現(xiàn)在 circle_loss.py能根據(jù)每對(duì)樣本當(dāng)前相似度自動(dòng)調(diào)節(jié)權(quán)重收斂通常更快。源碼注釋特別提到 gamma64 可能帶來更好效果值得嘗試。8. SphereFace球面約束SphereFaceLoss(margin4) 將特征約束在超球面上均勻分布讓類別之間排得更開是多分類與度量學(xué)習(xí)的折中方案。9. --loss_merge多視角融合計(jì)算損失這是融合策略而非單一損失把三個(gè)視角加可選的 Google 視角的特征與標(biāo)簽拼成一個(gè)大 batch再統(tǒng)一計(jì)算上述度量損失讓困難樣本挖掘可以跨視角看到更多同類與負(fù)例是進(jìn)一步提升效果上限的關(guān)鍵技巧。官方實(shí)測數(shù)據(jù)哪種損失函數(shù)最強(qiáng)完整榜單在State-of-the-art/README.md。摘出與損失函數(shù)直接相關(guān)的核心對(duì)比R1 與 AP損失組合Drone→Sat R1Drone→Sat APSat→Drone R1Sat→Drone APContrast Loss52.3957.4463.9152.24Tripletmargin0.355.1859.9763.6253.85Instance Loss58.2362.9174.4759.45Instance Verification61.3065.6875.0462.87Instance GeM Pooling65.3269.6179.0365.35Instance Triplet65.9370.1876.0366.36結(jié)論很清晰Instance Loss 是地基在其之上再疊加一個(gè)距離類損失可再漲 5 個(gè)以上 R1 點(diǎn)如何快速啟用不同損失函數(shù)先獲取代碼git clone https://gitcode.com/gh_mirrors/un/University1652-Baseline官方推薦訓(xùn)練命令見項(xiàng)目README.md在此基礎(chǔ)上只需追加幾個(gè)參數(shù)即可切換損失函數(shù)# 示例默認(rèn) Instance Loss ArcFace Triplet三視角融合計(jì)算損失 python train.py --name my_arcface_exp --views 3 --share --droprate 0.75 \ --stride 1 --h 256 --w 256 --fp16 \ --arcface --triplet --loss_merge訓(xùn)練完成后運(yùn)行test.py評(píng)估再用demo.py可視化 Top-10 檢索結(jié)果直觀感受不同損失函數(shù)帶來的差異。新手損失函數(shù)選型指南第一次跑基線不加任何參數(shù)默認(rèn)交叉熵Instance Loss先拿到 R1 58 左右的成績。想試單一度量損失優(yōu)先--arcface或--triplet官方數(shù)據(jù)顯示兩者單獨(dú)使用效果較穩(wěn)。追求最好效果Instance Loss 距離類損失 --loss_merge并可嘗試--circlegamma64。做研究對(duì)比逐個(gè)開啟參數(shù)單獨(dú)訓(xùn)練把 R1 / AP 記錄到State-of-the-art/README.md的榜單中。 小提示開啟任意度量損失后模型會(huì)自動(dòng)返回 512 維特征并做 L2 歸一化再參與損失計(jì)算無需額外配置??偨Y(jié)University1652-Baseline 把度量學(xué)習(xí)領(lǐng)域的 9 種主流損失函數(shù)裝進(jìn)了一個(gè)訓(xùn)練腳本——從共享分類器的 Instance Loss到 ArcFace、CosFace、SphereFace 等間隔類損失再到自適應(yīng)的 Circle Loss 與--loss_merge融合策略。對(duì)剛?cè)腴T無人機(jī)地理定位的研究者來說這是一臺(tái)現(xiàn)成的損失函數(shù)實(shí)驗(yàn)臺(tái)改一行命令就能得出屬于你自己的跨視角定位損失函數(shù)結(jié)論?!久赓M(fèi)下載鏈接】University1652-BaselineACM Multimedia2020 University-1652: A Multi-view Multi-source Benchmark for Drone-based Geo-localization :helicopter: annotates 1652 buildings in 72 universities around the world.項(xiàng)目地址: https://gitcode.com/gh_mirrors/un/University1652-Baseline創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考