【目标检测】1. 目标检测概述

目标检测(Object Detection)实质上上多目标的定位,即在一个图片中定位多个目标物体,包括分类定位,也就是多个目标分别在哪里?分别属于那个类别?
 

图像分类常用算法:
        VGG
        GoogleNet
        ResNet

目标检测常用算法:
        RCNN
        Fast RNN
        Faster RCNN
        SSD
        YOLO

目标检测
检测图片中所有物体(模型关注的物体)的
●类别标签(Category Label)
●位置(最小外接矩形/Bounding Box) 通常表示为(x,y,w,h),其中(x,y)表示矩形框中心坐标,(w,h)表示矩形框长宽。
目标检测和其他任务的区别:

 什么是语义分割?

与普通的图像分类任务不同,语义分割要求对图像中的每个像素进行分类,而不仅仅是对整个图像进行分类。换句话说,语义分割的目标是为图像中的每个像素赋予一个标签,指示其所属的语义类别。这意味着图像中的不同区域(如物体、背景、人等)都应被准确地标注和分割出来。

 目标检测的步骤:

●目标检测主要需要解决三个问题 :
        怎样确定位置(什么地方有目标)
        怎样提取特征
        怎样分类(目标属于什么类别)
●传统的目标检测一 般使用滑动窗口的框架,主要包括三个步骤:
        利用不同尺寸的滑动窗口框出图中的某一 部分作为候选区域;
        提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测常用HOG特征等;
        利用分类器进行识别,比如常用的SVM模型。

R-CNN
在传统目标检测算法中,多尺度形变部件模型(DPM)的效果相对是比较优秀的;在DPM中将物体看成是多个不同组件的结合,其效果不错,但是检测速度相对比较慢。随着深度学习模型效果的优化,基于深度学习的目标检测算法盖过了传统计算机视觉中的目标检测算法(DPM),从而导致很多之前研究传统目标检测算法的人员转向深度学习,并且现在工业界中应用最多的目标检测方式以深度学习为主。
R-CNN是奠定深度学习方向发展目标检测的的基础算法,是第一个真正可以工业级应用的目标检测解决方案,是结合区域提名(RegionProposal)和卷积神经网络(CNN)的一种目标检测算法。

基于深度学习的目标检测算法
●目前主流的目标检测算法主要是基于深度学习模型,主要可以分为两大类: two-stage检测算法和one- stage检测算法。
●two-stage检测算法将检测问题划分为两个阶段,首先基于region proposals (区域推荐)产生目标候选框,然后再对候选区域进行分类与回归,这类算法实现主要有: R-CNN、SPPNET、 FastR-CNN、 FasterR-CNN等 。
●one-stage检测算法是一 种端到端的检测算法,仅仅使用一个卷积神经网络CNN直接预测不同目标的类别与位置,这类算法实现主要有: SSD、 YOLO、 FPN等。

什么是Region Proposal?
Region Proposal是目标检测领域的一个关键概念。它是指在图像中提出潜在包含物体的候选区域,以便进一步对这些区域进行分类和定位。
Region Proposal的常见方法包括:

  1. Selective Search(选择性搜索): 自底向上通过合并相似的区域来生成最终的候选区域。


  2. EdgeBoxes: EdgeBoxes是一种基于边缘检测的Region Proposal方法,它利用图像中的边缘信息来定位候选区域,以提高检测的效率和准确率。

  3. R-CNN系列方法(如Fast R-CNN、Faster R-CNN等): 这些方法通过引入区域建议网络(Region Proposal Network,RPN),在图像中生成候选区域,并与分类器共同训练,从而实现端到端的目标检测。

置信度

●一幅图片的检测结果,由多个Bounding Box组成,一个Bounding Box包括以下信息:
        Bounding Box的位置信息(x,y,w,h)以及这个Bounding Box的置信度。
        Bounding Box的位置信息(x,y,w,h)由中心点坐标和宽高组成。
        Bounding Box的置信度表示该边框包含目标的概率。
●Bounding Box的置信度的计算通常基于边界框与目标的重叠程度、目标的大
小和形状等因素。不同的目标检测算法可能使用不同的方法来计算置信度(不同算法下置信度是没有比较意义的),但它们的基本思想是相似的。
●属于每个类别的置信度,这个置信度与图片分类任务的置信度的定义是相同的。
 

IoU(评价Region Proposal定位精度的评价方式)

IoU(Intersection over Union)。IoU定义了两个bounding box的重叠度,也就是两个bounding
box重叠区域的面积占总面积的比值。

