电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解非極大值抑制算法之Python實現

瀏覽:140日期:2022-06-15 16:35:56
目錄一、概述二、NMS 在目標檢測中的應用2.1、人臉檢測框重疊例子2.2、目標檢測 pipline三、NMS 原理3.1、重疊率(重疊區域面積比例IOU)閾值3.2、代碼示例四、NMS loss五、Soft-NMS5.1、python代碼實現5.2、Caffe C++ 版實現六、其它應用一、概述

這里不討論通用的NMS算法(參考論文《Efficient Non-Maximum Suppression》對1維和2維數據的NMS實現),而是用于目標檢測中提取分數最高的窗口的。例如在行人檢測中,滑動窗口經提取特征,經分類器分類識別后,每個窗口都會得到一個分數。但是滑動窗口會導致很多窗口與其他窗口存在包含或者大部分交叉的情況。這時就需要用到NMS來選取那些鄰域里分數最高(是行人的概率最大),并且抑制那些分數低的窗口。

NMS在計算機視覺領域有著非常重要的應用,如視頻目標跟蹤、數據挖掘、3D重建、目標識別以及紋理分析等。

二、NMS 在目標檢測中的應用2.1、人臉檢測框重疊例子

詳解非極大值抑制算法之Python實現

我們的目的就是要去除冗余的檢測框,保留最好的一個.

有多種方式可以解決這個問題,Triggs et al. 建議使用Mean-Shift 算法,利用bbox的坐標和當前圖片尺度的對數來檢測bbox的多種模式.但效果可能并不如使用強分類器結合NMS的效果好.

2.2、目標檢測 pipline

詳解非極大值抑制算法之Python實現

產生proposal后使用分類網絡給出每個框的每類置信度,使用回歸網絡修正位置,最終應用NMS.

三、NMS 原理

對于Bounding Box的列表B及其對應的置信度S,采用下面的計算方式.選擇具有最大score的檢測框M,將其從B集合中移除并加入到最終的檢測結果D中.通常將B中剩余檢測框中與M的IoU大于閾值Nt的框從B中移除.重復這個過程,直到B為空.

3.1、重疊率(重疊區域面積比例IOU)閾值

常用的閾值是 0.3 ~ 0.5.

其中用到排序,可以按照右下角的坐標排序或者面積排序,也可以是通過SVM等分類器得到的得分或概率,R-CNN中就是按得分進行的排序.

詳解非極大值抑制算法之Python實現

就像上面的圖片一樣,定位一個車輛,最后算法就找出了一堆的方框,我們需要判別哪些矩形框是沒用的。非極大值抑制的方法是:先假設有6個矩形框,根據分類器的類別分類概率做排序,假設從小到大屬于車輛的概率 分別為A、B、C、D、E、F。

(1)從最大概率矩形框F開始,分別判斷A~E與F的重疊度IOU是否大于某個設定的閾值;

(2)假設B、D與F的重疊度超過閾值,那么就扔掉B、D;并標記第一個矩形框F,是我們保留下來的。

(3)從剩下的矩形框A、C、E中,選擇概率最大的E,然后判斷E與A、C的重疊度,重疊度大于一定的閾值,那么就扔掉;并標記E是我們保留下來的第二個矩形框。

就這樣一直重復,找到所有被保留下來的矩形框。

3.2、代碼示例

在R-CNN中使用了NMS來確定最終的bbox,其對每個候選框送入分類器,根據分類器的類別分類概率做排序(論文中稱為greedy-NMS).但其實也可以在分類之前運用簡單版本的NMS來去除一些框.

python實現的單類別nms:py_cpu_nms.py.

def py_cpu_nms(dets, thresh): '''Pure Python NMS baseline.''' #x1、y1、x2、y2、以及score賦值 x1 = dets[:, 0] y1 = dets[:, 1] x2 = dets[:, 2] y2 = dets[:, 3] scores = dets[:, 4] #每一個檢測框的面積 areas = (x2 - x1 + 1) * (y2 - y1 + 1) #按照score置信度降序排序 order = scores.argsort()[::-1] keep = [] #保留的結果框集合 while order.size > 0: i = order[0] keep.append(i) #保留該類剩余box中得分最高的一個 #得到相交區域,左上及右下 xx1 = np.maximum(x1[i], x1[order[1:]]) yy1 = np.maximum(y1[i], y1[order[1:]]) xx2 = np.minimum(x2[i], x2[order[1:]]) yy2 = np.minimum(y2[i], y2[order[1:]]) #計算相交的面積,不重疊時面積為0 w = np.maximum(0.0, xx2 - xx1 + 1) h = np.maximum(0.0, yy2 - yy1 + 1) inter = w * h #計算IoU:重疊面積 /(面積1+面積2-重疊面積) ovr = inter / (areas[i] + areas[order[1:]] - inter) #保留IoU小于閾值的box inds = np.where(ovr <= thresh)[0] order = order[inds + 1] #因為ovr數組的長度比order數組少一個,所以這里要將所有下標后移一位 return keep

