天天看點

淺析CornerNetcornernet簡介

cornernet簡介

cornernet構成

cornernet是一種不同于之前的檢測網絡的一種新的網絡,大部分思路源于stacked hourglass network。網絡本身屬于一步網絡,在預測過程中不再需要進行anchor的設定,取而代之的是預測目标的左上角坐标和右上角坐标,每一組角點将代表一個目标。在網絡前向傳遞的過程中,網絡将輸出兩組heatmap:對應每個預測位置是一個角點的機率;heatmap通常比原圖小一些,是以需要進行位置的進一步修正,與之對應的就是網絡的offset輸出;最終多個角點之間還需要進行比對,這是網絡的第三個輸出embedding vector,代表一個抽象的空間中每一個heatmap對應點所在的位置,同一目标的兩組角點之間的距離将盡可能的近,而不同目标之間的角點距離要盡可能的小,而距離本身無實際實體意義。

淺析CornerNetcornernet簡介

hourglass network

hourglass network是cornernet的基網絡,網絡結構與殘差網絡近似,先将輸出的分辨率逐漸降低,在向上采樣并進行融合,最後每個hourglass network的輸入和輸出是同分辨率的。hourglass network的輸出是作為後續corner pooling的輸入。

淺析CornerNetcornernet簡介

corner pooling

此處隻對左上角的池化進行解釋:對于輸出分為兩次池化并将二者相加,對于top pooling從下至上逐列進行max pooling,同進行left pooling逐行進行從右至左的max pooling。在最終的測試中,corner pooling将結果提升2左右。

淺析CornerNetcornernet簡介

embedding vector

corner pooling的輸出将用作heatmap、embedding vector和offset的輸入。embedding vector的工作機制主要源于損失函數的計算,pull loss減小同類角點的距離,push loss增大不同組角點的距離,使得角點可以進行有效的比對。

offset

offset的存在是因為heatmap與原圖大小不一,存在舍入誤差,需要進行修正,進一步使得角點更加接近目标的最小外接矩形。對于預測和真實的offset将采用smooth l1 loss進行損失函數的計算。

loss

最後将介紹網絡的損失函數計算,損失函數由四個部分構成:

Detect loss:角點損失

Offset loss:角點坐标修正

Pull loss:統計統一目标

Push loss:區分不同目标

淺析CornerNetcornernet簡介
淺析CornerNetcornernet簡介

不同的損失函數存在不同的作用,其中pull loss使用于同類目标的聚集,而push loss則是對不同目标的角點進行區分

效果展示

淺析CornerNetcornernet簡介

繼續閱讀