深度学习中的两阶段目标检测

news2024/12/23 13:53:07

 博主简介

博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c++,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的,如果有错误之处,大家可以指正。

专栏简介:   本专栏主要研究计算机视觉,涉及算法,案例实践,网络模型等知识。包括一些常用的数据处理算法,也会介绍很多的Python第三方库。如果需要,点击这里订阅专栏   。

给大家分享一个我很喜欢的一句话:“每天多努力一点,不为别的,只为日后,能够多一些选择,选择舒心的日子,选择自己喜欢的人!”


目录

背景介绍

什么是目标检测

 目标检测的难点

目标检测的基础知识

候选框

交并比

非极大值抑制

传统目标检测基本流程

目标检测效果评估



背景介绍

目标检测作为计算机视觉中承上启下的一步,至关重要,可以说,实现了目标检测就实现了计算机视觉基本任务。目标检测急需要对物体进行识别,又要检测出物体的位置,难度较大,网络结构也层出不穷,在深度领域,从R-CNN到SPP-NET再到YOLO最后到SSD,可以说是百家争鸣,各有千秋。

另一方面,目标检测应用非常广泛,例如生活中常见的人脸检测、车牌识别等;在自动驾驶领域,有行人识别、车道线识别;还有智能视频监控、机器人导航、飞机航拍等多种多样的应用。

目标检测可以分解为两个步骤,第一个步骤是寻找物体框的位置,有传统的选择搜索算法,也有基于深度学习的方法;第二个步骤就是对物体框的类别进行判别。所以,目标检测算法也分为一阶段算法和二阶段算法两种。如果将两个步骤分两个网络训练,则称其为二阶段算法,反之,如果将两个步骤合并用一个网络训练,则称其为一阶段算法。本节我们会详细介绍两阶段目标检测算法,下一节我们继续介绍一阶段目标检测算法。

什么是目标检测

对于目标检测,不但要识别处物体的位置,还要检测处物体的类别。一般来说,我们用把一个矩形框来外接一个物体。我们要做的就是检测出这个矩形框(也叫groundtruth)的位置参数,例如中心坐标(x,y),矩形框宽w和矩形框的高h等。

 目标检测的难点

对于识别物体来说,难度不大,在目标识别方面,卷积神经网络的正确率已经超过人类的识别水准了,但是想要精确的定位物体,却是非常困难的,我们人类判断照片上人物的位置一般就是说在中间,或者左上等位置名词,但是对于计算机来说,就有点困难,他需要精确的位置坐标。

更难的是,一张图片中往往有多个物体,特别是小物体,在做目标识别的时候,我们对一张图片只需要输出一个物体,而对于检测问题,需要输出多个物体,难度也极具增大。

最后,网络速度和准确率很难兼顾,一般来说,速度较快的网络,也就是每秒能处理的图片较多,效果就会较差,这是由于速度快的网络会降低物体位置的精度,同时也会减少候选框的数量。

目标检测的基础知识

在进行目标检测实战项目前,我们先来了解一下目标检测的基础知识。

候选框

什么是候选框:候选框就是有可能存在物体的框,对于一个物体来说,可能有很多的候选框,一般5~9个都是正常的。对于二阶段目标检测算法,一般候选框生成算法会生成几千个候选框,但是真正有物体的候选框可能就很少了。

交并比

我们有这么多候选框,那么我们如何判断一个候选框的好坏?很明显,与真实物体框越接近,候选框就越好。我们一般用交并比(IOU)来表示候选框的好坏,计算方式:

IOU=(物体框∩候选框)的面积/(物体框∪候选框)的面积。

为什么我们不直接用物体框和候选框的交集2的面积喃?这是因为,对于覆盖整个物体框的候选框,物体框和候选框的交集的面积都为物体框的面积,从而不能区分出优劣。同理也不能直接使用物体框和候选框的并集的面积,否则无法区分小于物体框的候选框的优劣,而同时考虑两者,就能得到比较好的标准。

非极大值抑制

