目标检测概述

1.是什么?

目标检测是计算机视觉领域的核心问题之一,其任务就是找出图像中所有感兴趣的目标,确定他们的类别和位置。由于各类不同物体有不同的外观,姿态,以及不同程度的遮挡,加上成像是光照等因素的干扰,目标检测一直以来是一个很有挑战性的问题。

目标检测任务主要可以分为四个小任务:

(1)分类classification:给定一张图像,要知道里面包含什么类别的目标。

(2)定位location:给定这个目标在图像中的位置。

(3)检测detection:定位出目标的位置并判断这个目标的类别。

(4)分割segmentation:确定每个像素属于哪个目标或者场景。

综上所述,目标检测是一个分类、回归问题的叠加。

2.发展历程

目标检测的发展可以划分为两个周期:

(1)传统目标检测算法(1998-2014):传统目标检测算法主要基于手工提取特征,具体步骤可概括为:选取感兴趣区域->对可能包含物体的区域进行特征分类->对提取的特征进行检测。虽然传统目标检测算法经过了十余年的发展,但是其识别效果并没有较大改善且运算量大,此处不再详细介绍。

(2)基于深度学习的目标检测算法(2014-):该方法主要分为Anchor-based的Two Stage和One Stage和Anchor-free两种思路

a)Two Stage:先预设一个区域,该区域称为Region Proposal,即一个可能包含待检测物体的预选框(简称RP),再通过卷积神经网络进行样本分类计算。该算法的流程是:特征提取 -> 生成RP -> 分类/回归定位。常见的Two Stage算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、R-FCN等,其特点是检测精度高,但是检测速度不如One Stage方法高。

b)One Stage:直接在网络中提取特征值来分类目标和定位。该算法的流程是:特征提取 -> 分类/回归定位。常见的One Stage算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、YOLOv5、SSD、RetinaNet等,其特点是检测速度快,但是精度没有Two Stage方法高。

c)Anchor-free:该方法通过确定关键点的方式来完成检测,大大减少了网络超参数的数量。

3.基础知识

3.1概述

 无论使用传统方法还是深度学习的方法来完成目标检测任务,一定要遵循三个步骤:检测窗口的选择+图像特征提取+分类器设计

3.1.1 候选框提取


候选区域(Region proposal),就是预先找出图中目标可能出现的位置,通过利用图像中的纹理、边缘、颜色等信息,保证在选取较少窗口的情况下保持较高的召回率。

Region Proposal方法比传统的滑动窗口方法获取的质量要更高。比较常用的Region Proposal方法有:SelectiveSearch(SS,选择性搜索)、Edge Boxes(EB)

边框回归(Bounding Box Regression):是对Region Proposal进行纠正的线性回归算法,目的是为了让Region Proposal提取到的窗口与目标窗口(Ground Truth)更加吻合。

候选框如何产生: 其实物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。滑窗法作为一种经典的物体检测方法,不同大小的窗口在图像上进行滑动时候,进行卷积运算后的结果与已经训练好的分类器判别存在物体的概率。选择性搜索(Selective Search)是主要运用图像分割技术来进行物体检测。

滑窗法:

首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后,会得到不同窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终,经过NMS筛选后获得检测到的物体。

滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。

选择搜索:

滑窗法类似于穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的,这样搜索的效率就很低。

选择搜索算法观点:图像中物体可能存在的区域应该是有某些相似性或者连续性的,因此选择搜索采用子区域合并的方法进行提取边界框bounding box。

首先,对输入图像进行分割并产生许多子区域,其次,根据这些子区域之间的相似性(颜色、纹理、大小等)进行区域合并,由小变大,不断迭代并合并,每次迭代过程中对这些合并的子区域做外切矩形,这些子区域的外切矩形就是通常说的候选框。

自下而上,也就是从像素级开始检测,慢慢融合到比较大的位置。scale1 就是最小尺度上分割成很多小的区域(super pixel,超像素),把特征距离近的(如颜色比较像)的都融合到一起,产生比较大的区域。scale2 就是中间尺度上的分割和融合,能得到更大的区域,scale3同理。最后就产生了目标框。

选择性搜索的优点:

计算效率高于滑窗法
由于采用子区域合并策略,故可以包含各自大小的疑似物体框
合并区域相似的指标多样性,提高了检测物体的概率


3.1..2 特征提取


