首页 > 其他分享 >目标检测基础入门

目标检测基础入门

时间:2023-10-08 09:37:14浏览次数:24  
标签:输出 入门 检测 分类 目标 https CNN

 

目标检测(Object Detection),也叫目标提取,是一种基于目标几何和统计特征的图像分割。它将目标的分割和识别合二为一,其准确性和实时性是整个系统的一项重要能力。

尤其是在复杂场景中,需要对多个目标进行实时处理时,目标自动提取和识别就显得特别重要。

 

 

 

 

1. 什么是目标检测
1.1 目标检测的定义:
识别图片或者视频中有哪些物体以及物体的位置(坐标位置)。

什么是物体(物体的定义):
图像(或者视频)中存在的对象,但是能检测哪些物体会受到人为设定限制。
目标检测中能检测出来的物体取决于当前任务(数据集)需要检测的物体有哪些。假设我们的目标检测模型定位是检测动物(例如,牛、羊、猪、狗、猫五种),那么模型对任何一张图片输出结果不会输出鸭子、鹅、人等其他类型结果。

什么是位置(位置的定义):
目标检测的位置信息一般有2种格式(以图片左上角为原点(0,0)):

    极坐标表示:(xmin,ymin,xmax,ymax)
    xmin,ymin:x,y坐标的最小值
    xmax,ymax:x,y坐标的最大值

    中心点坐标:(x_center,y_center,w,h)
    x_center,y_center:目标检测框的中心点坐标
    w,h:目标检测框的宽,高

例:
假设一张图片是100*800,所有这些坐标都是构建在像素层面上:

 

 
中心点坐标结果为:
 

 


2. 目标检测技术的发展历史

目标检测算法分类:

角度一:
a. 传统目标检测方法(候选区域+手工特征提取+分类器)
    HOG+SVM、DPM
b. region proposal+CNN提取分类的目标检测框架
   R-CNN,SPP-NET,Fast R-CNN,Faster R-CNN
c. 端到端(End-to-End)的目标检测框架
   YOLO系列,SSD

传统目标检测(缺点、弊端)
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余
2)手工设计的特征对于多样性的变化没有很好的鲁棒性

角度二:
(1)两步走(two stage)的目标检测:先进行区域推荐,而后进行目标分类
主要算法:R-CNN,SPP-NET,Fast R-CNN,Faster R-CNN
(2)端到端(one stage)的目标检测:采用一个网络一步到位
主要算法:YOLO系列(YOLO v1,YOLO v2等),SSD

 

 


目标检测的任务
分类原理:
先来回顾下分类原理,这是一个常见的CNN组成图,输入一张图片,经过其中的卷积、激活、池化相关层,最后加入全连接层达到分类概率的效果。

 

 


分类的损失与优化:
在训练的时候需要计算每个样本的损失,那么CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失。

 

 


常见的CNN模型:

 

 


对于目标检测来说不仅仅是分类这样简单的一个图片输出一个结果,而且还需要输出图片中目标(物体)的位置信息,所以从分类到检测,过程如下:

分类:

 

 


分类+定位(只有一个目标的时候)

 

 


目标检测的任务
分类:
1)N个类别
2)输入:图片
3)输出:类别标签
4)评估指标:Accuracy

 

 


定位:
1)N个类别
2)输入:图片
3)输出:物体的位置坐标
4)主要评估指标:IOU

 


其中我们得出来的(x,y,w,h)有一个专业的名词,叫做bounding box(bbox)

两种Bounding box名称:
在目标检测当中,对bbox主要由两种类别名称
(1)Ground-truth bounding box:图片中真实标记框
(2)Predicted bounding box:预测的标记框

 

 


一般在目标检测任务当中,我们预测的框有可能很多个,真实的框GT也有很多个

检测任务的评价指标:

 



IoU(交并比):
两个区域的重叠程度overlap:候选区域和标定区域的IoU值

 

 


目标定位的简单实现:
在分类的时候我们直接输出各个类别的概率,如果再加上定位的话,我们可以考虑在网络的最后输出加上位置信息。
回归位置:
增加一个全连接层,即为FC1、FC2
1)FC1:作为类别的输出
2)FC2:作为整个物体位置数值的输出

 

 


假设有10个类别,输出[p1,p2,p3,…,p10],然后输出这一个对象的四个位置信息[x,y,w,h]。同理知道要网络输出什么,如何衡量整个网络的损失。

    对于分类的概率,还是使用交叉熵损失

    位置信息具体的数值,可使用MSE均方误差损失(L2损失)

 

 




位置数值的处理:

对于输出的位置信息是四个比较大的像素大小值,在回归的时候不适合。目前统一的做法是,每个位置除以图片本身像素大小。

假设以中心坐标方式,那么x = x/x_image,y/y_image, w/x_image,h/y_image,也就是这几个点最后都变成了0~1之间的值(归一化)。

