目标检测及锚框、IoU

文章目录

    • 1. 目标检测
    • 2. 锚框
    • 3. IoU - 交并比
    • 4. 赋予锚框标号
    • 5. 使用非极大值抑制(NMS)输出

1. 目标检测

物体检测(目标检测)是计算机视觉和数字图像处理的热门方向,意在判断一幅图像上是否存在感兴趣物体,并给出物体分类及位置等(What and Where)。本文主要进行物体检测研究背景、发展脉络、相关算法及评价指标的概述。

我们要识别中所有我们感兴趣的物体,并且找出每个物体的位置。

边缘框

边缘框是图片中物体的真实位置和范围,有两种表示方式,一种是边角坐标表示法,通过物体左上和右下两个角的坐标表示一个矩形框,还有一种是中心表示法,用物体的中心和宽高表示矩形框。

  • 一个边缘框可以通过4个数字定义
    • (左上x,左上y,右下x,右下y)
    • (左上x,左上y,宽,高)

在这里插入图片描述

目标检测数据集

  • 每行表示一个物体
    • 图片文件名、物体类别、边缘框
  • COCO数据集
    • 80物体,330K图片,1.5M物体

定义两种边缘框之间的转换函数

import torch
def box_corner_to_center(boxes):
    """ 从(左上,右下)转换到(中间,宽度,高度) """
    x1,y1,x2,y2 = boxes[:,0],boxes[:,1],boxes[:,2],boxes[:,3]
    cx = (x1+x2)/2
    cy = (y1+y2)/2
    w = x2-x1
    h = y2-y1
    boxes = torch.stack((cx,cy,w,h),dim=1)
    return boxes

def box_center_to_corner(boxes):
    """从(中间,宽度,高度)转换到(左上,右下)"""
    cx,cy,w,h = boxes[:,0],boxes[:,1],boxes[:,2],boxes[:,3]
    x1 = cx - 0.5 * w
    y1 = cy - 0.5 * h
    x2 = cx + 0.5 * w
    y2 = cy + 0.5 * h
    boxes = torch.stack((x1, y1, x2, y2), dim=1)
    return boxes

边缘框实现

from matplotlib import pyplot as plt

# 将边界框在图中画出
def bbox_to_rect(bbox,color):
    return plt.Rectangle(
        xy=(bbox[0], bbox[1]), width=bbox[2] - bbox[0], height=bbox[3] - bbox[1],
        fill=False, edgecolor=color, linewidth=2)

dog_bbox, cat_bbox = [60.0, 45.0, 378.0, 516.0], [400.0, 112.0, 655.0, 493.0]

fig = plt.figure(figsize=(5,8),dpi=100)
ax1 = fig.add_subplot(1,1,1)
image= plt.imread("code/images/catdog.jpg")
ax1.imshow(image)

ax1.axes.add_patch(bbox_to_rect(dog_bbox, 'blue'))
ax1.axes.add_patch(bbox_to_rect(cat_bbox, 'red'));
plt.show()

2. 锚框

在众多经典的目标检测模型中,均有先验框的说法,有的paper(如Faster RCNN)中称之为anchor(锚点),有的paper(如SSD)称之为prior bounding box(先验框),实际上是一个概念。

锚框的作用:

对于目标检测任务,有这样一种经典解决方案:遍历输入图像上所有可能的像素框,然后选出正确的目标框,并对位置和大小进行调整就可以完成目标检测任务。这些进行预测的像素框就叫锚框。这些锚框通常都是方形的。

同时,为了增加任务成功的几率,通常会在同一位置设置不同宽高比的锚框。锚框的设置形式有很多种。

  • 一类目标检测算法是基于锚框
    • 提出多个被称为锚框的区域(边缘框)
    • 预测每个锚框里是否含有关注的物体
    • 如果是,预测从这个锚框到真实边缘的偏移

在这里插入图片描述


3. IoU - 交并比

IoU用来计算两个框之间的相似度

在这里插入图片描述

  • 0表示无重叠,1表示重合

这是Jacquard指数的一个特殊情况