在选定候选区域之后,我们需要提取图像的特征来进行表达,传统的有监督的方法和以CNN为代表的无监督特征学习方法都可以派上用场。常见的传统特征有Haar特征、LBP、HOG等。这些特征都是研究人员通过长时间的学术研究和实际项目验证得来的,虽然在比较简单的任务中可以取得很好的结果,但是设计成本很高,而且面对复杂任务时鲁棒性远远不够。

3.1.3 分类器


常常被使用的分类器包含Adaboost,SVM,Decision Tree等。在很多时候单一的分类器可能并不能满足我们的要求,如今使用深度学习来完成各项任务,尤其是参加各类比赛的时候,一定会使用不同的模型不同的输入进行Ensemble。比如我们常见的使用不同的裁剪子区域进行预测,或者使用不同的基准模型进行预测,最后取平均概率等。

3.2 目标检测性能评估参数


3.2.1 Ground Truth

对于任何算法,度量总是需要与数据的真实值(ground truth)进行比较,对于物体检测问题,GT 包括图像,图像的目标类别及 图像中每个目标的边界框。对于下图,3组数字定义的GT表示了其真实值,包括起始点(左上角)的坐标(X,Y)、宽度、高度、类别。

3.2.2 IoU(交并比)

实际中如何判定预测框的正确性呢,首先需要知道每个检测的正确性,测定一个给定的边框的正确性的度量标准是IoU(交并比),也称检测评价函数。

我们使用IoU来确定检测是否正确需要一个阈值,最常用的是0.5,即如果IoU>0.5,则认为是真实的检测(true detection),否则认为是错误的检测(false detection)。

Precision(准确率/查准率P)和Recall(召回率/查全率R)

一般来说,P和R是不可兼得的,召回率越高,准确率越低。

TP:实际为正,且被预测为正的实例
FP:实际为负,但被预测为正的实例
TN:实际为负,且被预测为负的实例
FN:实际为正,但被预测为负的实例


3.2.3 PR曲线

一般来说我们希望这两个P和R都是越高越好,然而没有这么好的事情,两者是矛盾体,要根据不同的情况来选取好的平衡点才可以。根据学习器的预测结果对样本进行排序,排在前面的就被认为是最可能为正例的样本,然后按此顺序依次吧样本喂给学习器,我们把每次的准确率和召回率描出来就会得到一个P-R曲线(称为P-R图)。

如何评价P-R曲线:

1)如果一个曲线被另一个曲线包围,那么被包围的曲线更差些
2)两者有重叠,那就是判断曲线下面积的大小,但不太容易估算
3)找平衡点,就是找到准确率=召回率的点
4)F1度量,F 1 = 2 P R / ( P + R ) F1=2PR/(P+R)F1=2PR/(P+R)

AP(Average Precision)平均精度

AP通常用于计算平均的检测精度,用于衡量检测器在每个类别上的性能好坏。

3.2.4 mAP(mean Average Precision)平均精度的均值

mAP更多用于评价多目标的检测器性能,衡量检测器在所有类别上的性能好坏,即得到每个类别的AP值后再取所有类别的平均值。假设N个样本中有M个positive的正例,那么我们就会得到M个recall值(1/M,2/M,3/M…M/M),对于每个recall值r,我们可以计算出对应r’>r的最大的precision值,然后对这M个precision 值取平均即得到最后的AP值。计算过程如下表所示:

计算过程:

1)计算所有测试样本的confidence score,每一类的confidence score保存到一个文件中,假设有20个测试样本,每个的id和score及真值GT如下:

mAP(mean Average Precision)表示平均精度均值,该参数是PASCAL VOC 比赛中所明确的衡量标准,其含义是输出的结果是一个ranked list, 其中元素包含了类别、框的信息,以及置信度(confidence),置信度用来进行排序,比方说我给出一个框,说我有99%的信心这里有一个猫,结果这里没有,相比我给出一个框,说我有10%的信心这里有一个猫,结果也没有,这两个框的惩罚(penalty)和奖励(reward)不能一样的。因为99%信心说有,结果没有,那就说明这个系统很有问题。反之,假如我给出一个框,99%的信心说有一个猫,然后真有猫,相比10%信心说有猫,结果也是有猫,这两个框也不一样。也就是越“靠谱”,reward越大。所以我们根据confidence进行排序之后,就应该给排名靠前的结果,也就是confidence比较大的一些更大的权重。