参考:
https://www.cnblogs.com/kongweisi/p/10894415.html
https://blog.csdn.net/AugustMe/article/details/107778518

 

 

 

REF

https://blog.csdn.net/AugustMe/article/details/107778518

https://xiaobaibubai.blog.csdn.net/article/details/115900961

https://zhuanlan.zhihu.com/p/34142321

https://mp.weixin.qq.com/s?__biz=MzU0NjgzMDIxMQ==&mid=2247600998&idx=2&sn=799e4870b11af015ce6281117c4982b5&chksm=fb54a98acc23209cf6e52f226399388719cb7e08e3b6781121e5a9d140b6e1ca187f2fcb678d&scene=27

https://www.cnblogs.com/xiaoboge/p/10544336.html

https://blog.51cto.com/u_15279692/5521747

https://www.zhihu.com/question/509466878/answer/2699724857

标签:输出,入门,检测,分类,目标,https,CNN
From: https://www.cnblogs.com/emanlee/p/17093287.html

相关文章

  • 小目标6:下载文件功能的实现
    小目标6:下载文件功能的实现指定文件的下载功能:客户端用户输入服务器目录中的文件名,服务器打开这个文件,读取文件的内容,发送给客户端 实现:服务器端打开某个文件并读取文件,然后把内容传给客户端服务器端定义一个函数server_file_download用于打开文件读取内容+传送给客户端,我......
  • ELF可重定位目标文件
    1、简述​ 一个main.c文件从源代码到可执行文件要通过四个步骤:预处理、编译、汇编、链接。可重定位目标文件出现在汇编处理之后,其包含二进制代码和数据,并能与其他可重定位目标文件合并,最终创建一个可执行目标文件。​ 目标文件分为三种:可重定位目标文件、可执行目标文件、共享目......
  • FreeRTOS入门教程(队列详细使用示例)
    (文章目录)前言上篇文章我们已经讲解了队列的概念和队列相关的API函数,那么本篇文章的话就开始带大家来学习使用队列。一、队列基本使用这个例子将会创建三个任务,其中两个任务用来发送数据到队列中,另一个任务用来从队列中读取数据。voidTask1Function(void*param){ intv......
  • 软件测评怎么做?首选第三方软件检测机构
    ​ 第三方软件测评机构1.明确测试需求,形成清晰可量化的测试项如甲方信息化建设项目验收测试,一般参考合同签订的内容要求、开发阶段甲方提出的需求更改以及增加需求、最终需要做验收测试报告时与甲方再次核实参考监理单位意见来敲定测试内容。如,政府科技项目验收测试则依照科......
  • SpringAMQP—入门案例消息发送(rabbitmq是一个存放消息队列的中转站,发布者将消息队列发
        ......
  • java web开发入门学习笔记(手打超细版)
    我刚实习的时候写的,先分享分享吧,当时写的也不容易。有错的话请指出,博主会修正,适合入门小白当资料使用。包括包括java基础、数据库、js、jQuery、css、html等等知识点。详细笔记内容如下:面向对象封装:属性私有化,实现细节私有化,对外提供公共的访问方式。属性私有化,对外提供操作该属性......
  • 迁移虚拟机在目标主机上为目标网络配置的卸载或安全策略不同
    1、当前已连接的网络接口“Networkadapter1”无法使用网络“VMnetwork”,因为“在目标主机上为目标网络配置的卸载或安全策略不同于在源主机上为源网络配置的卸载或安全策略”  二、解决方案:检查集群内主机的虚拟交换机安全配置一致。(建议端口组名称也一致,还有字母大小......
  • 学习《Linux基础入门》重点前8节--命令汇总笔记
    2023-2024-120232313《Linux基础入门》学习总结作业信息这个作业属于哪个课程2023-2024-1网络空间安全这个作业要求在哪里掌握Linux基本命令,安装虚拟机这个作业的目标掌握Linux基本命令作业正文https://www.cnblogs.com/kitaikuyo/p/17746596.html教材......
  • C#集成ViewFaceCore人脸检测识别库
    前言#人脸检测与识别现在已经很成熟了,C#上有ViewFaceCore这个很方便的库,但这种涉及到native调用的库,一般会有一些坑,本文记录一下开发和部署的过程。本文的项目是AIHub,关于本项目的开发过程,可以参考之前的文章:项目完成小结:使用Blazor和gRPC开发大模型客户端而且经过最近......
  • TypeScript入门到精通——TypeScript类型系统基础——数组类型
    数组类型 数组是十分常用的数据结构,它表示一组有序元素的集合。在TypeScript中,数组值的数据类型为数组类型。一、数组类型定义 TypeScript提供了以下两种方式来定义数组类型:简单数组类型表示法泛型数组类型表示法1.1、简单数组类型表示法在TypeScript中,你可以使......