给定两个集合 A A A B B B
J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A,B)=\frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB


4. 赋予锚框标号

  • 每个锚框是一个训练样本

  • 将每个锚框,要么标注成背景,要么关联上一个真实边缘框

  • 我们可能会生成大量的锚框

    • 这个导致大量的负类样本

在蓝色格子里面寻求IoU的最高值,选中,比如:

第一个最大值为 x 23 x_{23} x23,那就用锚框2来预测边缘框3,去除锚框2边缘框3所对应的行列。

继续在剩下的格子里面寻找最大值,如 x 71 x_{71} x71,那就用锚框7来预测边缘框1,去除锚框7边缘框1所对应的行列。

在这里插入图片描述

赋予标号的方式有很多种。


5. 使用非极大值抑制(NMS)输出

  • 每个锚框预测一个边缘框
  • NMS可以合并相似的预测
    • 选中的是非背景类的最大预测值
    • 去掉所有其它和它IoU值大于 θ \theta θ的预测
    • 重复上诉过程直到所有预测要么被选中,要么被去掉

如:

在这里插入图片描述

首先选取狗类别的最大预测值,为0.9,然后去除该类别预测值小于0.9且IoU大于 θ \theta θ的值。
然后选取猫类别的最大预测值,为0.9,然后去除该类别预测值小于0.9且IoU大于 θ \theta θ的值。
在这里插入图片描述

总结:

  • 一类目标检测算法基于锚框来预测
  • 首先生成大量锚框,并赋予标号,每个锚框作为一个样本进行训练
  • 在预测时,使用NMS来去掉冗余的预测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/108706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在pycharm中,远程操作服务器上的jupyter notebook

一、使用场景 现在我们有两台电脑,一台是拥有高算力的服务器,另一台是普通的轻薄笔记本电脑。如何在服务器上运行jupyter notebook,同时映射到笔记本电脑上的pycharm客户端中进行操作呢? 二、软件 pycharm专业版,jupy…

【Python · PyTorch】线性代数 微积分

本文采用Python及PyTorch版本如下: Python:3.9.0 PyTorch:2.0.1cpu 本文为博主自用知识点提纲,无过于具体介绍,详细内容请参考其他文章。 线性代数 & 微积分 1. 线性代数1.1 基础1.1.1 标量1.1.2 向量长度&…

【LeetCode】7. 整数反转

