目标检测作业及阶段总结

目标检测作业及阶段总结

01.NMS作业

问题描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pg2XwpTJ-1646392628810)(笔记图片/01.NMS作业.jpg)]

解答

第一问解答

# 加载盘
from google.colab import drive
drive.mount('/content/drive/')
# 指定当前的工作文件夹
import os
# 此处为google drive中的文件路径,drive为之前指定的工作根目录,要加上
os.chdir("/content/drive/My Drive/Colab/Notebooks/") 

注:代码是在Colab中运行的,如果是本机运行,以上代码不需要执行。

# 单类别的NMS实现
import numpy as np
def nms(bboxes,confidence_score,threshold):
    """非极大抑制过程
    :param bboxes: 同类别候选框坐标
    :param confidence: 同类别候选框分数
    :param threshold: iou阈值
    :return:
    """
    # 1.传入无候选框返回空
    if len(bboxes) == 0:
      return [],[]
    # 强转数组
    bboxes = np.array(bboxes)
    score = np.array(confidence_score)
    # 取出n个的极坐标点
    x1 = bboxes[:,0]
    y1 = bboxes[:,1]
    x2 = bboxes[:,2]
    y2 = bboxes[:,3]

    # 2.对候选框进行NMS筛选
    # 返回的框坐标和分数
    picked_boxes = []
    picked_score = []
    # 对置信度进行排序,获取排序后的下标序号,argsort默认从小到大排序
    order = np.argsort(score)
    areas = (x2 - x1) * (y2 - y1)
    while order.size > 0:
      # 将当前置信度最大的框加入返回值列表中
      index = order[-1]
      # 保留该类剩余box中得分最高的一个
      picked_boxes.append(bboxes[index])
      picked_score.append(confidence_score[index])
      # 获取当前置信度最大的候选框与其他任意候选框的相交面积
      x11 = np.maximum(x1[index], x1[order[:-1]])
      y11 = np.maximum(y1[index], y1[order[:-1]])
      x22 = np.minimum(x2[index], x2[order[:-1]])
      y22 = np.minimum(y2[index], y2[order[:-1]])
      # 计算相交的面积,不重叠时面积为0
      w = np.maximum(0.0, x22 - x11)
      h = np.maximum(0.0, y22 - y11)
      intersection = w * h
      # 利用相交的面积和两个框自身的面积计算框的交并比
      ratio = intersection / (areas[index] + areas[order[:-1]] - intersection)
      # 保留IOU小于阈值的box
      keep_boxes_indics = np.where(ratio < threshold)
      # 保留剩余的框
      order = order[keep_boxes_indics]
    #返回NMS后的框及分类结果
    return picked_boxes,picked_score

# 输入数据测试
bounding = [(187, 82, 337, 317), (150, 67, 305, 282), (246, 121, 368, 304)]
confidence_score = [0.9, 0.75, 0.8]
threshold = 0.4
picked_boxes, picked_score = nms(bounding, confidence_score, threshold)
print('阈值threshold为:', threshold)
print('NMS后得到的bbox是:', picked_boxes)
print('NMS后得到的bbox的confidences是:', picked_score)

运行结果:
阈值threshold为: 0.4
NMS后得到的bbox是: [array([187,  82, 337, 317])]
NMS后得到的bbox的confidences是: [0.9]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZaYZhf7-1646392628811)(笔记图片/image-20220304171908910.png)]

第二问解答

目标检测方法分类,分为two-stage(两阶段)和one-stage(单阶段)

  • two-stage算法

流程:先生成候选框,再通过CNN进行分类,提取CNN卷积特征,进行候选区域的筛选和目标检测

特点:准确度高,但速度慢

two-stage算法代表:RCNN系列(RCNN—Faster RCNN)

  • one-stage算法

流程:通过主干网络,找出目标类别和位置信息

特点:速度快,但是精度较低

two-stage算法代表:YOLO系列(yolov1—yolov3)、SSD等

第三问解答

RCNN目标检测的流程:候选区域生成、CNN特征提取、目标分类、目标定位

缺点:训练阶段多,训练耗时;预测速度慢;占用磁盘空间大;数据的形状会发生变化

02.anchor的思想

问题描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AipYwvIP-1646392628812)(笔记图片/02.anchor的思想.jpg)]

第一问解答

anchor在目标检测中表示 固定的参考框 。首先预设一组不同尺度不同长宽比的固定参考框,覆盖几乎所有位置;每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标 ;anchor技术将候选区域生成问题转换为 “这个固定参考框中有没有目标,目标框偏离参考框多远” ,不再需要多尺度遍历滑窗。

第二问解答

RPN网络的主要流程是:

首先生成一系列的固定参考框anchors,覆盖图像的任意位置,然后送入后续网络中进行分类和回归;对于分类分支:通过softmax分类判断anchor中是否包含目标;对于回归分支:计算目标框对于anchors的偏移量,以获得精确的候选区域;最后通过Proposal层综合含有目标的anchors和对应bbox回归偏移量获取候选区域,同时剔除太小和超出边界的候选区域。

对于要检测的图片,利用backbone生成它的特征图, 计算该特征图上生成anchor属于目标的概率,以及对应的位置参数(相对于anchor的偏移和尺度变换)。选取概率较大的6000个anchor,利用回归的位置参数,修正这6000个anchor的位置,得到Rols,利用非极大值((Non-maximum suppression, NMS)抑制,选出概率最大的2000个作为生成的候选区域。

03.FasterRCNN的流程及训练方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOAfaO43-1646392628812)(笔记图片/03.FasterRCNN的流程及训练方法.jpg)]

