【深度學習】——物體檢測細節處理(NMS、樣本不均衡、遮擋物體)

目錄

一、候選框大量重疊問題

1、NMS核心思想

2、 步驟:

????????3、缺陷

4、改進

1)soft NMS——衰減的方式來減小預測框的分類得分

?2)softer nms——增加了位置置信度

二、樣本不平衡問題

1、不平滑的來源(3方面)

1)正負樣本不平衡

2)難易樣本不平衡

3)類別間樣本不平衡

?2、解決樣本不平衡的方法

?1)在線難樣本挖掘(online hard example mining,OHEM)

2) Focal Loss(專注難樣本的一個損失函數)

??????? 標準交叉熵損失

??????? 平衡交叉熵損失

??????? Focal Loss

3、一階段和二階段的區別

三、過擬合問題


一、候選框大量重疊問題

1、NMS核心思想

NMS:非極大值抑制,抑制的是得分低的預測框,涉及到兩個指標,IOU(交并比:兩個框的重疊區域面積與兩個框并集面積的比值)和預測框得分,若有多個預測框預測的是同一個物體,若兩個框的IOU值大于閾值(一般閾值取0.5和0.7),那么NMS算法將會把得分低的預測框丟棄。

?

2、 步驟:

1)得到所有的預測框

2)將預測框按照得分降序排序

3)將最高得分的預測框與剩余的預測框,計算IOU,將IOU大于閾值的框去掉

4)將最高得分的預測框記錄下來,再從剩下的預測框中重復1)-4)直到只有一個預測框為止

3、缺陷

1)當物體出現比較密集的時候,兩個預測框的IOU比值也有可以會超過閾值,強制將得分低的預測框去掉,會導致漏檢,降低模型的召回率。這對于互相遮擋的物體群檢測是不利的。

2)閾值難以確定。過高導致誤檢率高,過低導致漏檢低。

3)單純使用預測框得分來作為預測框的置信度,不太合適,因為有的預測框雖然得分高,但是預測的位置不準確

4)速度慢,算法涉及多重循環,在進行大量預測框的計算時,會速度減慢

4、改進

1)soft NMS——衰減的方式來減小預測框的分類得分

NMS強制將IOU超過閾值的低分預測框歸零,soft nms是通過衰減的方法來將低分的預測框的得分降低,這樣在后面可能會將這個框保留下來。開始不會將預測框強制去掉,而是到最后去掉低于置信度閾值的預測框

具體得分衰減公式主要分為線性衰減和高斯衰減,線性衰減因為在閾值附近會出現得分的突變,不是連續的,這種跳變會給檢測帶來很大的波動,一般情況下采用的是連續的高斯衰減。

Soft-NMS的改進有兩種形式,一種是線性加權的:

一種是高斯加權的:

不足:

1)閾值還是比較難確定

2)得分高的位置未必準確

改進:

相對于nms的改進在于不是強制將得分低的預測框給丟棄,而是將其保留但是降低了其得分,使得對于密集目標檢測的時候不至于漏檢,減緩了這種問題,有效地提高了準確率

?2)softer nms——增加了位置置信度

nms和soft nms都是采用了分類置信度(得分)來作為預測框的排序指標,這種情況只適用于所有的得分高的預測框的位置和分類一樣準確的情況下。但是實際情況不是這樣的,分類得分高的預測框其位置不一定準確,因此基于這個考慮,提出了sofer nms,主要是在nms的基礎上不斷地改變預測框的位置,以此來增加預測框的位置精度。

二、樣本不平衡問題

1、不平滑的來源(3方面)

1)正負樣本不平衡

正樣本:含有目標物體的候選框

負樣本:不含目標物體的候選框

在一張圖像中,一般只存在個位數的目標對象,但是深度學習網絡一般會生成大量的候選框,比如faster-rcnn利用RPN網絡生成了2000個錨框,這里面可能有100個正樣本框,其余都是大量的背景框(負樣本),導致正負樣本數量極度不平衡,降低了精度

2)難易樣本不平衡

