目标检测——目标检测概述

news2024/10/6 4:02:21

目录

  • 目标检测
  • 常用的开源数据集
    • PASCAL VOC数据集
    • MS COCO数据集
  • 常用的评价指标
    • IOU(交并比)
    • mAP(Mean Average Precision)
  • NMS(非极大值抑制)
  • 目标检测方法分类

目标检测

在这里插入图片描述
在这里插入图片描述

常用的开源数据集

PASCAL VOC数据集

在这里插入图片描述
下载地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MS COCO数据集

在这里插入图片描述

常用的评价指标

IOU(交并比)

在这里插入图片描述
在这里插入图片描述

import numpy as np

def IOU(box1,box2,wh=False):
    #判断表示方式
    if wh==False:
        #极坐标表示
        xmin1,ymin1,xmax1,ymax1=box1
        xmin2,ymin2,xmax2,ymax2=box2
    else:
        #中心点坐标表示
        #第一框
        xmin1,ymin1=int(box1[0]-box1[2]/2.0),int(box1[1]-box1[3]/2.0)
        xmax1,ymax1=int(box1[0]+box1[2]/2.0),int(box1[1]+box1[3]/2.0)
        #第二框
        xmin2,ymin2=int(box2[0]-box2[2]/2.0),int(box2[1]-box2[3]/2.0)
        xmax2,ymax2=int(box2[0]+box2[2]/2.0),int(box2[1]+box2[3]/2.0)
    #获取交集的左上角和右下角坐标
    xx1=np.max(xmin1,xmin2)
    yy1=np.max(ymin1,ymin2)
    xx2=np.min(xmax2,xmax1)
    yy2=np.min(ymax1,ymax2)
    #计算交集面积
    inter_area=(np.max(0,xx2-xx1))*(np.max(0,yy2-yy1))
    #计算并的面积
    area1=(xmax1-xmin1)*(ymax1-ymin1)
    area2=(xmax2-xmin2)*(ymax2-ymin2)
    union_area=area1+area2-inter_area
    #IOU
    IOU=inter_area/(union_area+1e-6)
    return IOU
import matplotlib.pyplot as plt
import matplotlib.patches as patches #给图像打上矩形框

#真是框 预测框
true_box=[100,35,398,400]
pre_box=[40,150,355,398]
#将框绘制在图像上
img=plt.imread('dog.jpeg')
fig=plt.imshow(img)
#将真实框和预测框绘制在图像上
fig.axes.add_patch(plt.Rectangle((true_box[0],
                                  true_box[1],
                                  width=true_box[2]-true_box[1],
                                  height=true_box[3]-true_box[1],
                                  fill=False,
                                  edgcolor='blue',
                                  linewidth=2)))
fig.axes.add_patch(plt.Rectangle((pre_box[0],
                                  pre_box[1],
                                  width=pre_box[2]-pre_box[1],
                                  height=pre_box[3]-pre_box[1],
                                  fill=False,
                                  edgcolor='red',
                                  linewidth=2)))

在这里插入图片描述

IOU(ture_box,pre_box)

0.5114435907762924

mAP(Mean Average Precision)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
voc2010前,求取Recall11个点对应的presion,求平均
voc2010后,使用分段函数的线下面积

NMS(非极大值抑制)

去除冗余检测框,保留最好的一个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

def nms(boxes,score,thre):
    #容错处理
    if (len(boxes)==0):
        return [],[]
    #类型转换
    #box使用极坐标
    boxes=np.array(boxes)
    score=np.array(score)
    #获取左上角和右下角坐标
    x1=boxes[:,0]
    y1=boxes[:,1]
    x2=boxes[:,2]
    y2=boxes[:,3]
    #计算面积
    areas=(x2-x1)*(y2-y1)
    #NMS
    picked_boxes=[]
    picked_socre=[]
    #排序:小->大
    order=np.argsort(score)
    while order.size>0:
        #获取score最大的索引
        index=order[-1]
        #保留下来
        picked_boxes.append(boxes[index])
        picked_score.append(score[index])
        #计算IOU
        #交的面积
        x11=np.maximum(x1[index],x1[order[:-1]])
        y11=np.maximum(y1[index],y1[order[:-1]])
        x22=np.maximum(x2[index],x2[order[:-1]])
        y22=np.maximum(y2[index],y2[order[:-1]])
        w=np.maximum(0.0,x22-x11)
        h=np.maximum(0.0,y22-y11)
        inter_area=w*h
        #交并比
        iou=inter_area/(areas[index]+areas[order[:-1]]-inter_area)
        #删除冗余框
        keep_boxes=np.where(iou<thre)
        #更新order
        order=order[keep_boxes]
    return picked_boxes,picked_score
