目标检测入门: YOLOV1 + V2

文章介绍了图像处理的四大任务,包括分类、定位和检测。在目标检测中,RCNN是一种两阶段方法,结合搜索算法和SVM进行定位和分类。SPPNet解决了输入图像大小不一致的问题,而YOLOV1作为单阶段检测器,实现了端到端的快速目标检测。文章还讨论了YOLOV1的改进,如BN层的增加和预训练的Darknet-19模型,以及预测偏移量的概念。

1. 图像处理的四大任务

  • 分类: 对图像进行分类,知道他属于哪一类。用神经网络对图像进行特征提取,平时做训练只要把同类型的图像放在同一个文件夹下就算标记了
  • 定位: 定位出目标在图像对应的位置 ex: (x, y) 中心点 + 宽高
  • 检测: 分类 + 定位:
    • 第一步:使用卷积神经网络进行图像特征的提取
    • 第二部:对卷积神经网络的特征,通过标签来约束进行定位(GT)和分类识别(label)的训练

2. 目标检测的难点:

  • 位置任意性(Arbitrary object location):目标可以出现在图像的任何位置,不同目标之间的位置也可能相差很大,因此需要算法具有在不同位置对目标进行检测和识别的能力。

  • 大小多样性(Scale variation):目标的大小可能因为距离、角度、摄像机参数、目标运动等因素而变化,因此需要算法能够识别不同大小的目标。

  • 形态的差异性(Shape variation):即使同一类目标在不同场景下也可能出现形态上的差异,因此需要算法具有识别目标不同形态的能力,以确保能够准确地检测出目标。

3. Two-Stage Method: RCNN

在这里插入图片描述
搜索算法 + SVM 分类 +坐标回归

  1. 搜索性算法:
  • 选择性搜索(Selective Search)是一种用于区域提取的算法,常用于RCNN(Region-based Convolutional Neural Networks)中的目标检测任务。选择性搜索算法通过分析图像中相邻像素之间的颜色、纹理、大小和形状等特征,将相似的像素分为一组,然后将这些组合成不同大小和形状的区域,作为可能包含目标的候选区域。

  • 具体来说,选择性搜索算法首先将图像分成多个小块,然后通过合并相邻的小块来生成不同大小的候选区域。合并的过程基于一种称为相似性度量(similarity measure)的函数,它根据像素之间的颜色、纹理、大小和形状等特征计算相邻小块之间的相似度,相似度高的小块被合并成一个更大的区域,相似度低的小块被保留下来。这个过程不断迭代,直到生成足够数量的候选区域。

  • 选择性搜索算法的优点是能够有效地减少目标检测任务中的计算量,避免了对整个图像进行分类的复杂度。在RCNN中,选择性搜索算法可以生成多个候选区域,并将它们输入到CNN中进行特征提取和分类,从而实现目标检测任务。

  • 搜索算法本身并没有一个专门的网络,因为它们通常是一种算法或方法,用于解决优化或搜索问题。搜索算法的具体实现通常依赖于编程语言和应用环境。

  1. 坐标回归和SVM
  • 搜索算法后RCNN使用两个独立的全连接神经网络,一个用于坐标回归,另一个用于支持向量机(SVM)分类。坐标回归网络用于精确定位每个候选区域中的目标边界框的位置和大小,而SVM分类网络用于将每个候选区域分配给不同的目标类别。最终,对于每个候选区域,选择具有最高得分的目标边界框和目标类别。
  • 需要注意的是,由于RCNN中的SVM分类器是针对每个类别独立训练的,因此对于每个类别,需要单独运行一次候选区域提取、调整大小、特征提取、坐标回归和SVM分类的过程。这使得RCNN在训练和推理过程中非常耗时,并且无法直接处理多个目标实例或不同大小的目标实例。
  • 其次就是R-CNN涉及使用全连接层,因此要求输入尺寸固定,这也造成了精度的降低;最后候选区域需要缓存,占用空间比较大。

4. Two-Stage Method: SPPNet

