【目标检测】方法概述

0. 重要论文:

在这里插入图片描述

1. 什么是目标检测
1.1 目标检测的定义:

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

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

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

  2. 中心点坐标:(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也有很多个

检测任务的评价指标:

任务描述输入输出评价指标
Detection and Localization(检测和定位)在输入图片中找出存在的物体类别和位置(可能存在多种物体)图片(image)类别标签(categories) 位置(bbox(x,y,w,h))IoU(Intersection over Union)mAP(mean Average Precision)

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

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
YOLOv8是一种先进的目标检测算法,它能够快速准确地检测图像中的目标体。下面是YOLOv8目标检测项目的概述: 1. 环境搭建:首先,需要搭建YOLOv8的开发环境。这包括安装Python和相关的依赖库,如OpenCV、NumPy等。 2. 数据集准备:接下来,需要准备用于训练和测试的数据集。常用的数据集包括COCO、VOC等。数据集应包含图像和相应的标签,标签通常是包含目标边界框和类别信息的XML或JSON文件。 3. 模型训练:使用准备好的数据集,可以开始训练YOLOv8模型。训练过程包括将图像输入模型、计算损失函数、反向传播更新模型参数等步骤。训练过程中可以使用预训练的权重来加速收敛。 4. 模型验证:训练完成后,需要对模型进行验证以评估其性能。可以使用验证集或测试集来评估模型在未见过的数据上的表现。常用的评估指标包括精确度、召回率、平均精确度等。 5. 模型预测:训练和验证完成后,可以使用训练好的模型进行目标检测预测。将待检测的图像输入模型,模型将输出检测到的目标边界框和类别信息。 6. 结果分析:最后,可以对模型的预测结果进行分析和解释。可以绘制边界框、计算目标的置信度等,以便更好地理解和使用YOLOv8模型。 请注意,以上是YOLOv8目标检测项目的一般概述,具体的实现步骤和细节可能因项目需求和数据集而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值