bounding=[(187,82,337,317),(150,67,305,282),(246,121,368,304)]
confidence_score=[0.9,0.65,0.8]
threshold=0.5

box,score=nms(bounding,confidence_score,threshold)

目标检测方法分类

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

遭遇勒索攻击,日本名古屋港停摆两天!

日前&#xff0c;中央社东京报道一则勒索软件讯息。日本名古屋港的货柜码头遭受勒索病毒攻击后发生系统故障&#xff0c;系统数据已被加密&#xff0c;无法装卸货柜&#xff0c;造成港内5处货柜码头全数停摆长达两天&#xff0c;造成了巨额损失。 名古屋港是日本汽车产业聚集的…

ArcGIS如何制作横版图例

如果你经常制图&#xff0c;肯定使用过插入图例这个功能&#xff0c;默认情况下&#xff0c;插入的图例是竖着的&#xff0c;在某些情况下&#xff0c;如果需要横着的图例是否可以实现呢&#xff0c;答案是肯定的&#xff0c;这里为大家介绍一下ArcGIS如何制作横版图例&#xf…

DC电源模块输出电压的关键参数详细说明

BOSHIDA DC电源模块输出电压的关键参数详细说明 DC电源模块是一种直流电源设备&#xff0c;广泛应用于各种电子设备的供电系统中。DC电源模块的输出电压是其中一个非常关键的参数&#xff0c;对于电子设备的性能和稳定性都有着重要的影响。以下将详细描述DC电源模块输出电压的…

状态模式:实现对象状态的封装和切换

状态模式是一种行为设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。该模式将对象的行为封装在不同的状态类中&#xff0c;使得对象可以根据其内部状态的改变而改变行为&#xff0c;从而实现了状态和行为的解耦。 结构和参与者 状态模式包含以下几个关键角色&…

什么是RPC并实现一个简单的RPC

1. 基本的RPC模型 主要介绍RPC是什么&#xff0c;基本的RPC代码&#xff0c;RPC与REST的区别&#xff0c;gRPC的使用 1.1 基本概念 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务本地过程调用&am…

【仲裁器】轮询仲裁round-robin,rr

起因&#xff1a;在多主单从的设计中&#xff0c;当多个源端同时发起传输请求时&#xff0c;需要仲裁器根据优先级来判断响应哪一个源端。轮询仲裁&#xff1a;各个源端优先级相同&#xff0c;当其同时发起请求时&#xff0c;依次进行响应。 电路图 代码 module rr_arb(input…

ACREL-5000能耗管理系统在某机场的应用 安科瑞 许敏

摘要&#xff1a;大型公共建筑总面积不足城镇建筑总面积的4%&#xff0c;但总能耗却占全国城镇总耗电量的22%&#xff0c;大型公共建筑单位面积年耗电量达到70&#xff5e;300KWh&#xff0c;为普通居民住宅的10&#xff5e;20倍。公共建筑是节能大户和节能重点&#xff0c;做好…

【HarmonyOS】ArkTS学习之基于TextTimer的简易计时器

【关键字】 ArkTS、计时器、TextTimer 【介绍】 TextTimer是ArkTS提供的通过文本显示计时信息并控制其计时器状态的组件。今天就给大家展示一个基于TextTimer的简易计时器的实现吧。在使用之前我们要先了解它的用法&#xff1a; TextTimer(options?: { isCountDown?: boolean…

【文末送书】Python深度学习(基于PyTorch)

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。搜…

FIR 滤波器去除噪声

