当前位置: 首页 > news >正文

目标检测原理

一、什么是目标检测

目标检测的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状、姿态,再加上光照、遮挡等因素的干扰,目标检测在计算机视觉中也是一项具有挑战性的任务。

计算机视觉中关于目标检测的四大类任务:

  1. 分类(Classification):给定一张图片或一段视频判断里面包含什么类别的目标。
  2. 定位(Location):定位出这个目标的的位置。
  3. 检测(Detection):即定位出这个目标的位置并且知道目标物是什么。
  4. 分割(Segmentation):分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

而目标检测任务,其实就是分类问题+回归问题的一个叠加,分类是区分目标属于哪个类别,回归用来定位目标所在的位置。

目标检测算法的预测结果应该包含:图像、图像中的目标类别、以及每个目标的边框位置。我们用这个结构的数据和验证集的数据进行比较,来衡量目标检测的质量。

IoU(交并比)的计算:交并比是预测边界框和标注数据边界框的交集和并集之间的比率,这个统计量也叫做 Jaccard 指数(Jaccard Index)。 

精确率:给定的图片中类别C的精确率 = 图片中类别C的真正类数量 / 图片中类别 C 所有目标的数量。

平均精度:100 个精度率的值(每张图片一个值)。让我们对这些 100 个值进行平均。

平均精度均值:有20个类别,对每一个类别,我们都进行相同的计算流程:IoU -> 精确率(Precision) -> 平均精度(Average Precision)。这样就有20个类别的平均进度,我们对所有类别的平均精度值计算其均值(average/mean)

平均精度均值(mAP)是预测目标位置和类别的性能度量标准。

二、目标检测的算法

基于深度学习的目标检测算法分为2类:Two Stage和One Stage。

  1. Two Stage:先预设一个区域,改区域称为region proposal,即一个可能包含待检测物体的预选框(简称RP),再通过卷积神经网络进行样本分类计算。流程是:特征提取 -> 生成RP -> 分类/回归定位。常见的Two Stage算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等。
  2. One Stage:不用生成RP,直接在网络中提取特征值来分类目标和定位。流程是:特征提取 -> 分类/回归定位。常见的One Stage算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、YOLOv5、SSD、RetinaNet等。

1、滑动窗口生成RP:滑动窗口其实就是个穷举的过程,由于事先不知道要检测的目标大小,所以要设置不同大小比例的窗口去滑动,而且要选取合适的步长。

2、利用非极大值抑制算法挑最优解:不管是哪个目标检测的算法,一个目标都会被多次检测到,我们会有很多结果,但是大多数的结果置信度都不高,我们利用非极大值抑制算法(NMS)就能挑出那个置信度最好的结果。

三、YOLO原理

YOLO是You Only Look Once的简称,它不使用窗口滑动,而是直接将原始图片分割成互不重合的小方块,然后通过卷积最后生产这样大小的特征图,可以认为特征图的每个元素也是对应原始图片的一个小方块,然后用每个元素来可以预测那些中心点在该小方格内的目标,这就是Yolo算法的朴素思想。

YOLO网络设计:

YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。网络结构参考GooLeNet模型,包含24个卷积层和2个全连接层。对于卷积层,主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数,但是最后一层却采用线性激活函数。

相关文章:

目标检测原理

一、什么是目标检测 目标检测的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状、姿态,再加上光照、遮挡等因素的干扰,目…...

2、数仓理论概述与相关概念

1、问:数据仓库 建设过程中 经常会遇到那些问题? 模型(逻辑)重复建设 数据不一致性 维度不一致:命名、维度属性值、维度定义 指标不一致:命名、计算口径 数据不规范(字段命名、表名、分层、主题命名规范) 2、OneData数据建设核心方…...

YOLOv5 分类模型 OpenCV和PyTorch两者实现预处理的差异

YOLOv5 分类模型 OpenCV和PyTorch两者实现预处理的差异 flyfish PyTorch封装了PIL库 简单对比下两者的使用方法 import cv2 from PIL import Image import numpy as npfull_path_file_name"/media/a//ILSVRC2012_val_00001244.JPEG"#OpenCV读取图像默认是BGR顺序 …...

使用NPOI处理EXCEL文件:例1-关于优化的一些问题

记得有一次处理Excel文件对比,自己前后使用VBA和NPOI对比了下效率。由于涉及到页面的渲染和刷新,二者的处理速度差了个数量级(10多秒和几十分钟的差别)。当然使用NPOI操作时也做了一定优化。印象这么深刻这次一有需求就想到了NPOI…...

连接k8s和凌鲨

通过连接k8s和凌鲨,可以让研发过程中的重用操作更加方便。 更新容器镜像调整部署规模查看日志运行命令 架构 所有操作通过k8s proxy连接,通过设置namespace label赋予访问权限。只有赋予特定label的namespace才能被访问。 使用步骤 部署k8s proxy 你…...