mAP指标

 前面我们已经讲述了如何计算Precision和Recall,但是,正如前面所述,至少有两个变量会影响Precision和Recall,即IoU和Bounding Box的置信度阈值。IoU是一 个简单的几何度量,可以很容易标准化。但是置信度却在不同模型会差异较大,可能在一个模型中置信度采用0.5却等价于在其它模型中采用0.8置信度,这会导致precision-recall曲线变化。为此,PASCAL VOC组织者想到了一 种方法来解决这个问题,即要采用一种可以用于任何模型的评估指标,即mAP(mean Average Precision)。
mAP(mean Average Precision)在目标检测中定义为平均精度评估指标值。mAP就是 每一类平均精度AP (Average Precision) 的均值。AP就是对PR曲线(P:precision, R: recall, 横轴R,纵轴P)求均值。

根据predict的置信度阈值进行排序, 上图中就是predict1 (0.9)、 predict2(0.8)、 predict3(0.7)的顺序,计算在不同阈值的情况下,Predicision和Reall的值:
●阈值0.9,无视所有小于0.9的predict(只对最左边的预测计算精度),那么此时TP=1,FP=0,precision=1,所有标签数目为3,那么recall=1/3;
●阈值0.8,无视所有小于0.8的predict(只对前两个预测计算精度),那么此时TP=1, FP=1, precision=1/2,所有标签数目为3,那么recall=1/3;
●阈值0.7,无视所有小于0.7的predict(对三个预测都计算精度), 那么此时TP=2, FP= 1, precision=2/3, 所有标签数目为3,那么recall=2/3。
 

 NMS
●非极大值抑制(Non-Maximum-Suppression,NMS),顾名思义就是抑制不是极大值的元素,可以理解为局部最大搜索。是目标检测中常用的一种精修bounding box的方式。
●产生proposal后使用分类网络给出每个框的每类置信度,使用回归网络修正位置,最终应用NMS返回最终位置。
对于CNN网络提取出来的Bounding Box列表B以及其对应的置信度S,采用下列执行过程来进行NMS操作:

  •         从S和B中选择最大置信度score(至少大于0)以及对应Bounding Box框M,将其从B/S集合中移除,并将M加入到最终检测结果集合D中。
  •         计算B中剩下所有的Bounding Box和M之间的IOU值,如果|OU值大于阈值t,那么表示这两个框比较相似,则将其从集合B中移除,否则不进行任何操作。
  •         重复上述两个操作,直到集合B为空。
  •         NOTE: .上述操作针对每个类别进行操作。

lambelimg
        功能:一种进行目标检测的标注工具;
        官网: https://github.com/heartexlabs/labelimg
        安装: pip install labelimg

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

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

相关文章

It is also possible that a host key has just been changed

问题:ssh失败,提示如上图 分析: ssh的key存在上图里的路径里。 解决:win10删这个文件C:\Users\admin\.ssh\known_hosts , linux删这个文件.ssh\known_hosts ,或者删除这个文件里的制定ip的那一行,例如“106.1.1.22 ecdsa-sha2-…

2.13计算机工作过程

2.三个级别的语言 1)机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。 2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的…

Redis集群(哨兵集群)

一.Sentinel作用和原理: 1.作用 监控:Sentinel会不断监控master和slave是否按预期工作. 自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也会以新的master为主。 通知:Sentinel充当redis客户端的服务发现来源,当集群发生故障…

uniapp模仿下拉框实现文字联想功能 - uniapp输入联想(官方样式-附源码)

一、效果 废话不多说&#xff0c;上效果图&#xff1a; 在下方的&#xff1a; 在上方的&#xff1a; 二、源码 一般是个输入框&#xff0c;输入关键词&#xff0c;下拉一个搜索列表。 ElementUI有提供<el-autocomplete>&#xff0c;但uniapp官网没提供这么细&#x…

python基于django的药品进销存管理系统elsb2

本系统是通过面向对象的python语言搭建系统框架&#xff0c;通过关系型数据库MySQL存储数据。使用django框架进行药店药品的信息管理&#xff0c;用户只需要通过浏览器访问系统即可获取药店药品信息&#xff0c;并可以在线管理&#xff0c;实现了信息的科学管理与查询统计。本文…

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互&#xff0c;用户前台选择相应的商品与数目&#xff0c;后台计算出结果&#xff0c;回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口&#xff0c;实现了一个前台选择商品和数目&#xff0c;后台…

推荐一本书籍,澳福读后发现投资真谛

在现在的经济环境下&#xff0c;澳福外汇推荐各位投资读一本书籍就会发现投资者的真谛&#xff0c;那就是经济危机爆发前一年&#xff0c;黎巴嫩裔美国商人纳西姆尼古拉斯塔勒布出版的《黑天鹅:极不可能事件的影响》&#xff0c;在书中一书作者用“黑天鹅事件”这个词来指代影响…