3.2.5. NMS(非极大值抑制)

其目的是为了清除多余的框,找到最佳的物体检测的位置。

 

红色框是可能的检测结果,如何从红色的框中选择最好的最接近的框,就使用NMS来确定最准确的位置。

每个红色的框都会有一个得分,保留得分最大的框。

一般都会使用NMS对生成的大量候选框进行后处理,去除冗余的候选框,得到最佳检测,上图中,每个b-box都会有4个坐标值和1个前景/背景得分,如果是100类的目标检测模型,输出向量为5+100=105。

NMS算法过程:根据候选框的类别分类概率做排序,假设有4个b-box,其置信度A>B>C>D
先标记最大概率框A是算法要保留的b-box
从A 开始,分别计算与其他框的交并比,和阈值t做比较,如果大于阈值,则舍弃,假设D被舍弃
从BC中,选择概率最大的B标记为保留,然后判读C和B的重叠度,如果超过,则舍弃
一直重复进行,标记完所有要保留的框

NMS是保证每个目标只保留一个预测的b-box,一般的NMS,对于某个类别c,将所有预测的b-box根据得分做一个降序排列,从最大的框开始计算该框与其他框的IoU,若IoU大于阈值t,则舍弃,说明重合度太高,重复进行最终保留一个。

缺点:

NMS算法中的最大问题就是它将相邻检测框的分数均强制归零(既将重叠部分大于重叠阈值Nt的检测框移除)。在这种情况下,如果一个真实物体在重叠区域出现,则将导致对该物体的检测失败并降低了算法的平均检测率(average precision, AP)。
NMS的阈值也不太容易确定,设置过小会出现误删,设置过高又容易增大误检。
NMS一般只能使用CPU计算,无法使用GPU计算。
NMS保留-得分最高的预测框,并将与当前框重叠大于阈值的候选框看做冗余,

hard mining:在一个mini-batch里边,容易让分类器混淆的实例,就会标记成hard mining(难以区分的),用到下一轮训练中。
 

参考:

【目标检测】1、基础内容

目标检测的基本概念与原理

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

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

相关文章

三篇论文:速览GPT在网络安全最新论文中的应用案例

GPT在网络安全领域的应用案例 写在最前面论文1:Chatgpt/CodeX引入会话式 APR 范例利用验证反馈LLM 的长期上下文窗口:更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性和GPT类似的步骤:Conversational APR 对话式A…

精品基于Python的个性化电影推荐系统

《[含文档PPT源码等]精品基于Python的个性化电影推荐系统设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技…

C++设计模式_18_State 状态模式

State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中&#xf…

Linux网络编程二(TCP三次握手、四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)

TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协议建立可靠连接的过程,确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的详细过程: 假设客户端为A,服务器为B 1、第一次握手(SYN1,seq500&…

深度学习_1 介绍;安装环境

深度学习 学习自李沐老师的课程。笔记主要以总结老师所讲解的内容以及我个人的想法为主,侵删! 课程链接:课程安排 - 动手学深度学习课程 (d2l.ai) 介绍 AI地图: 我们以前写的非 AI 类程序基本都是人自己去想会遇到什么样的问题…

集成测试、单元测试、系统测试之间的关系和区别

前言 为了使软件正常工作,所有单元都应集成在一起并正常运行。集成测试就像是要求不同工种的工人修建一个房子,希望他们都团结协作。如何判断他们在一起是否可以按照计划完成建设呢?唯一了解的方法是通过将它们全部拉在一起并测试它们如何相互…

Redis入门01-简单了解

目录 Redis的发展历史 特性简介 数据类型 内存存储与持久化 功能丰富 简单稳定 应用场景 为啥用Redis Redis的发展历史 Redis(Remote Dictionary Server)是一个高性能的键值存储系统,通常用作缓存、消息队列和分布式数据存储的解决方…

数据统计--图形报表--ApacheEcharts技术 --苍穹外卖day10

Apache Echarts 营业额统计 重点:已完成订单金额要排除其他状态的金额 根据时间选择区间 设计vo用于后端向前端传输数据,dto用于后端接收前端发送的数据 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO…

更新电脑显卡驱动的操作方法有哪些?

更新显卡驱动可以有效的提升我们电脑的性能&#xff0c;可以通过设备管理器、显卡驱动软件等方式进行检查驱动是否需要更新&#xff0c;并修复一些电脑上已知的显卡问题。 然而&#xff0c;对于一些不是很懂电脑技术的人员来说&#xff0c;更新电脑显卡驱动是一件比较复杂和混乱…

Linux服务器部署带Cplex的Java项目

Linux版Cplex安装 Cplex安装包 Cplex 22.1.0 Linux安装包 安装步骤 找到安装包的路径 [roothecs-327697 ~]# cd /www/cplex [roothecs-327697 cplex]# ls cplex_studio2210.linux_x86_64.bin使用chmod 777赋予安装包读、写、执行权限&#xff0c;使用./执行安装 [roothec…

C/S架构和B/S架构

1. C/S架构和B/S架构简介 C/S 架构&#xff08;Client/Server Architecture&#xff09;和 B/S 架构&#xff08;Browser/Server Architecture&#xff09;是两种不同的软件架构模式&#xff0c;它们描述了客户端和服务器之间的关系以及数据交互的方式。 C/S 架构&#xff08…

华为数通方向HCIP-DataCom H12-831题库(多选题:101-120)

第101题 LSR对收到的标签进行保留,且保留方式有多种,那么以下关于LDP标签保留一自由方式的说法 A、保留邻居发送来的所有标签 B、需要更多的内存和标签空间 C、只保留来自下一跳邻居的标签,丢弃所有非下一跳铃邻居发来的标签 D、节省内存和标签空间 E、当IP路由收敛、下一跳…

CVPR 2023 | 主干网络FasterNet 核心解读 代码分析

本文分享来自CVPR 2023的论文&#xff0c;提出了一种快速的主干网络&#xff0c;名为FasterNet。 论文提出了一种新的卷积算子&#xff0c;partial convolution&#xff0c;部分卷积(PConv)&#xff0c;通过减少冗余计算和内存访问来更有效地提取空间特征。 创新在于部分卷积…

Java List Set Map

一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…

Yakit工具篇:WebFuzzer模块之重放和爆破

简介 Yakit的Web Fuzzer模块支持用户自定义HTTP原文发送请求。为了让用户使用简单&#xff0c;符合直觉&#xff0c;只需要关心数据相关信息&#xff0c;Yakit后端(yaklang)做了很多工作。 首先我们先来学习重放请求的操作&#xff0c;在日常工作中可以使用 Web Fuzzer进行请…

Star History 九月开源精选 |开源 GitHub Copilot 替代

虽然大火了近一年&#xff0c;但是截至目前 AI 唯一破圈的场景是帮助写代码&#xff08;谷歌云旗下的 DORA 年度报告也给 AI 泼了盆冷水&#xff09;。不过对于软件开发来说&#xff0c;生成式人工智能绝对已经是新的标配。 本期 Star History 收集了一些开源 GitHub Copilot …

虚拟化的基础知识

目录 虚拟化基础 虚拟化的概念 虚拟化的特征&#xff08;本质&#xff09; 虚拟机的两大派别 VMM讲解 虚拟化中的一些重要概念 VMM的功能以及分类 虚拟化的架构 寄居虚拟化 裸金属虚拟化 操作系统虚拟化 混合虚拟化 虚拟化的三个方向 虚拟化基础 虚拟化的概念 什…

元素内容必须由格式正确的字符数据或标记组成

一、错误介绍 前两天我在使用Mybatis开发&#xff0c;进行数据查询时&#xff0c; 系统出现了红色提示&#xff0c;如下图所示&#xff1a; 由提示可知&#xff0c;系统将我的小于号【<】解析为Tag标签了 &#xff0c;而大于号【>】则没有这个问题。为了验证大于号【>…

文件上传自动化测试方案

一、概述 【测试地址】&#xff1a;https://pan.baidu.com 【测试工具】selenium、requests 【脚本语言】Python 【运行环境】Windows 百度网盘作为文件存储及分享的平台&#xff0c;核心功能大部分是对文件的操作&#xff0c;如果要对它进行自动化测试&#xff0c;优先覆…

一带一路10周年:爱创科技加速中国药企国际化征程

“源自中国&#xff0c;属于世界”。 共建“一带一路”倡议提出10周年来&#xff0c;中国与沿线国家经济深度融合&#xff0c;在共商共建共享的基本原则下&#xff0c;“一带一路”形成了国际合作的平台和机制&#xff0c;跨国经济合作已基本形成。 随着“一带一路”合作日益加…