難樣本:分類不明確的樣本,比如候選框在前景和背景的過渡區域的框,分為難正樣本,難負樣本

易樣本:分類明確,分為易正樣本與易負樣本,和真實框重合度非常高為易正樣本,和真實框不重合的為易負樣本

在fasterrcnn中rpn生成框網絡中,生成了大量的候選框,大部分的候選框都是易樣本,這對于模型的參數收斂作用是非常有限的,而我們更加希望的是模型去利用難樣本進行模型的訓練,以此來提高精確度。但是大量的候選框都是在背景上,這導致易樣本數量龐大,而這部分更有價值的難樣本的數量卻非常有限,這就造成了難易樣本的不平衡。一般難易不平衡和正負樣本不平衡問題是有交叉的,這就導致解決這兩個問題的方法是可以通用有效的。

3)類別間樣本不平衡

在有些問題中,存在多類別分類,但是不同目標的數量不一樣,如數據集中有100萬個車輛的標簽,有1000個行人的標簽,這導致在訓練的過程中,模型會更加地關注與減小車輛的損失,而導致行人的檢測精度大大下降。不同類別的數量差異,導致了類別間不平衡。

?2、解決樣本不平衡的方法

通用方法:

1)在fasterRcnn和SSD中,根據樣本與真實物體的IOU大小,設置了3:1的正負樣本比例。緩解了前兩種的不均衡物體

2)在RPN中根據前景的得分排序篩選出了2000個框作為候選框,也實現了樣本不平衡的緩解

3)權重懲罰:對于難易樣本不平衡和類別間不平衡的方法,可以增加對難樣本和少樣本的損失權重,緩解不平衡問題

4)數據增強:擴充數據量來實現類別間不平衡的方法

?1)在線難樣本挖掘(online hard example mining,OHEM)

由兩個RCNN組成,一個RCNN負責前向傳播,得到難樣本,一個RCNN進行前向和后向傳播,實現參數的更新。難樣本的話主要是將損失較大的樣本作為難樣本

參考:https://zhuanlan.zhihu.com/p/59002127

2) Focal Loss(專注難樣本的一個損失函數)

參考:https://blog.csdn.net/qq_42013574/article/details/105864230

1.標準交叉熵損失

標準的交叉熵(Cross Entropy,CE)函數,其形式如下所示。