C语言——结构体的应用

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 路还在继续,梦还在期…...

人机交互——机器人形态

1.聊天机器人 2.任务型机器人 3.面向FAQ的问答机器人 4.面向KB的问答机器人...

BGP的基础知识

BGP——边界网关协议 IGP——内部网关协议——OSPF、RIP、ISIS EGP——外部网关协议——EGP、BGP 边界网关协议BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的路径矢量路由协议。目前在IPV4环境下主要使用BGPV4,目前市场上也存在BGPV4&…...

2023.11.18 每日一题(AI自生成应用)【C++】【Python】【Java】【Go】 动态时间序列分析

目录 一、编程挑战:动态时间序列分析 实际应用: 实现提示: 二、实现 1. C 2. Python 3. JAVA 4. Go 一、编程挑战:动态时间序列分析 问题描述: 假设你是一名软件工程师,需要开发一个应用来分析和预…...

uniapp相关记录

一、自定义我的物品组件 my_goods.vue <template><view class"goods-item"><!-- 左侧 --><view class"goods-item-left"><radio :checked"goods.goods_state" color"#c00000" v-if"showRadio" …...

优质猫罐头有哪些品牌?分享5款宠物店自用值得推荐的猫罐头!

不知不觉已经开宠物店7年啦&#xff0c;店里的猫猫大大小小也算是尝试过很多品牌的猫罐头了。优质猫罐头有哪些品牌&#xff1f;在猫罐头的选购上一开始我也是踩了很多坑&#xff0c;各种踩雷。我深知猫罐头的各种门道&#xff0c;新手一不小心就会着道了。 优质猫罐头有哪些品…...

HTML新手入门笔记整理:HTML基本标签

结构标签 <html> </html> 告诉浏览器这个页面是从<html> 开始&#xff0c;到 </html>结束 <head> </head> 网页的头部&#xff0c;用于定义一些特殊内容&#xff0c;如页面标题、定时刷新、外部文件等。 <body> </body> …...

Redis高级特性和应用(发布 订阅、Stream)

目录 发布和订阅 操作命令 发布消息 订阅消息 查询订阅情况 查看活跃的频道 查看频道订阅数 使用场景和缺点 Redis Stream Stream总述 常用操作命令 生产端 消费端 单消费者 消费组 创建消费组 消息消费 在Redis中实现消息队列 基于pub/sub 基于Stream Re…...

RoCE、IB和TCP等网络的基本知识及差异对比

目前有三种RDMA网络&#xff0c;分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP。 其中&#xff0c;Infiniband是一种专为RDMA设计的网络&#xff0c;从硬件级别保证可靠传输 &#xff0c;技术先进&#xff0c;但是成本高昂。 而RoCE 和 iWARP都是基于以太网的…...

c语言-操作符详解(含优先级与结合性)

文章目录 了解什么是操作数、操作符操作数&#xff1a;操作符 操作符详解&#xff1a;1.算术操作符&#xff1a; 、- 、* 、/ 、%2.移位操作符: << >>3.位操作符: & | ^4. 赋值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^5. 单⽬操…...

ubuntu安装nvm

需求 在 virtualbox 虚拟机上运行的 ubuntu &#xff08;22.04.3&#xff09;里安装 nvm &#xff08;Node Version Manager&#xff09; 简述 官网文档 &#xff08;github地址&#xff09;上有提到两种安装方式&#xff0c;一种是直接 curl | wget 命令安装&#xff0c;一…...

opengl制作天空盒

