關于Loss的簡單總結

Dice Loss

參考:https://blog.csdn.net/l7H9JA4/article/details/108162188

Dice系數: 是一種集合相似度度量函數,通常用于計算兩個樣本的相似度,取值范圍為[0,1]。

s=2∣X∩Y∣∣X∣+∣Y∣s = \frac{2|X ∩ Y|}{|X|+|Y|} s=X+Y2XY?
|X?Y| 是指 X 和 Y 之間的交集;|X| 和 |Y| 分別表示 X 和 Y 的元素個數. 分子乘為了保證分母重復計算后取值范圍在[0,1]之間

因此Dice Loss可寫作

Ldisc=2∣X∩Y∣∣X∣+∣Y∣L_{disc} = \frac{2|X∩Y|}{|X|+|Y|} Ldisc?=X+Y2XY?

對于二分類問題,一般預測值分為以下幾種:

  • TP: true positive,真陽性,預測是陽性,預測對了,實際也是正例。
  • TN: true negative,真陰性,預測是陰性,預測對了,實際也是負例。
  • FP: false positive,假陽性,預測是陽性,預測錯了,實際是負例。
  • FN: false negative,假陰性,預測是陰性,預測錯了,實際是正例

image

公式可改寫為

dics=2TP2TP+FP+FNdics = \frac{2TP}{2TP+FP+FN} dics=2TP+FP+FN2TP?

公式的論文形式

Ldice=1?I+aU?I+aL_{dice} = 1 - \frac{I+a}{U-I+a} Ldice?=1?U?I+aI+a?
a為一個極小的數,一般稱為平滑系數,有兩個作用:

  • 防止分母預測為0。值得說明的是,一般分割網絡輸出經過sigmoid 或 softmax,是不存在輸出為絕對0的情況。這里加平滑系數主要防止一些極端情況,輸出位數太小而導致編譯器丟失數位的情況。
  • 平滑系數可以起到平滑loss和梯度的操作。

Dicc loss應用于語義分割,是區域相關的loss,因此更適合針對多點的情況進行分析。
這也意味著某像素點的loss以及梯度值不僅和該點的label以及預測值相關,和其他點的label以及預測值也相關。

IOU、GIOU、DIOU、CIOU損失函數匯總

參考:
https://zhuanlan.zhihu.com/p/159209199
https://zhuanlan.zhihu.com/p/94799295

IOU

IOU俗稱交并比,是目標檢測中最常用的指標。

IoU=∣A∩B∣∣A∪B∣IoU = \frac{|A ∩ B|}{|A ∪ B|} IoU=ABAB?
優點
1、他可以反映預測檢測框真實檢測框的檢測效果。
2、具有尺度不變性,也就是對尺度不敏感(scale invariant), 在regression任務中,判斷predict box和gt的距離最直接的指標就是IoU。(滿足非負性;同一性;對稱性;三角不等性)

缺點
1、若兩框無法相交,由定義得IoU=0,也就不能反映兩者的重合度。同時因為loss為零,沒有梯度回歸,無法進行學習的訓練
2、IoU無法精確的反映兩者之間的重合度大小。如下圖,IoU相同,但可以看出重合度不一樣,左邊最好,右邊最差。
image

GIOU

GIoU=IoU?Ac?UAcGIoU = IoU - \frac{A_{c}-U}{A_{c}} GIoU=IoU?Ac?Ac??U?
公式的解釋如下:
先計算兩個框的最小閉包區域面Ac(同時包含預測框和真實框的最小框面積),在計算IoU,然后在計算閉包區域中不屬于兩個框的區域占閉包區域的比重,最后用IoU減去這個比重,得到GIoU。

優點:

  • 與IoU相似,GIoU也是一種距離度量,作為損失函數的話
    LGIoU=1?GIoUL_{GIoU} = 1 - GIoU LGIoU?=1?GIoU
    ,滿足損失函數的基本要求
  • GIoU對scale不敏感,可以解決檢測框非重疊造成的梯度消失問題
  • GIoU是IoU的下界,在兩個框無限重合的情況下,IoU=GIoU=1
  • IoU取值[0,1],但GIoU有對稱區間,取值范圍[-1,1]。在兩者重合的時候取最大值1,在兩者無交集且無限遠的時候取最小值-1,因此GIoU是一個非常好的距離度量指標。
  • 與IoU只關注重疊區域不同,GIoU不僅關注重疊區域,還關注其他的非重合區域,能更好的反映兩者的重合度。

DIoU

DIoU要比GIou更加符合目標框回歸的機制,將目標與anchor之間的距離,重疊率以及尺度都考慮進去,使得目標框回歸變得更加穩定,不會像IoU和GIoU一樣出現訓練過程中發散等問題。

