1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. def IOU1(A,B):
  4. #左上右下坐标(x1,y1,x2,y2)
  5. w=max(0,min(A[2],B[2])-max(A[0],B[0]))
  6. h=max(0,min(A[3],B[3])-max(A[1],B[1]))
  7. areaA=(A[2]-A[0]+1)*(A[3]-A[1]+1)
  8. areaB=(B[2]-B[0]+1)*(B[3]-B[1]+1)
  9. inter=w*h
  10. union=areaA+areaB-inter
  11. return inter/union
  12. def nms(dets, thresh):
  13. """Pure Python NMS baseline."""
  14. #x1、y1、x2、y2、以及score赋值
  15. x1 = dets[:, 0]
  16. y1 = dets[:, 1]
  17. x2 = dets[:, 2]
  18. y2 = dets[:, 3]
  19. scores = dets[:, 4]
  20. areas = (x2 - x1 + 1) * (y2 - y1 + 1)
  21. order = scores.argsort()[::-1]
  22.  
  23. keep = []
  24. while order.size > 0:#还有数据
  25. i = order[0]
  26. keep.append(i)
  27. #计算当前概率最大矩形框与其他矩形框的相交框的坐标
  28. xx1 = np.maximum(x1[i], x1[order[1:]])
  29. yy1 = np.maximum(y1[i], y1[order[1:]])
  30. xx2 = np.minimum(x2[i], x2[order[1:]])
  31. yy2 = np.minimum(y2[i], y2[order[1:]])
  32.  
  33. #计算相交框的面积
  34. w = np.maximum(0.0, xx2 - xx1 + 1)
  35. h = np.maximum(0.0, yy2 - yy1 + 1)
  36. inter = w * h
  37. #计算重叠度IOU:重叠面积/(面积1+面积2-重叠面积)
  38. IOU = inter / (areas[i] + areas[order[1:]] - inter)
  39. #找到重叠度不高于阈值的矩形框索引
  40. left_index = np.where(IOU <= thresh)[0]
  41. #将order序列更新,由于前面得到的矩形框索引要比矩形框在原order序列中的索引小1,所以要把这个1加回来
  42. order = order[left_index + 1]
  43. print(keep)
  44. if __name__ == '__main__':
  45. dets=[[0,0,100,101,0.9],[5,6,90,110,0.7],[17,19,80,120,0.8],[10,8,115,105,0.5]]
  46. dets=np.array(dets)
  47. nms(dets,0.5)
  48. print IOU1(dets[0],dets[2])

【NMS与IOU代码】的更多相关文章

  1. NMS的实现代码详解

    NMS代码说明(来自Fast-RCNN) 个人觉得NMS包含很多框,其坐标为(x1,y1,x2,y2),每个框对应了一个score,我们将按照score得分降序,并将第一个最高的score的框(我们叫 ...

  2. 非极大值抑制(NMS,Non-Maximum Suppression)的原理与代码详解

    1.NMS的原理 NMS(Non-Maximum Suppression)算法本质是搜索局部极大值,抑制非极大值元素.NMS就是需要根据score矩阵和region的坐标信息,从中找到置信度比较高的b ...

  3. Faster RCNN代码理解(Python)

    转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...

  4. NMS 和 Soft-NMS

    转自https://zhuanlan.zhihu.com/p/42018282 一 NMS NMS算法的大致思想:对于有重叠的候选框:若大于规定阈值(某一提前设定的置信度)则删除,低于阈值的保留.对于 ...

  5. mmdetection源码剖析(1)--NMS

    mmdetection源码剖析(1)--NMS 熟悉目标检测的应该都清楚NMS是什么算法,但是如果我们要与C++和cuda结合直接写成Pytorch的操作你们清楚怎么写吗?最近在看mmdetectio ...

  6. NMS技术总结(NMS原理、多类别NMS、NMS的缺陷、NMS的改进思路、各种NMS方法)

    ​  前言  本文介绍了NMS的应用场合.基本原理.多类别NMS方法和实践代码.NMS的缺陷和改进思路.介绍了改进NMS的几种常用方法.提供了其它不常用的方法的链接. 本文很早以前发过,有个读者评论说 ...

  7. 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)

    论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...

  8. cascade rcnn

    在region proposal阶段采用不同的iou. 第一幅图,不同颜色的线是用不同的region proposal的iou阈值,横坐标是region proposal生成的框与gt的原始iou,纵 ...

  9. 中文版 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 摘要 最先进的目标检测网络依靠区域提出算法 ...

随机推荐

  1. 8 -- 深入使用Spring -- 5...1 启用Spring缓存

    8.5.1 启用Spring缓存 Spring配置文件专门为缓存提供了一个cache:命名空间,为了启用Spring缓存,需要在配置文件中导入cache:命名空间. 导入cache:命名空间之后,启用 ...

  2. docker学习网站

    https://yeasy.gitbooks.io/docker_practice/content/compose/install.html docker compose scal 的应用举例 htt ...

  3. windows cmd命令显示UTF8设置

    windows cmd命令显示UTF8设置   在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...

  4. 国外源码精品-Android-PullToRefresh 简介与DEMO导入

    转载地址:http://my.oschina.net/cuitongliang/blog/170708 (一)&&http://my.oschina.net/cuitongliang/ ...

  5. Redis 自定义 RedisAppender 插件, 实现日志缓冲队列,集中日志输出.

    因为某些异步日志设置了即使队列满了,也不可丢弃,在并发高的时候,导致请求方法同步执行,响应变慢. 编写这个玩意,除了集中日志输出以外,还希望在高并发的时间点有缓冲作用. 之前用Kafka实现了一次入队 ...

  6. C#日志记录设计与实现(BenXHLog)

    C#日志记录设计与实现 日志记录: 日志记录在程序设计开发过程中,是非常重要的,可以供调试和记录数据,虽然说有开源的强大日志管理系统,比如apache的Log4Net,功能可谓强悍,但是有时候,不需要 ...

  7. Unity Shader 景深效果

    效果 原理: 开启摄像机的深度模式,将深度保存到一张名为_CameraDepthTexture(Unity5.0之后才有)内置的纹理中. 如果深度在焦点范围内就用原图,否则就用模糊图. Shader: ...

  8. Office Web Apps Server

    Office Web Apps Server Office Web Apps Server 是一款 Office 服务器产品,可提供针对 Office 文件的基于浏览器的文件查看和编辑服务.Offic ...

  9. Page Visibility API 页面是否获取焦点 Event: visibilitychange

    W3C 文档 https://www.w3.org/TR/page-visibility/ MDN 文档 https://www.w3.org/TR/page-visibility/ // Docum ...

  10. go 的 mysql 的简单操作

    关于 sql:https://studygolang.com/articles/3022 异常处理: http://www.jianshu.com/p/f30da01eea97 一.数据库的连接及初始 ...