首先创建顶点数组 unsigned int m_uiVaoBufferID; glGenVertexArrays(1, &m_uiVaoBufferID); 然后创建顶点缓冲区 float skyboxVertices[] {// positions-1.0f, 1.0f, -1.0f,-1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, 1.0f, -1.0f,-1.0f, 1.…...

单片机和FreeRTOS上跑机器人ROS的应用

机器人的应用越来越广泛了&#xff0c;大家熟知的稚晖君直接创业搞机器人&#xff0c;可想而至&#xff0c;接下来的十年&#xff0c;机器人绝对是热门的行业。 目前市面上很多机器人都是基于一套叫做ROS的系统开发的&#xff0c;今天就给大家分享一个跑在MCU上&#xff0c;基…...

Spring Cloud学习(十一)【深入Elasticsearch 分布式搜索引擎03】

文章目录 数据聚合聚合的种类DSL实现聚合RestAPI实现聚合 自动补全拼音分词器自定义分词器自动补全查询completion suggester查询RestAPI实现自动补全 数据同步数据同步思路分析实现elasticsearch与数据库数据同步 集群搭建ES集群创建es集群集群状态监控创建索引库1&#xff09…...

【gitlab初始密码登录失败】

gitlab初始密码登录失败 修改密码 修改密码 [rootlocalhost ~]# gitlab-rake "gitlab:password:reset[root]" Enter password: Confirm password: Password successfully updated for user with username root. # 再重新配置gitlab [rootlocalhost ~]# gitlab-ctl…...

ChatGPT+Python实现Excel自动化:批量处理、拆分与筛选实战

1. 项目概述&#xff1a;当Python遇上AI&#xff0c;Excel自动化迎来新范式最近在折腾一个老项目&#xff0c;需要批量处理上百个Excel文件&#xff0c;核心任务就三个&#xff1a;把特定关键词全部替换掉、把工作簿里的每个工作表都拆成独立文件、再按唯一值筛选数据。这活儿要…...

用CubeMX配置STM32串口DMA发送,别忘了勾选这个中断选项(避坑指南)

STM32CubeMX串口DMA发送配置全攻略&#xff1a;中断选项的隐藏玄机 在嵌入式开发中&#xff0c;串口通信是最基础也最常用的外设功能之一。当我们需要高效传输大量数据时&#xff0c;DMA&#xff08;直接内存访问&#xff09;技术能显著减轻CPU负担。STM32CubeMX作为ST官方推出…...

Anaconda卸载不干净?试试官方推荐的anaconda-clean工具(Windows/Mac通用)

Anaconda彻底卸载指南&#xff1a;官方anaconda-clean工具详解 每次重装Anaconda时最头疼的就是卸载不彻底&#xff0c;残留文件导致新版本安装失败或者运行异常。作为Python数据科学领域的标配工具&#xff0c;Anaconda的完整卸载确实需要特殊处理。官方推荐的anaconda-clean工…...

从FPGA到ASIC:偶数分频器的那些‘坑’与实战调试技巧(附Modelsim仿真波形分析)

从FPGA到ASIC&#xff1a;偶数分频器的那些‘坑’与实战调试技巧&#xff08;附Modelsim仿真波形分析&#xff09; 时钟分频电路是数字IC设计中最基础却最容易出问题的模块之一。记得我第一次独立负责一个FPGA项目时&#xff0c;就因为二分频电路的异步复位问题导致整个系统时钟…...

GitHub Skills技能生态:2026年开发者必备的AI能力封装与复用指南

前言 2026年的开发者工具生态正在经历一场深刻变革。曾经&#xff0c;我们需要为每个重复性任务手动编写脚本、配置环境、调试参数&#xff1b;如今&#xff0c;通过GitHub Skills技能生态&#xff0c;开发者可以将经过验证的最佳实践封装成可复用的模块&#xff0c;让AI助手按…...

2026年权威解读:GEO优化系统贴牌源头服务商哪家强?横向测评TOP5公司避坑攻略

当用户不再依赖传统搜索引擎输入关键词&#xff0c;转而直接向ChatGPT、DeepSeek、豆包等AI大模型提问“上海哪家宠物寄养靠谱&#xff1f;”“本地连锁宠物店推荐”时&#xff0c;企业营销的主战场已经发生了根本性迁移。这种变革催生了GEO&#xff08;生成式引擎优化&#xf…...

5步快速掌握:Fan Control免费Windows风扇控制软件终极指南

5步快速掌握&#xff1a;Fan Control免费Windows风扇控制软件终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

若依框架(RuoYi)项目实战:如何优雅地管理那些‘上不了台面’的本地Jar依赖?

若依框架(RuoYi)企业级项目中本地Jar依赖的工程化治理方案 当我们在企业级若依(RuoYi)项目中遇到那些"特殊"的本地Jar包时——可能是商业保密的SDK、历史遗留的组件&#xff0c;或是尚未发布的自研工具——简单的<includeSystemScope>true配置往往只是冰山一角…...

Taotoken 模型广场如何辅助开发者进行模型选型决策

Taotoken 模型广场如何辅助开发者进行模型选型决策 1. 模型广场的核心功能概览 Taotoken 模型广场为开发者提供了一个集中查看和管理各类大模型的平台。通过统一的界面&#xff0c;开发者可以快速浏览不同厂商提供的模型能力、定价信息以及平台实测性能参考。这种集中化的展示…...

初创团队如何利用 Taotoken 统一管理多项目的大模型 API 密钥与访问

初创团队如何利用 Taotoken 统一管理多项目的大模型 API 密钥与访问 1. 多项目密钥管理的常见挑战 初创团队在同时推进多个项目时&#xff0c;往往需要接入不同的大模型服务。每个项目可能独立申请 API Key&#xff0c;导致密钥分散在多个开发者手中。这种模式会带来三个典型…...