DIoU=IoU?ρ2(b,bgt)c2DIoU = IoU - \frac{ρ^2(b,b^{gt})}{c^2} DIoU=IoU?c2ρ2(b,bgt)?
其中b,bgt 分別代表預測框和真實框的中心點,且ρ代表的是計算兩個中心點間的歐式距離。c代表的是能夠同時包含預測框和真實框的最小閉包區域的對角線距離
image

優點:

  • 與GIoU loss類似,DIoU loss(LDIoU=1?DIoUL_{DIoU} =1 - DIoULDIoU?=1?DIoU)在與目標框不重疊時,仍然可以為邊界框提供移動方向。
  • DIoU loss可以直接最小化兩個目標框的距離,因此比GIoU loss收斂快得多。
  • 對于包含兩個框在水平方向和垂直方向上這種情況,DIoU損失可以使回歸非常快,而GIoU損失幾乎退化為IoU損失。
  • DIoU還可以替換普通的IoU評價策略,應用于NMS中,使得NMS得到的結果更加合理和有效。

下圖所示為GIOU和DIOU的對比。
在這里插入圖片描述
紅色框是DIOU損失中的預測框。可以很明顯的看出,DIOU的收斂速度較GIOU更快。

CIoU(Complete-IoU)

DIOU考慮到了兩個檢測框的中心距離。而CIOU考慮到了三個幾何因素,分別為

  1. 重疊面積
  2. 中心點距離
  3. 長寬比

考慮到bbox回歸三要素中的長寬比還沒被考慮到計算中,因此,進一步在DIoU的基礎上提出了CIoU。其懲罰項如下面公式:

RCIoU=ρ2(b,bgt)c2+avR_{CIoU}=\frac{ρ^2(b,b^{gt})}{c^2} + av RCIoU?=c2ρ2(b,bgt)?+av
其中a是權重函數,而v 用來度量長寬比的相似性,定義為

a=v(1?IoU)+va = \frac{v}{(1-IoU)+v} a=(1?IoU)+vv?

v=4π2(arctanwgthgt?arctanwh)v = \frac{4}{π^2}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h}) v=π24?(arctanhgtwgt??arctanhw?)
完整的CIoU損失函數的定義:

LCIoU=1?IoU+ρ2(b,bgt)c2+avL_{CIoU} =1-IoU + \frac{ρ^2(b,b^{gt})}{c^2} + av LCIoU?=1?IoU+c2ρ2(b,bgt)?+av

  • w2 和 h2 為真實框的寬、高
  • w 和 h 為預測框的寬、高

若真實框和預測框的寬高相似,那么 v 為0,該懲罰項就不起作用了。所以很直觀地,這個懲罰項作用就是控制預測框的寬高能夠盡可能快速地與真實框的寬高接近。

IoU、 GIou、 DIoU、 CIoU在YOLOv3上的性能比較

image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536102.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536102.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536102.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Angular_PWA使用+Demo

Angular_PWA使用+Demo 什么是PWA PWA(Progressive Web App)利用TLS,webapp manifests和service workers使應用程序能夠安裝并離線使用。 換句話說,PWA就像手機上的原生應用程序,但它是使用諸如HTML5,JavaScript和CSS3之類的網絡技術構建的。 如果構建正確,PWA與原生應…

SOLOv2論文簡讀

論文:SOLOv2: Dynamic, Faster and Stronger 代碼:https://github.com/WXinlong/SOLO 摘要 主要提出了作者在SOLOv2中實現的優秀的實例分割方法,旨在創建一個簡單、直接、快速的實例分割框架: 通過提出動態學習對象分割器的mas…

Angular6_PWA

Angular6_PWA Angular正式發布了V6.0,我們已經可以利用對應的@angular/cli V6.0來直接開發PWA應用了。 第一步:安裝@angular/cli V6.0 如果你機器上有老版本,請先卸載。 打開你的終端,執行: npm install -g @angular/cli 或 cnpm install -g @angular/cli 安裝成功…

Ubuntu18.04 關于使用vnc的踩坑

由于種種原因,手上多了一臺可使用的桌面版Ubuntu,正好用來測試代碼,方便調試。因為只能遠程,所以需要配置遠程連接。因此就打算使用vnc進行遠程連接,誰料一路坎坷,特此記錄。 安裝 設置桌面共享 需要注意…

App_Shell模型

App_Shell模型 App Shell 架構是構建 Progressive Web App 的一種方式,這種應用能可靠且即時地加載到您的用戶屏幕上,與本機應用相似。 App shell是支持用戶界面所需的最小的 HTML、CSS 和 JavaScript,如果離線緩存,可確保在用戶重復訪問時提供即時、可靠的良好性能。這意…

Angular6_服務端渲染SSR