非极大值抑制(NMS),就是对交并比进行抑制,也就是对交并比不是极大值的值进行抑制。举个例子,对于同一个物体,模型检测出三个候选框,交并比分别为0.9,0.8,0.7,那么我们只需要保留交并比为0.9的框,而忽略其他几个。

当然,非极大值抑制并不是这么的简单,比如第一个物体被检测出的交并比为0.9,0.8,0.7,留下0.9的框,第二个物体检测出0.7,0.6,保留0.7的框,这个时候就会出现一个问题,那就是两次处理后得到的候选框都是第一个物体的,会删除第二个物体的候选框,所以一般我们会进行设置阈值(一般为0.3~0.5),只要两个候选框IOU值大于阈值时,认为他们属于同一个物体,对他们进行非极大值抑制即可。

具体流程:

(1)、在候选框列表中选出IOU最大的候选框1;

(2)、将其余候选框与候选框1计算IOU';

(3)、如果IOU'>阈值,则次候选框删除;

(4)、将候选框1输出,然后从候选框列表中删除。

(5)、重复流程(1)~(4)。

传统目标检测基本流程

我们在学习深度学习方法前,先来了解一下传统的目标检测流程,

第一步,提取候选框,最初的时候,我们采用的是滑动窗口的策略,使用一个窗口在整幅图上进行滑动,每次滑动就生成一个候选框,而且对于滑动窗口设置不同的尺寸。这种暴力的策略虽然包含了目标所有可能出现的位置,但是由于冗余窗口太多,导致时间复杂度太高。

第二步就是提取特征值,常用SIFT,SURF,HOG等特征检测算法。

第三步就是训练分类器,主要有SVM,Adaboost等常用的分类器,对提取的物体特征进行分类 ,从而识别物体。

最后一步就是进行非极大值抑制,删除多余的候选框。

目标检测效果评估

对于评估检测准确率,我们使用准确率和精准率,对于评估模型是否将图像中所有的图像都是别出来,我们称之为召回率。

准确率=\frac{TP+TN}{TP+FN+TN+FP}

精准率=\frac{TP}{TP+FP}

召回率=\frac{TP}{TP+FN}

这些参数代表什么意思喃?

我们来看看二分类:

二分类问题
标签预测为1(预测有物体)预测为0(预测无物体)
1(存在物体)真正(TP)假负(FN)
0(不存在物体)假正(FP)真负(TN)

当我们的二分类器设定的阈值发生变化时,准确率和召回率也会跟着变化。所以我们不能简单地使用单一的召回率或准确率来评价整个模型,而需要考虑在不同召回率阈值下模型的效果。

我们将在不同召回率阈值下模型能够达到的最大精准率看成一个点,然后将这些点连接起来,我们称之为Precision-Recall曲线。

显然,曲线下面的面积越大,模型效果越好,于是我们将此面积作为二分类器的评价标准,称为平均精度(AP)。需要注意的是,PR曲线和我们常用的另一个概念ROC曲线是不同的,ROC曲线显示的是真正率和假正率的关系,而PR曲线显示的是精确率和召回率的关系,PR曲线更适合评估目标检测这类样本不平衡的问题。

对于目标检测这种多分类问题,我们如何评价模型喃?我们剋将其看成很多二分类器的叠加,其对每个物体分类就是一个二分类器,我们先算出每个物体分类的平均精度,之后再对所有的分类取平均(或加权平均),即可得到平均精度均值(mAP),这也是我们常用的目标检测分类问题的评价指标。

对于模型速度的评价就要简单许多,一般用处理一张图片要多少时间,或者说单位时间能处理多少图片,学名叫做帧/秒(fps)。

常用目标检测框架的效果
框架名称mAP(VOC2007数据集)速度/(帧/秒)速率/(秒/帧)
DPMv533.70.0714
R-CNN66.0020
Fast R-CNN70.00.52
Faster R-CNN73.270.14
YOLO63.4450.022
YOLOv278.6400.025
SSD76.8190.053