在这里插入图片描述

  • SPPNet(Spatial Pyramid Pooling Network)是一种空间金字塔池化(Spatial Pyramid Pooling)技术与卷积神经网络(CNN)相结合的方法,用于解决输入图像大小不一致的问题。

  • 与传统的卷积神经网络不同,SPPNet在最后一层卷积层之后,将整个特征图分割为不同大小的子区域,并对每个子区域进行池化操作。这种空间金字塔池化技术可以使得网络对输入图像的大小和形状不敏感,而且不需要对不同大小的输入图像进行重复训练。具体来说,SPPNet在网络最后一层卷积特征图上执行以下步骤:

    • 将特征图划分为不同大小的子区域。

    • 对于每个子区域,进行最大池化操作,得到固定长度的特征向量。

  • 将所有子区域的特征向量按照预定义的顺序拼接在一起,形成最终的特征表示。

  • 由于SPPNet中的空间金字塔池化技术可以处理任意大小的输入图像,并且只需要执行一次,因此在训练和推理过程中具有很高的效率。与传统的搜索算法不同,SPPNet中的空间金字塔池化操作是固定的,不需要额外的计算,因此不会增加计算复杂度。

5. 两阶段目标检测方法——Fast RCNN

  1. https://blog.youkuaiyun.com/qq_47233366/article/details/125579620?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167824976216800188526281%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=167824976216800188526281&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-125579620-null-null.142v73insert_down1,201v4add_ask,239v2insert_chatgpt&utm_term=faster%20r-cnn&spm=1018.2226.3001.4187

6. 初探单阶段检测器: YOLOV1思想与流程

6.1 YOLO思想

  1. 与之前的二阶段检测器相比,YOLO会把整张图作为网络的输入,不像二阶段一样,没有选择性搜索的算法,直接用神经网络对整张图进行特征提取
  2. 简单说三步走
  • Reize Image Size
    • 把全部图像处理成448 x 448(YOLOV1要求的输入)
    • 把数据归一化到0-1的浮点数
  • 神经网络提取特征
  • NMS (Non-max-Supression): 干掉多余的方框

6.2 YOLOV1的流程

在这里插入图片描述

  1. 将输入图像分成一个固定大小的网格,每个网格被称为一个Grid Cell,这个网格的大小是通过将原始图像大小缩放为448x448像素后得到的。整张图像共分成SxS个网格,每个网格的大小是固定的,一般为7x7或者14x14。

  2. 对于每个目标,根据标注信息计算出目标中心点相对于输入图像左上角点的偏移量 δ x \delta_x δx δ y \delta_y δy,然后将偏移量 δ x \delta_x δx δ y \delta_y δy 转换为相对于所在网格左上角点的偏移量,用于确定包含该目标的网格以及预测目标位置的具体坐标。如果一个目标横跨了多个网格,则选择包含该目标中心点的网格作为负责预测该目标的网格。

  3. 对于每个网格,预测该网格内是否存在目标以及目标的类别信息和位置信息(即边界框的坐标(x、y、w、h)和宽高),同时计算目标置信度(confidence),即该目标存在的概率。

6.3 如果这个时候有一个目标,他横跨了好几个cell,那我到底用哪一个cell去预测类别和定位信息呢?

  1. 如果一个目标的边界框横跨了多个网格,那么YOLOv1算法会选择包含该目标中心点的网格作为负责预测该目标的网格,并将该目标的位置和类别信息预测为该网格的输出。算法会选择距离目标中心点最近的那个网格作为包含该目标的网格,并将该网格的输出作为该目标的预测结果。
  2. 在标准的YOLOv1中,一个目标横跨了三个 Grid Cell,但只有包含该目标中心点的 Grid Cell 负责预测该目标的类别和位置信息,并且只有这个 Grid Cell 被用于训练目标检测模型的分类和定位损失函数。其他两个 Grid Cell 则不参与训练,因为它们不包含目标中心点。

6.4 如果一个目标横跨了三个cell,可以按照以下步骤确定包含该目标中心点的网格:

  1. 计算目标中心点相对于输入图像左上角点的偏移量 δ x \delta_x δx δ y \delta_y δy
  • δ x = x − x t o p w i m g \delta_x = \frac{x - x_{top}}{w_{img}} δx

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值