動手學CV Pytorch(四) 損失函式設計

2021-10-12 11:10:24 字數 2329 閱讀 1431

放在最前:本文參考datawhale教程 動手學cv-pytorch ←超好的學習教程!

我們分配了許多prior bboxes,我們要想讓其**類別和目標框資訊,我們先要知道每個prior bbox和哪個目標對應,從而才能判斷**的是否準確,從而將訓練進行下去。

不同方法 ground truth boxes 與 prior bboxes 的匹配策略大致都是類似的,但是細節會有所不同。這裡我們採用ssd中的匹配策略,具體如下:

第乙個原則:從ground truth box出發,尋找與每乙個ground truth box有最大的jaccard overlap的prior bbox,這樣就能保證每乙個groundtruth box一定與乙個prior bbox對應起來(jaccard overlap就是iou,如圖3-26所示,前面介紹過)。 反之,若乙個prior bbox沒有與任何ground truth進行匹配,那麼該prior bbox只能與背景匹配,就是負樣本。

乙個中ground truth是非常少的,而prior bbox卻很多,如果僅按第乙個原則匹配,很多prior bbox會是負樣本,正負樣本極其不平衡,所以需要第二個原則。

第二個原則:從prior bbox出發,對剩餘的還沒有配對的prior bbox與任意乙個ground truth box嘗試配對,只要兩者之間的jaccard overlap大於閾值(一般是0.5),那麼該prior bbox也與這個ground truth進行匹配。這意味著某個ground truth可能與多個prior box匹配,這是可以的。但是反過來卻不可以,因為乙個prior bbox只能匹配乙個ground truth,如果多個ground truth與某個prior bbox的 iou 大於閾值,那麼prior bbox只與iou最大的那個ground truth進行匹配。

注意:第二個原則一定在第乙個原則之後進行,仔細考慮一下這種情況,如果某個ground truth所對應最大iou的prior bbox小於閾值,並且所匹配的prior bbox卻與另外乙個ground truth的iou大於閾值,那麼該prior bbox應該匹配誰,答案應該是前者,首先要確保每個ground truth一定有乙個prior bbox與之匹配。

用乙個示例來說明上述的匹配原則:

影象中有7個紅色的框代表先驗框,黃色的是ground truths,在這幅影象中有三個真實的目標。按照前面列出的步驟將生成以下匹配項:

舉個例子:假設在這 441 個 prior bbox 裡,經過匹配後得到正樣本先驗框p個,負樣本先驗框 441−p 個。將負樣本prior bbox按照prediction loss從大到小順序排列後選擇最高的m個prior bbox。這個m需要根據我們設定的正負樣本的比例確定,比如我們約定正負樣本比例為1:3時。我們就取m=3p,這m個loss最大的負樣本難例將會被作為真正參與計算loss的prior bboxes,其餘的負樣本將不會參與分類損失的loss計算。

本小節介紹的內容圍繞如何進行訓練展開,主要是3塊:

先驗框與gt框的匹配策略

損失函式計算

難例挖掘

這3部分是需要結合在一起理解,我們再整個梳理下計算loss的步驟

1)先驗框與gt框的匹配

按照我們介紹的方案,為每個先驗框都分配好類別,確定是正樣本還是負樣本。

計算loss

按照我們定義的損失函式計算 分類loss 和 目標框回歸loss

負樣本不計算目標框的回歸loss

難例挖掘

上面計算的loss中分類loss的部分還不是最終的loss

因為負樣本先驗框過多,我們要按一定的預設比例,一般是1:3,將loss最高的那部分負樣本先驗框拿出來,其餘的負樣本忽略,重新計算分類loss

完整loss計算過程的**見model.py中的 multiboxloss 類。

共勉:這一小節是整個章節中最難理解,也是**最難啃的部分,堅持就是勝利~

動手學Docker 第四彈 Docker持久化儲存

完整專案請檢視github 鏈結 知道現在我們所有操作都是基於容器的,也就是我們的所有資料的生命週期是和容器一樣的,如果容器被刪除了,那麼我們的所有資料也就沒有了,這肯定不是我們想要看到的,我們想要一些資料儘管容器不存在了,但仍然可以儲存,所以就需要docker的持久化技術。目前docker可以通過...

動手學深度學習

線性回歸的基本要素 模型 為了簡單起見,這裡我們假設 只取決於房屋狀況的兩個因素,即面積 平方公尺 和房齡 年 接下來我們希望探索 與這兩個因素的具體關係。線性回歸假設輸出與各個輸入之間是線性關係 price warea area wage age b price warea area wage a...

自己動手學Remoting 一

using system using system.collections.generic using system.text using system.runtime.remoting using system.runtime.remoting.channels using system.runt...