好了,本节内容介绍就到此结束了,拜拜了你嘞! 

点赞加关注不迷路

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

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

相关文章

第五元素奏鸣曲:企业的新数据之道

1997年,吕克贝松指导的经典电影《第五元素》上映,引发了全球的科幻热潮。影片中,各界都在为追逐第五元素而努力。有趣的是,二十年过去,千行百业与亿万企业开始共同追逐一种新的“第五元素”——数据。数据之所以有这个…

走迷宫项目

这个项目主要就是基于easyx图形库来用的 先是把图片加载上去,但是我搞的时候忘记使用双缓冲绘图就会导致这个图片一直闪,而且物体移动会导致图片上面留下痕迹 于是就把双缓冲加上然后把图片也放入循环当中 就不会出现之前的情况; 我的物体移…

CTO:给我一个SpringBoot实现MySQL百万级数据量导出并避免OOM的解决方案

前言 动态数据导出是一般项目都会涉及到的功能。它的基本实现逻辑就是从mysql查询数据,加载到内存,然后从内存创建excel或者csv,以流的形式响应给前端。 参考:https://grokonez.com/spring-framework/spring-boot/excel-file-dow…

软件质量保证与软件测试 第三周(决策表+黑盒测试总结)+第四周(路径测试(白盒测试的一种)+各种覆盖判定的计算)

继续上周的等价类测试用例,例题3:佣金问题等价类测试用例 题目: 弱一般:max (2, 1, 1) 2 强一般:2*1*1 2 弱健壮:2 3*2 8 强健壮:4 * 3 * 3等价类的观察总结: 第三周 决…

DC3算法生成后缀数组详解

文章目录1、何为后缀数组2、暴力生成后缀数组3、用DC3算法生成后缀数组的流程4、DC3算法代码实现C版Java版5、DC3算法的地位1、何为后缀数组 假设有一个字符串 “aabaabaa”,从每个位置开始往后到最后一个位置得到的所有的「后缀字符串」” 下标7开头:…

电商项目8:平台属性

电商项目8&#xff1a;平台属性1、后端1.1、属性分组模糊查询1.2、商品属性新增功能&#xff1a;保存关联关系1、后端 1.1、属性分组模糊查询 需要改造。当前端传0时候。模糊查询功能有点问题 AttrGroupServiceImpl Overridepublic PageUtils queryPage(Map<String, Obje…

Java 进阶(10) 线程生命周期

线程的生命周期 五种基本状态 当线程被创建并启动以后&#xff0c;它既不是⼀启动就进⼊了执⾏状态&#xff0c;也不是⼀直处于执⾏状态。 新建状态&#xff08;New&#xff09; 当线程对象对创建后&#xff0c;即进⼊了新建状态&#xff0c;如&#xff1a; Thread t new M…

微服务架构中多级缓存设计

一.Nginx 缓存管理 在 Nginx 中自带将后端应用中图片、CSS、JS 等静态资源缓存功能&#xff0c; 我们只需在 Nginx 的核心配置 nginx.conf 中增加下面的片段&#xff0c; 便可对后端的静态资源进行缓存&#xff0c;关键配置我已做好注释&#xff0c; 可以直接使用; # 设置缓存…

同源策略与跨域

同源:协议、域名、端口号 必须完全相同。 违背同源策略就是跨域。 例如&#xff1a; 协议&#xff1a;http或者是https 域名&#xff1a;www.xxx.com 端口号&#xff1a;80&#xff0c;8000等。 同源&#xff1a;同一个来源。 同源&#xff1a;可以直接简写服务器页面的地址。…

激活数字营销新引擎,亚马逊云科技为企业带来数字化营销新体验

随着流量红利逐渐消失&#xff0c;营销触点呈现多元化&#xff0c;消费者决策变得复杂&#xff0c;利用数字化激活新的营销引擎成为破局关键。亚马逊云科技联合合作伙伴&#xff0c;基于智能湖仓打造了4个解决方案领域&#xff1a;一方数据平台、客户数字体验、广告智能分析、隐…