问题解答

FasterRCNN的流程图如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nupKZlg-1646392628813)(笔记图片/image-20220304183232058.png)]

该网络主要可分为四部分:

  • Backbone:backbone由一组卷积神经网络构成,Faster RCNN首先使用一组基础的conv+relu+pooling层提取图像中的特征,获取图像的特征图featuremaps。该feature maps被共享用于后续RPN层和全连接层。主要进行特征提取,将最后的全连接层舍弃,得到特征图送入后续网络中进行处理。

  • RPN网络:RPN网络用于生成候选区域region proposals。该部分通过softmax判断anchors属于positive或者negative,即是否包含目标,再利用bounding box regression修正anchors获得精确的proposals。主要生成候选区域。

  • Roi Pooling:该部分收集输入图像的feature maps和proposals,综合信息后提取proposal的特征向量,送入后续全连接层判定目标类别和确定目标位置。主要负责收集RPN网络生成的候选区域,并将其映射到特征图中并固定维度,送入后续网络中进行分类和回归。

  • head:该部分利用特征向量计算proposal的类别,并通过bounding box regression获得检测框最终的精确位置。

Faster-RCNN网络训练的方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vt5hiFCz-1646392628814)(笔记图片/image-20220304183705971.png)]

整个训练过程分为四步:

  • 第一步:RPN网络的训练,使用ImageNet预训练的模型初始化,并端到端微调用于区域建议任务。

  • 第二步:利用第一步的RPN生成的建议框,由Fast RCNN训练一个单独的检测网络,这个检测网络同样是由ImageNet预训练的模型初始化的,这时候两个网络还没有共享卷积层。

  • 第三步:用检测网络初始化RPN训练,但是固定共享的卷积层,并且只微调RPN独有的层,现在两个网络共享卷积层了。

  • 第四步:保持共享的卷积层固定,微调Fast RCNN的fc层。这样,两个网络共享相同的卷积层,构成一个统一的网络。

Faster RCNN还有一种end-to-end的训练方式,可以一次完成完成,将RPN loss与Fast RCNN loss相加,然后进行梯度下降优化,更新参数。

04.yolo作业

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-titvF8yO-1646392628814)(笔记图片/04.yolo作业.jpg)]

第一问解答

首先看yoloV3的结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wKDWbao-1646392628815)(笔记图片/70)]

注意这个图是我参考这篇博客的https://www.cnblogs.com/yymn/articles/13674816.html

跟我之前写的yolo系列那个文章中的图有点不一样,主要是一个是DBL,一个CBL,但是含义都是一样的。

DBL: 如图1左下角所示,也就是代码中的Darknetconv2d_BN_Leaky,是yolo_v3的基本组件。就是卷积+BN+Leaky relu。对于v3来说,BN和leaky relu已经是和卷积层不可分离的部分了(最后一层卷积除外),共同构成了最小组件。
resn:n代表数字,有res1,res2, … ,res8等等,表示这个res_block里含有多少个res_unit。这是yolo_v3的大组件,yolo_v3开始借鉴了ResNet的残差结构,使用这种结构可以让网络结构更深(从v2的darknet-19上升到v3的darknet-53,前者没有残差结构)。对于res_block的解释,可以在图1的右下角直观看到,其基本组件也是DBL。
concat:张量拼接。将darknet中间层和后面的某一层的上采样进行拼接。拼接的操作和残差层add的操作是不一样的,拼接会扩充张量的维度,而add只是直接相加不会导致张量维度的改变。

backbone,输出部分都在上述的参考博客中,文字太多了,懒得看了,哈哈哈。如果有兴趣深入的话可以继续研究!

第二个问题

首先看这个图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tTKZJeQc-1646392628815)(笔记图片/image-20220304190504395.png)]

其中bx,by,bw,bh是预测边框的中心和宽高。 cx,cy是当前网格左上角到图像左上角的距离,要先将网格大小归一化,即令一个网格的宽=1,高=1。 pw,ph是先验框的宽和高。 σ是sigmoid函数。 tx,ty,tw,th是网络输出的结果,分别用于预测边框的中心和宽高。

由于σ函数将 tx,ty约束在(0,1)范围内,预测边框的蓝色中心点被约束在蓝色背景的网格内。约束边框位置使得模型更容易学习,且预测更为稳定。

阶段总结

目标检测这个阶段我主要学习了目标检测的概念、R-CNN网络基础、Faster-RCNN网络、YOLO系列算法、YoloV3 案例,实现算法复现、SSD算法其中重要的内容,这个阶段理论知识偏多,看课的时候我老是走神,其中一些损失函数、正负样本的设定真的没学太懂,在看代码的时候不知道为什么要那样做。模型训练的结果真的看着挺厉害的,我感觉是他们数据集给的好,数据集都是现成的,运行就可以识别人啊、板凳什么的,还有标注框。但是以后真要让我自己写代码准确识别一个人或动物类别,现在我还真的是摸不到头脑。。。还得继续学习下去,希望以后的学习能够弥补我现有的疑问!

猜你喜欢

转载自blog.csdn.net/qq_43966129/article/details/123283542