题目链接 文章目录 Python3官方解法 ⟮ O ( ∣ x ∣ ) 、 O ( 1 ) ⟯ \lgroup O(|x|)、O(1)\rgroup ⟮O(∣x∣)、O(1)⟯写法2写法3 C官方解法 ⟮ O ( ∣ x ∣ ) 、 O ( 1 ) ⟯ \lgroup O(|x|)、O(1)\rgroup ⟮O(∣x∣)、O(1)⟯ Python3 官方解法 ⟮ O ( ∣ x ∣ ) 、 O ( 1…

数据库调优(Mysql)

1 索引 索引是帮助数据库高效查询的一种数据结构: 查询语句:select * from t where t.Col2 89; 不加索引进行数据库查询时,每次都需要将所有数据遍历一次,直到找到符合目标的数据。 加上索引之后,可以根据数据结构不同…

数据结构【DS】B树

m阶B树的核心特性: Q:根节点的子树数范围是多少?关键字数的范围是多少? A:根节点的子树数∈[2, m],关键字数∈[1, m-1]。 Q:其他结点的子树数范围是多少?关键字数范围是多少? Q:对任…

F5修复了允许远程代码执行攻击的BIG-IP认证绕过漏洞

图片 导语 近日,网络安全公司Praetorian Security的研究人员发现了一项影响F5 BIG-IP配置工具的严重漏洞,该漏洞被命名为CVE-2023-46747。攻击者可以通过远程访问配置工具来执行未经身份验证的远程代码,从而对系统进行攻击。本文将详细介绍该…

Linux(Centos7)操作记录

1、nginx -t #Nginx配置文件检查 上述截图代表检查没问题 上述截图检查配置文件配置错误,并提示错误文件位置 2、systemctl restart nginx #重启Nginx 重启Nginx失败 3、systemctl status nginx.service #查看Nginx服务状态 80端口被占导致服务启动失败 4、n…

QT OpenGL (1)2D Painting Example

2D Painting Example 为方便查阅,此文是原网站文档翻译与整理,如有侵权,请与本人联系。 官网 目录 2D Painting Example概述Helper类定义Helper类实现Widget类定义Widget类实现GLWidget类定义GLWidget类实现Window 类定义Window 类实现运行示…

STM32 PWM配置及呼吸灯

PWM的英文全称是"Pulse Width Modulation",中文翻译为"脉冲宽度调制"。 在PWM中可以调节的其实只有两个东西,一个叫做可调周期(调频率),另一个叫做占空比(高电平/周期)。 而…

STM32F103的中断

文章目录 STM32F103的NVICSTM32F103 的中断优先级分组 STM32F103的NVIC CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。 CM3中每个中断通道都具备自己的8位中断优先级控制字节, 但ST…

ArcGIS Maps SDK for JS:隐藏地图边框

文章目录 1 问题描述2 解决方案 1 问题描述 近期,将ArcGIS Api for JS v4.16更新到了ArcGIS Maps SDK for JS v4.27,原本去除地图的css代码失效了。 v4.26及以前版本 ,需要用.esri-view-surface--inset-outline:focus::after 控制边框属性。…

Vuex模块化(modules)与namespaced(命名空间)的搭配

Vuex模块化(modules)与namespaced(命名空间)的搭配 Vuex模块化(modules)格式 原理:可以对Vuex的actions,mutations,state,getters四个属性综合成一个部分&a…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展,PC互联网日益势微,各大互联网门户网站的博客、空间也跟着凋零, 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…

【Android】Android Framework系列---CarPower电源管理

Android Framework系列—CarPower电源管理 智能座舱通常包括中控系统、仪表系统、IVI系统 、后排娱乐、HUD、车联网等。这些系统需要由汽车电源进行供电。由于汽车自身的特殊供电环境(相比手机方便的充电环境,汽车的蓄电池如果没有电是需要专业人士操作…

【观察】Dell APEX云平台:引领多云时代上云新范式

毫无疑问,过去十多年是云计算发展的黄金十年,云计算理念不断被市场所接受,但随着企业上云深入和认知度的不断增加,摆在很多企业面前的选择题也发生了新变化,即从过去企业上云或不上云的纠结,转变成今天如何…

【数据结构练习题】删除有序数组中的重复项

✨博客主页:小钱编程成长记 🎈博客专栏:数据结构练习题 🎈相关博文:消失的数字 — 三种解法超详解 删除有序数组中的重复项 1.🎈题目2. 🎈解题思路3. 🎈具体代码🎇总结 1…

【Spring】Spring MVC请求响应

文章目录 1. 请求1.1 传递单个参数1.2 传递多个参数1.3 传递对象1.4 后端参数重命名1.5 传递数组1.6 传递集合1.7 传递JSON对象1.8 获取URL中参数1.9 上传⽂件1.10 获得Cookie1.11 获得Session1.12 获得Header 2. 响应2.1 返回静态界面2.2 返回数据2.3 返回HTML代码片段2.4 返回…

前端Vue页面中如何展示本地图片

<el-table :data"tableData" stripe style"width: 100%"><el-table-column prop"imgUrl" label"图片"><template v-slot"scope"><img :src "http://localhost:8888/image/ scope.row.imgUrl&qu…

基于springboot实现网吧管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网吧管理系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#x…

2023上半年系统集成项目管理工程师下午真题

文章目录 一&#xff1a;第5章 项目立项管理。第7章 项目范围管理&#xff0c;需求文件二&#xff1a;第9章 项目成本管理。第8章 项目进度管理&#xff0c;压缩工期三&#xff1a;第15章 信息&#xff08;文档&#xff09;和配置管理四&#xff1a;第18章 项目风险管理&#x…