目标检测原理
一、什么是目标检测
目标检测的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状、姿态,再加上光照、遮挡等因素的干扰,目标检测在计算机视觉中也是一项具有挑战性的任务。
计算机视觉中关于目标检测的四大类任务:
- 分类(Classification):给定一张图片或一段视频判断里面包含什么类别的目标。
- 定位(Location):定位出这个目标的的位置。
- 检测(Detection):即定位出这个目标的位置并且知道目标物是什么。
- 分割(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。
- Two Stage:先预设一个区域,改区域称为region proposal,即一个可能包含待检测物体的预选框(简称RP),再通过卷积神经网络进行样本分类计算。流程是:特征提取 -> 生成RP -> 分类/回归定位。常见的Two Stage算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等。
- 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年啦,店里的猫猫大大小小也算是尝试过很多品牌的猫罐头了。优质猫罐头有哪些品牌?在猫罐头的选购上一开始我也是踩了很多坑,各种踩雷。我深知猫罐头的各种门道,新手一不小心就会着道了。 优质猫罐头有哪些品…...
HTML新手入门笔记整理:HTML基本标签
结构标签 <html> </html> 告诉浏览器这个页面是从<html> 开始,到 </html>结束 <head> </head> 网页的头部,用于定义一些特殊内容,如页面标题、定时刷新、外部文件等。 <body> </body> …...
Redis高级特性和应用(发布 订阅、Stream)
目录 发布和订阅 操作命令 发布消息 订阅消息 查询订阅情况 查看活跃的频道 查看频道订阅数 使用场景和缺点 Redis Stream Stream总述 常用操作命令 生产端 消费端 单消费者 消费组 创建消费组 消息消费 在Redis中实现消息队列 基于pub/sub 基于Stream Re…...
RoCE、IB和TCP等网络的基本知识及差异对比
目前有三种RDMA网络,分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP。 其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 ,技术先进,但是成本高昂。 而RoCE 和 iWARP都是基于以太网的…...
c语言-操作符详解(含优先级与结合性)
文章目录 了解什么是操作数、操作符操作数:操作符 操作符详解:1.算术操作符: 、- 、* 、/ 、%2.移位操作符: << >>3.位操作符: & | ^4. 赋值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^5. 单⽬操…...
ubuntu安装nvm
需求 在 virtualbox 虚拟机上运行的 ubuntu (22.04.3)里安装 nvm (Node Version Manager) 简述 官网文档 (github地址)上有提到两种安装方式,一种是直接 curl | wget 命令安装,一…...
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的应用
机器人的应用越来越广泛了,大家熟知的稚晖君直接创业搞机器人,可想而至,接下来的十年,机器人绝对是热门的行业。 目前市面上很多机器人都是基于一套叫做ROS的系统开发的,今天就给大家分享一个跑在MCU上,基…...
Spring Cloud学习(十一)【深入Elasticsearch 分布式搜索引擎03】
文章目录 数据聚合聚合的种类DSL实现聚合RestAPI实现聚合 自动补全拼音分词器自定义分词器自动补全查询completion suggester查询RestAPI实现自动补全 数据同步数据同步思路分析实现elasticsearch与数据库数据同步 集群搭建ES集群创建es集群集群状态监控创建索引库1)…...
【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. 项目概述:当Python遇上AI,Excel自动化迎来新范式最近在折腾一个老项目,需要批量处理上百个Excel文件,核心任务就三个:把特定关键词全部替换掉、把工作簿里的每个工作表都拆成独立文件、再按唯一值筛选数据。这活儿要…...
用CubeMX配置STM32串口DMA发送,别忘了勾选这个中断选项(避坑指南)
STM32CubeMX串口DMA发送配置全攻略:中断选项的隐藏玄机 在嵌入式开发中,串口通信是最基础也最常用的外设功能之一。当我们需要高效传输大量数据时,DMA(直接内存访问)技术能显著减轻CPU负担。STM32CubeMX作为ST官方推出…...
Anaconda卸载不干净?试试官方推荐的anaconda-clean工具(Windows/Mac通用)
Anaconda彻底卸载指南:官方anaconda-clean工具详解 每次重装Anaconda时最头疼的就是卸载不彻底,残留文件导致新版本安装失败或者运行异常。作为Python数据科学领域的标配工具,Anaconda的完整卸载确实需要特殊处理。官方推荐的anaconda-clean工…...
从FPGA到ASIC:偶数分频器的那些‘坑’与实战调试技巧(附Modelsim仿真波形分析)
从FPGA到ASIC:偶数分频器的那些‘坑’与实战调试技巧(附Modelsim仿真波形分析) 时钟分频电路是数字IC设计中最基础却最容易出问题的模块之一。记得我第一次独立负责一个FPGA项目时,就因为二分频电路的异步复位问题导致整个系统时钟…...
GitHub Skills技能生态:2026年开发者必备的AI能力封装与复用指南
前言 2026年的开发者工具生态正在经历一场深刻变革。曾经,我们需要为每个重复性任务手动编写脚本、配置环境、调试参数;如今,通过GitHub Skills技能生态,开发者可以将经过验证的最佳实践封装成可复用的模块,让AI助手按…...
2026年权威解读:GEO优化系统贴牌源头服务商哪家强?横向测评TOP5公司避坑攻略
当用户不再依赖传统搜索引擎输入关键词,转而直接向ChatGPT、DeepSeek、豆包等AI大模型提问“上海哪家宠物寄养靠谱?”“本地连锁宠物店推荐”时,企业营销的主战场已经发生了根本性迁移。这种变革催生了GEO(生成式引擎优化…...
5步快速掌握:Fan Control免费Windows风扇控制软件终极指南
5步快速掌握: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、历史遗留的组件,或是尚未发布的自研工具——简单的<includeSystemScope>true配置往往只是冰山一角…...
Taotoken 模型广场如何辅助开发者进行模型选型决策
Taotoken 模型广场如何辅助开发者进行模型选型决策 1. 模型广场的核心功能概览 Taotoken 模型广场为开发者提供了一个集中查看和管理各类大模型的平台。通过统一的界面,开发者可以快速浏览不同厂商提供的模型能力、定价信息以及平台实测性能参考。这种集中化的展示…...
初创团队如何利用 Taotoken 统一管理多项目的大模型 API 密钥与访问
初创团队如何利用 Taotoken 统一管理多项目的大模型 API 密钥与访问 1. 多项目密钥管理的常见挑战 初创团队在同时推进多个项目时,往往需要接入不同的大模型服务。每个项目可能独立申请 API Key,导致密钥分散在多个开发者手中。这种模式会带来三个典型…...