Angular6_服務端渲染 在使用服務端渲染之前,需要安裝最新版本的Angular。 npm install -g @angular/cli 或 cnpm install -g @angular/cli github項目 創建項目 ng new PWCat --routing 為項目添加universalng g universal --client-project=PWCat 或

Jenkins自定義主題教程

Jenkins自定義主題 由于Jenkins自帶的樣式比較丑陋,所以有很多第三方的樣式庫,這里針對jenkins-material-theme樣式庫做一個安裝教程。 下載樣式庫 下載連接 Select your color 選擇一個你喜歡的主題顏色。Choose your company logo 上傳你自定義的…

IndexedDB_Web 離線數據庫

IndexedDB_Web 離線數據庫 本文會從頭剖析一下 IndexedDB 在前端里面的應用的發展。 indexedDB 目前在前端慢慢得到普及和應用。它正朝著前端離線數據庫技術的步伐前進。以前一開始是 manifest、localStorage、cookie 再到 webSQL,現在 indexedDB 逐漸被各大瀏覽器認…

Angular 單元測試講解

Angular_單元測試 測試分類 按開發階段劃分按是否運行劃分按是否查看源代碼劃分其他ATDD,TDD,BDD,DDD ATDDTDDBDDDDDAngular單元測試 Karma的介紹jasmine介紹單元測試的好處使用jasmine和karma創建一個Angular項目Karma配置Test.ts文件測試體驗測試Form測試服務service常用斷言…

基于 Docker 的微服務架構

基于 Docker 的微服務架構-分布式企業級實踐前言Microservice 和 Docker服務發現模式客戶端發現模式Netflix-Eureka 服務端發現模式ConsulEtcdZookeeper 服務注冊自注冊模式 Self-registration pattern第三方注冊模式 Third party registration pattern小結一 服務間的 IPC 機制…

funcode游戲實訓,java及C/C++,網上整理

軟件,常見錯誤都有。 所有資源可到公眾號獲取(源碼也是),不再直接分享

Docker 容器部署 Consul 集群

Docker 容器部署 Consul 集群 Consul 介紹 Consul 提供了分布式系統的服務發現和配置的解決方案。基于go語言實現。并且在git上開放了源碼consul-git。consul還包括了分布式一致協議的實現,健康檢查和管理UI。Consul和zk相比較起來,更加輕量級&#xf…

swing皮膚包 substance

分享一下swing皮膚包substance 資源可到公眾號獲取

基于Android的聊天軟件,Socket即時通信,實現用戶在線聊天

基于Android的聊天軟件,Socket即時通信,單聊,聊天室,可自行擴展功能,完善細節。 【實例功能】 1.運行程序,登錄界面, 注冊賬號功能 2.進入主界面,有通訊錄, 個人信息。 3.點擊好友會話框&#…

用Docker搭建Elasticsearch集群

用Docker搭建Elasticsearch集群 對于用Docker搭建分布式Elasticsearhc集群的一個介紹,以及一些實施中遇到問題的總結 搜索服務簡述 結合業務的場景,在目前的商品體系需要構建搜索服務,主要是為了提供用戶更豐富的檢索場景以及高速&#xf…

Go實現簡單的RESTful_API

Go實現簡單的RESTful_API 何為RESTful API A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. A RESTful API – also referred to as a RESTful web service – is based on representational state t…

Docker使用Dockerfile構建簡單鏡像

Docker使用Dockerfile構建簡單鏡像 首先確保系統已經安裝docker 構建鏡像 安裝基礎鏡像 sudo docker pull ubuntu 查看鏡像是否已經拉取成功 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu …

Weave Scope安裝

Weave Scope安裝 首先確保已經安裝docker 實時了解Docker容器狀態 查看容器基礎設施的概況,或者專注于一個特殊的微服務。從而輕松發現并糾正問題,確保你的容器化應用的穩定與性能。 內部細節與深度鏈接 查看容器的指標、標簽和元數據。 在一個可擴展…

MYSQL導入數據出現ERROR 1049 (42000): Unknown database 'n??;'

MYSQL導入數據出現ERROR 1049 (42000): Unknown database ‘n??;’ 背景 我需要將一個csv表中的數據導入數據庫創建好的表中,產生的問題如下: 原因尋找 因為我并沒有使用’n??;的數據庫,所以很好奇這個錯怎么來的,嘗試如下…

Win10忘記ubuntu子系統密碼

Win10忘記ubuntu子系統密碼 目前新版win10已經支持ubuntu子系統,如果忘記子系統密碼怎么辦? linux單用戶模式 在ubuntu中如果忘記密碼,可以在啟動的時候,在grub內更改用戶為root進入,這樣就可以使用最高權限的單用戶…