工具-win11系统,微软自带输入法输入“sj” 显示时间 【2022年01月11日 10:16:49】格式

文章目录1、前提2、操作3、碎碎念4、更新 2023年04月13日1、前提 下载某某输入法&#xff0c;输入“sj” 会自动显示【2023-04-11 09:57:01 】这样的格式&#xff0c;微软自带的输入法是显示【09点57分】的格式&#xff0c;但是由于个人工作学习需要&#xff0c;所以前者的键入…

FreeRTOS 任务调度及相关函数详解(二)

文章目录一、任务创建函数 xTaskCreate()二、任务初始化函数 prvInitialiseNewTask()三、任务堆栈初始化函数 pxPortInitialiseStack()四、添加任务到就绪列表 prvAddNewTaskToReadyList()五、任务删除 vTaskDelete()六、任务挂起 vTaskSuspend()七、任务恢复 vTaskResume()一、…

shadow机械手臂系统

机械手臂系统 Shadow机械手臂系统是由美国Shadow Robot Company开发的一款高精度机械手臂系统&#xff0c;主要用于工业自动化、医疗器械、科学研究等领域。Shadow机械手臂系统采用了多自由度的设计&#xff0c;可以实现高精度的三维运动和灵活的操作&#xff0c;其控制系统还支…

ds18b20-温度传感器-linux驱动-混杂设备

文章目录ds18b20读取温度数据步骤ds18b20时序图&#xff1a;初始化时序DS18B20初始化时序的步骤&#xff1a;读/写时序DS18B20写步骤&#xff1a;DS18B20读步骤&#xff1a;DS18B20驱动实现结果如下&#xff1a;参考&#xff1a;ds18b20读取温度数据步骤 初始化&#xff1a;将…

对话ChatGPT:Prompt是普通人“魔法”吗?

在ChatGPT、Midjourney、Stable Diffusion等新事物的作用下&#xff0c;不少人或多或少听说过Prompt的概念。 虽然OpenAI掀起的大模型浪潮再度刷新了人们对AI的认知&#xff0c;但现阶段的AI终归还不是强人工智能&#xff0c;大模型里的“知识”存储在一个隐性空间里&#xff0…

工地高空作业安全带穿戴识别 python

工地高空作业安全带穿戴识别系统通过pythonopencv网络模型分析技术&#xff0c;工地高空作业安全带穿戴识别算法模型对现场监控画面中人员安全绳安全带穿戴进行检测&#xff0c;不需人为干预立即触发告警存档。OpenCV的全称是Open Source Computer Vision Library&#xff0c;是…

【Ruby 2D】【unity learn】抬头显示血条

说起游戏开发&#xff0c;大家一般会觉得控制角色移动和制作血条哪个难呢&#xff1f; 或许都会觉得血条比较难吧。 是的&#xff0c;正是如此。 那么我们让我们来看看血条该怎么做吧 这是效果图 受伤后是这样的 首先是创建一张Canvas画布 这个画布会很大 相比之下我们的小…

【redis】BigKey

【redis】BigKey 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章…

ChatGPT云桌面:无需科技挂载,即点即用

ChatGPT是一个由OpenAI开发的人工智能对话语言模型。它被设计为对话式人工智能代理&#xff0c;用于客户服务、个人助理和文娱等任务。它可以理解并生成多种语言的文本&#xff0c;包括中文、英语、西班牙语、德语等。但从某些地方访问ChatGPT可能很困难&#xff0c;特别是在注…

实验4 Matplotlib数据可视化

1. 实验目的 ①掌握Matplotlib绘图基础&#xff1b; ②运用Matplotlib&#xff0c;实现数据集的可视化&#xff1b; ③运用Pandas访问csv数据集。 2. 实验内容 ①绘制散点图、直方图和折线图&#xff0c;对数据进行可视化&#xff1b; ②下载波士顿数房价据集&#xff0c;并…