Faster R-CNN的MATLAB實現與python版實現一致,代碼在這里:nms.m.另外,nms_multiclass.m是多類別nms,加了一層for循環對每類進行nms而已.

四、NMS loss

值的注意的是對多類別檢測任務,如果對每類分別進行NMS,那么當檢測結果中包含兩個被分到不同類別的目標且其IoU較大時,會得到不可接受的結果。如下圖所示:

詳解非極大值抑制算法之Python實現

一種改進方式便是在損失函數中加入一部分NMS損失。NMS損失可以定義為與分類損失相同:

詳解非極大值抑制算法之Python實現

即真實列別u對應的log損失,p是C個類別的預測概率。實際相當于增加分類誤差。參考論文《Rotated Region Based CNN for Ship Detection》(IEEE2017會議論文)的Multi-task for NMS部分。

五、Soft-NMS

上述NMS算法的一個主要問題是當兩個ground truth的目標的確重疊度很高時,NMS會將具有較低置信度的框去掉(置信度改成0),參見下圖所示.

詳解非極大值抑制算法之Python實現

論文:《Improving Object Detection With One Line of Code》改進之處:

詳解非極大值抑制算法之Python實現

改進方法在于將置信度改為IoU的函數:f(IoU),具有較低的值而不至于從排序列表中刪去.

1.線性函數

詳解非極大值抑制算法之Python實現

函數值不連續,在某一點的值發生跳躍.

2.高斯函數

詳解非極大值抑制算法之Python實現

時間復雜度同傳統的greedy-NMS,為

詳解非極大值抑制算法之Python實現

5.1、python代碼實現

ua = float((tx2 - tx1 + 1) * (ty2 - ty1 + 1) + area - iw * ih) ov = iw * ih / ua #iou between max box and detection box if method == 1: # linear if ov > Nt: weight = 1 - ov else: weight = 1 elif method == 2: # gaussian weight = np.exp(-(ov * ov)/sigma) else: # original NMS if ov > Nt: weight = 0 else: weight = 1 # re-scoring 修改置信度 # boxes[pos, 4] = weight*boxes[pos, 4]5.2、Caffe C++ 版實現

makefile/frcnn

效果

詳解非極大值抑制算法之Python實現

在基于proposal方法的模型結果上應用比較好,檢測效果提升:

詳解非極大值抑制算法之Python實現

在R-FCN以及Faster-RCNN模型中的測試階段運用Soft-NMS,在MS-COCO數據集上mAP@[0.5:0.95]能夠獲得大約1%的提升(詳見這里). 如果應用到訓練階段的proposal選取過程理論上也能獲得提升. 在自己的實驗中發現確實對易重疊的目標類型有提高(目標不一定真的有像素上的重疊,切斜的目標的矩形邊框會有較大的重疊).而在SSD,YOLO等非proposal方法中沒有提升.

六、其它應用

邊緣檢測:Canny算子中的非極大值抑制是沿著梯度方向進行的,即是否為梯度方向上的極值點;

特征點檢測:在角點檢測等場景下說的非極大值抑制,則是檢測中心點處的值是否是某一個鄰域內的最大值.

以上就是詳解非極大值抑制算法之Python實現的詳細內容,更多關于非極大值抑制 Python實現的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 护栏打桩机-打桩机厂家-恒新重工| 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 奥因-光触媒除甲醛公司-除甲醛加盟公司十大品牌 | 结晶点测定仪-润滑脂滴点测定仪-大连煜烁 | 新材料分散-高速均质搅拌机-超声波分散混合-上海化烁智能设备有限公司 | 海南在线 海南一家 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 高铝矾土熟料_细粉_骨料_消失模_铸造用铝矾土_铝酸钙粉—嵩峰厂家 | 营养师网,营养师考试时间,报名入口—网站首页 | 长沙中央空调维修,中央空调清洗维保,空气能热水工程,价格,公司就找维小保-湖南维小保环保科技有限公司 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 屏蔽服(500kv-超高压-特高压-电磁)-徐吉电气 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 锂离子电池厂家-山东中信迪生电源| 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 碎石机设备-欧版反击破-欧版颚式破碎机(站)厂家_山东奥凯诺机械 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 湖南自考_湖南自学考试| 旋片真空泵_真空泵_水环真空泵_真空机组-深圳恒才机电设备有限公司 | 德国GMN轴承,GMN角接触球轴承,GMN单向轴承,GMN油封,GMN非接触式密封 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 中细软知识产权_专业知识产权解决方案提供商 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 密集柜_档案密集柜_智能密集架_密集柜厂家_密集架价格-智英伟业 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 | ZHZ8耐压测试仪-上海胜绪电气有限公司| ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 |