目录 FIR 滤波器去除噪声 解决方案一&#xff1a;滑动平均滤波方法 解决方案二&#xff1a;另外一种理解角度-----引入权重系数概念 FIR滤波器表达式 FIR滤波器 一、FIR滤波器的基本结构 二、FIR滤波器的设计方法 1、频率采样法 2、窗函数法 三、FIR滤波器的性能指标 …

【2023,学点儿新Java-33】字符型变量char | 布尔类型变量 boolean:true、false

前情提要&#xff1a; 【2023&#xff0c;学点儿新Java-32】Java基础小练习&#xff1a;根据圆周率与半径求圆的面积 | 温度转换 | 计算矩形面积 | 判断奇偶数 | 年龄分类【2023&#xff0c;学点儿新Java-31】测试&#xff1a;整型和浮点型变量的使用 | 附&#xff1a;计算机存…

(超详解)--->自定义类型(结构体,枚举,联合)

目录 本章学习重点&#xff1a; 1&#xff1a;结构体类型的声明与变量的定义 2&#xff1a;如何求解结构体的大小(结构体的内存对齐) 3:结构体传参&#xff0c;结构体实现位段 4&#xff1a;枚举类型的定义和优点 5&#xff1a;联合的定义与特点及大小的计算 1&#xff1a;结构…

Kind | Kubernetes in Docker 把k8s装进docker!

有点像杰克船长的黑珍珠 目录 零、说明 一、安装 安装 Docker 安装 kubectl 安装 kind 二、创建/切换/删除集群 创建 切换 删除 将镜像加载到 kind 群集中 零、说明 官网&#xff1a;kind Kind&#xff1a; Kubernetes in Docker 的简称。kind 是一个使用 Docker 容…

【技能实训】DMS数据挖掘项目-Day09

文章目录 任务9【任务9.1.1】升级DataBase类为可序列化的类&#xff0c;以便在文件保存或网络中传递【任务9.1.2】升级LogRec类为可序列化的类&#xff0c;以便在文件保存或网络中传递【任务9.1.3】升级MatchedLogRec类为可序列化的类&#xff0c;以便在文件保存或网络中传递【…

java通过正则表达式提取信息

java通过正则表达式提取信息 工具类如下 package com.datafactory.util;import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;import java.util.regex.Matcher; import java.util.regex.Pattern;Component Slf4j public class RegexUtils {/…

“简单易懂的排序:深入了解直接选择排序“

文章目录 &#x1f50d; 选择排序的原理与过程&#x1f4c8; 选择排序的优缺点&#x1f449; 代码实现 &#x1f50d; 选择排序的原理与过程 本文我们直接说一个优化过的直接选择排序。其思路大同小异. 选择排序的思路很简单 每次从待排序的数据中选择一个最小和最大的元素&a…

记一次rabbitmq消息发送成功,消费丢失问题

记一次rabbitmq消息发送成功&#xff0c;消费丢失问题 背景 测试数据归档&#xff0c;偶现数据未归档 排查 idea线上调试&#xff0c;log日志&#xff0c;数据库消息发送记录&#xff0c;代码分块重复执行看哪块出的问题&#xff0c;结果均无问题&#xff0c;最后使用rabbi…

网关选型对比

网关选型 网关简介 网关是将一个网络与另一个网络进行相互连通&#xff0c;提供特定应用的网络间设备&#xff0c;应用网关必须能实现相应的应用协议。应用网关可以看做是运行于要求特定业务的客户机与提供所需业务的服务器之间的中间过程。应用网关在这类过程中&#xff0c;从…

MySQL练习题(6)

创建两个表插入数据 CREATE DATABASE beifen;use beifen;CREATE TABLE books(bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL);INSERT INTO booksVALUES (11078, Learning MySQL, 2010),(11033, Study Html, 2011),(11035, How to u…

Linux—实操篇:组管理和权限管理

目录 1、Linux组基本介绍 2、文件/目录 所有者 2.1、查看文件所有者 2.1、修改文件的所有者 3、组的创建 4、文件/ 目录所在组 4.1、查看文件/目录所在组 4.2、修改文件/ 目录所在组 5、其他组 6、改变用户所在组 7、权限基本介绍 8、rwx权限详解 8.1、rwx作用到文…