公式中,p代表樣本在該類別的預測概率,y代表樣本標簽。可以看出,當標簽為1時,p越接近1,則損失越小;標簽為0時p越接近0,則損失越小,符合優化的方向。(當預測標簽越接近真實標簽時,損失越小

標準的交叉熵中所有樣本的權重都是相同的,因此如果正、負樣本不均衡,大量簡單的負樣本會占據主導地位,少量的難樣本與正樣 本會起不到作用,導致精度變差。

為了方便表示,按照中將p標記為pt:

則交叉熵可以表示為:


2.平衡交叉熵損失

?

為了改善樣本的不平衡問題,平衡交叉熵在標準的基礎上增加了 一個系數αt來平衡正、負樣本的權重,αt由超參α按照下式計算得來,α取值在[0,1]區間內


有了αt,平衡交叉熵損失公式如式:


盡管平衡交叉熵損失改善了正、負樣本間的不平衡,但由于其缺 乏對難易樣本的區分,因此沒有辦法控制難易樣本之間的不均衡。

3.Focal Loss

Focal Loss為了同時調節正、負樣本與難易樣本,提出了如下式所示的損失函數。

對于該損失函數,有如下3個屬性:

??? 與平衡交叉熵類似,引入了αt權重,為了改善正負樣本的不均衡,可以提升一些精度。
??? ·(1-pt)^γ是為了調節難易樣本的權重。當一個邊框被誤分類時,pt 較小,則(1-pt)γ接近于1,其損失幾乎不受影響;當pt接近于1時,表明其分類預測較好,是簡單樣本,(1-pt)γ接近于0,因此其損失被調低了。
??? γ是一個調制因子,γ越大,簡單樣本損失的貢獻會越低

為了驗證Focal Loss的效果,何凱明等人還提出了一個一階物體 檢測結構RetinaNet。

?對于RetinaNet的網絡結構,有以下5個細節:

??? 在Backbone部分,RetinaNet利用ResNet與FPN構建了一個多尺 度特征的特征金字塔。
??? RetinaNet使用了類似于Anchor的預選框,在每一個金字塔層, 使用了9個大小不同的預選框。
??? 分類子網絡:分類子網絡為每一個預選框預測其類別,因此其 輸出特征大小為KA×W×H,A默認為9,K代表類別數。中間使用全 卷積網絡與ReLU激活函數,最后利用Sigmoid函數輸出預測值。
??? 回歸子網絡:回歸子網絡與分類子網絡平行,預測每一個預選框的偏移量,最終輸出特征大小為4A×W×W。與當前主流工作不同 的是,兩個子網絡沒有權重的共享。
??? ·Focal Loss:Focal Loss在訓練時作用到所有的預選框上。對于兩個超參數,通常來講,當γ增大時,α應當適當減小。實驗中γ取2、α取0.25時效果最好
?

3、一階段和二階段的區別

fasterrcnn的精度比SSD高的原因主要是因為多了一個RPN網絡,用于生成正負樣本3:1的樣本,解決了正負樣本不平衡的問題,但是SSD一階段的是直接篩選得到的預測框,因此主要的原因就是因為正負樣本不平衡的原因造成了二者之間精度的區別。而focal loss損失函數構造出來的retinanet模型在精度上是可以和fasterrcnn媲美的。

三、過擬合問題

可看文章:原創 【深度學習】——過擬合的處理方法

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

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

相關文章

忙著,快樂著

無比充實的周末,好久沒有這樣忙過了,周六早上七點多起床去上考研課,上了整整一天,晚上回到寢室用吃飯的時間讓自己放松一下,看了一會兒綜藝節目,吃晚飯就開始寫這次的代碼,寫累了就去洗洗睡了&a…

ABB Fronius TPS 4000/5000 IRC5 接口

在RobotStudio生成機器人系統時,選擇: Power Source option 650-9 Fronius TPS 4000/5000。Fronius的設備類別和設置被激活。此選項支持福尼斯TPS 4000/5000弧焊電機,包括支持三種焊接模式: 1 Job模式 2 修正的Job模式 …

ASP.NET 實現Base64文件流下載PDF

因為業務需要調用接口獲取的是 Base64文件流 需要提供給客戶下載PDF文檔 源碼部分借鑒網上,具體地址忘記了。 //Base64文件流 byte[] buffer Convert.FromBase64String(decodedString); System.IO.Stream iStream new System.IO.MemoryStream(buffer);try{int len…

Viewpager無限循環(首頁與尾頁平滑過渡)

#Viewpager無限循環(首頁與尾頁平滑過渡) ##double kill 在網上找了不少的viewpager無限輪播的例子,大部分都是Interger.MAX_VALUES。 滑到最后一頁的時候setCurrentItem(0),這樣雖然實現了無限輪播,但是當從最后一頁跳轉到第一頁的時候不夠優雅。。通過…

【深度學習】——物體檢測的難點

目錄 一、小物體檢測 1、降采樣率減小 空洞卷積 2、anchor設計 1)統計方法 2)anchor邊框聚類 3、多尺度訓練(multi scale training——MST) 4、 特征融合 一、小物體檢測 在分類任務中,一般物體的大小都差不多&a…

ABB 機器人 通信指令(人機對話):

(1)清屏指令:TPErase (2)寫屏指令:PWrite String   tring:顯示的字符串。(string)在示教器顯示屏上顯示字符串數據,也可以用“……”形式直接定義字符串,每一個寫屏…

hadoop streaming編程小demo(python版)

大數據團隊搞數據質量評測。自動化質檢和監控平臺是用django,MR也是通過python實現的。(后來發現有orc壓縮問題,python不知道怎么解決,正在改成java版本) 這里展示一個python編寫MR的例子吧。 抄一句話:Hadoop Streaming是Hadoop提…

Asp.net在IE10、IE11下事件丟失經驗總結