一、项目中Camunda的使用

基本依赖请看另一篇文章 camunda学习使用 介绍 开始事件 结束事件 网关 顺序流 任务 用户任务 活动 上面是项目中使用到的一些图形&#xff0c;简单介绍一下 项目集成 依赖 <spring-boot.version>2.5.6</spring-boot.version> <spring-cloud.version>20…

智能门锁:越便宜,越难卖?

【潮汐商业评论/ 原创】 独居的Gail最近在网上种草了一款带电子猫眼的智能门锁&#xff0c;用她的话来说&#xff1a;“这小东西不仅是个电子锁&#xff0c;还是个智能监控&#xff0c;太适合独居的我了&#xff0c;天知道之前给快递员、外卖员开门都要纠结半天啊。” 但烦恼…

运维知识点-hibernate引擎-HQL

HQL有两个主要含义&#xff0c;分别是&#xff1a; HQL&#xff08;Hibernate Query Language&#xff09;是Hibernate查询语言的缩写&#xff0c;它是一种面向对象的查询语言&#xff0c;类似于SQL&#xff0c;但不是去对表和列进行操作&#xff0c;而是面向对象和它们的属性…

一台云服务器在手,天下我有!2024年3月上云采购季不可错过!

有一台云服务器可以做什么&#xff1f; 搭建微信提醒小助手、搭建个人博客、运行一个365天不休息的程序、存文件、定时发送邮件、数据爬取、加速网络请求、学习使用Linux命令&#xff08;部署&#xff09;、部署自己的小程序的服务端、青龙面包薅羊毛 这些都是常规用法&#xf…

openGauss环境搭建 | 新手指南

一、搭建准备 openGauss开发需要使用linux环境&#xff0c;先下载远程连接工具Xshell/MobaXterm 。 1. 使用工具连接远程linux服务器&#xff0c;使用root账号远程登录&#xff0c;创建个人账号。 useradd -d /home/xxx -m xxx 2. 设置密码。 passwd xxx 3. 切换到个人账…

【归并排序】AcWing. 505 / NOIP2013提高组《火柴排队》(c++)

【题目描述】 涵涵有两盒火柴&#xff0c;每盒装有 n 根火柴&#xff0c;每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列&#xff0c;同一列火柴的高度互不相同&#xff0c;两列火柴之间的距离定义为&#xff1a; 其中 ai 表示第一列火柴中第 i 个火柴的高度&a…

gitlab的安装

1、下载rpm 安装包 (1)直接命令下载 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.6.10-ce.0.el7.x86_64.rpm&#xff08;2&#xff09;直接去服务器上下载包 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source…

基于springboot+vue的政府管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Maya笔记 软选择

文章目录 1什么是软选择2注意3如何打开软选择3.1方法一3.2方法二 4调整软选择的范围5衰减模式5.1体积模式5.2表面模式 6衰减曲线 1什么是软选择 也就是渐变选择&#xff0c;从中心点向外影响力度越来越小 软选择针对的是点线面这些模型元素 下图中展示了对被软选择的区域移动…

禅道软件介绍:开源版(免费)和付费版的区别

禅道免费版是有两个版本其中一个是开源的&#xff0c;另一个是云禅道的5人以下免费版。禅道免费版和付费版的区别在于&#xff1a;禅道免费版虽然提供基础项目管理功能&#xff0c;但也只适合有技术能力自行维护和定制的团队。付费版&#xff08;如企业版、旗舰版&#xff09;则…

在nginx 服务器部署vue项目

以人人快速开发的开源项目&#xff1a;renren-fast-vue 为例 注&#xff1a;这里开始认为各位都会使用nginx 打包vue项目 npm run build 测试打包的项目是否可以运行 serve dist 可以正常运行 编译报错请移步到&#xff1a;renren-fast-vue1.2.2 项目编译报错: build g…

微信公众号公司主体变更怎么办?

公众号迁移的好处有哪些&#xff1f;迁移后原公众号还能用吗&#xff1f;1&#xff09;获得更多权限功能如果公众号是个人主体&#xff0c;想进行认证&#xff0c;拥有更多权限功能。例如菜单栏跳转外部链接&#xff0c;相拥有留言功能&#xff0c;服务号认证获得开发权限等。就…

字节后端实习 一面凉经

心脏和字节永远都在跳动 深圳还有没有大厂招后端日常实习生啊&#xff0c;求捞&#xff5e;&#xff08;boss小公司也不理我&#xff09; 很纠结要不要干脆直接面暑期实习&#xff0c;又怕因为没有后端实习经历&#xff0c;面不到大厂实习。死锁了