asp.net4.0出生得比IE10早,所以asp.net4.0以前版本不認識IE10 的 User-Agent 標頭,導致的后果就是ASP.NET 特定功能失效,例如:頁面報錯__doPostBack找不到,不支援 Cookies 功能等等。這屬于.net的Bug,微軟也…

第6章 循環結構

循環語句: 可以讓一部分代碼,反復執行 1.1 循環語句while while循環: 編寫格式:while(條件){ 循環體 } 條件: 當條件是true,就執行循環體,執行完循環體后 程序再次執行while中的條件,如果條件還是true,繼續執行循環體 直到條件是false的時候,循環就結束 public class WhileDem…

【深度學習】——pytorch搭建模型及相關模型

目錄 1、搭建模型的流程 1)步驟 2)完整代碼——手寫minist數據集為例(這里使用的數據集是自帶的) 2、搭建模型的四種方法 1)方法一——利用nn.Sequential() 2)方法二——利用co…

ABB robot 與 Fronius 設備 IO

ABB robot 與 Fronius 設備 IO

初次使用cocoapods注意事項

在僅僅用cocoapods時可能會遇到各種各樣的錯誤和問題 這里中總結下: 1.首先使用cocoapods有非常多優點,在github上非常多優秀的開源項目都用到了它;假設你不會使用它,那么非常多優秀的開源項目你下載下來了也發現跑不起來,假設發現有Profile,Profile.lock,Pods等cocoapods相關…

MongoDB復制集技術

為什么使用MongogDB復制集技術? mysql中:一主一從,一主多從結構存在的問題 1、 fileover(故障轉移)a) 選主投票b) 切換 2、 是否對就用透明化 3、 數據補償的問題a) 兩階段數據補償 4、 解決方法 mysql中使用MHAVIP b…

Linux文件系統的實現 (圖文并茂,比較好)

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝! Linux文件管理從用戶的層面介紹了Linux管理文件的方式。Linux有一個樹狀結構來組織文件。樹的頂端為根目錄(/),節點為目錄&#xff0…

【深度學習】——如何處理輸入圖像大小不一樣的情況

這里一般有常見的幾種方法: 1)將圖像縮放成大小一致后再輸入,如RCNN算法 2)roi pooling:這里允許輸入圖像的大小不一樣,后續根據指定的固定大小來求解池化的核大小,以此來得到相同大小的特征圖&…

ROS探索總結(一)——ROS簡介

隨著機器人領域的快速發展和復雜化,代碼的復用性和模塊化的需求原來越強烈,而已有的開源機器人系統又不能很好的適應需求。2010年Willow Garage公司發布了開源機器人操作系統ROS(robot operating system),很快在機器人…

微信瀏覽器取消緩存的方法

摘要:做微信公家號以及調試手機頁面的時辰,防止不了頁面要跳轉到微信閱讀器打開,調試階段,android版微信閱讀器一直都默許緩存html靜態資本,每一次靜態資本變革乃至新內容發布的時辰在微信閱讀器上都極有可能不克不及更新&#xf…

【機器視覺】——裂紋檢測筆記

目錄 傳統算法處理裂縫的基本思路: 第一種思路 第二種思路: 第三種思路 CPP代碼 halcon代碼 python代碼 Matlab代碼 深度學習缺陷檢測 裂縫檢測文獻 傳統算法處理裂縫的基本思路: 第一種思路 1.先轉換彩色圖為灰度圖 2.進行自適應…

利用union判斷系統的大小端

int checkCPUendian()//返回1,為小端;反之,為大端; { union{ unsigned int a; unsigned char b; }c; c.a 1; return 1 c.b; }大端模式(Big-endian),是指數據的高字節保存在內存的低地址中,而數據…

Filter(過濾器)?和?interceptor(攔截器)的區別

Filter(過濾器) 和 interceptor(攔截器)的區別 1.攔截器是基于java反射機制的,而過濾器是基于函數回調的。 2.過濾器依賴于Servlet容器,而攔截器不依賴于Servlet容器。 3.攔截器只對Action請求起作用&#…