小白的树莓派Tensorflow2.0 opencv 学习笔记(五)

神经网络目标检测

神经网络的类型

  1. 全连接层神经网络
    前向计算简单、梯度求导简单,但参数量大,训练困难
  2. 卷积神经网络
    利用局部相关性和权值共享思想,在计算机视觉方面表现出色,但不擅长自然语言
  3. 循环神经网络
    广泛应用于自然语言和长序列问题,但训练不稳定,难以并行化
  4. 注意力神经网络
    最初在图像分类任务上提出,后来也应用于NLP等领域
  5. 图神经网络
    处理空间拓扑结构

为了实现树莓派的图像识别,暂时只关注卷积神经网络并且为了制作一辆能够自主循迹,识别物体并且实现抓取功能的小车,我们暂时只学习卷积神经网络的区域模型(即区域目标检测,而非简单的图形识别或分类)

内容主要包括四种卷积网络

  1. R-CNN
  2. Fast R-CNN
  3. YOLO
  4. SSD

首先明确目标检测与图像分类的不同:目标检测要求在图像中确定多个可能目标的位置,首先判断是否存在目标,如果存在再进行分类

R-CNN

采用滑动窗口利用区域识别进行目标检测
包括三个模块:区域推荐、特征提取、区域分类

  1. 区域推荐:将输入图像生成约2000个区域推荐构成候选检测集。推荐的方法时选择性搜索
  2. 特征提取:从每个区域推荐中提取固定长度为4096的特征向量,利用卷积网络计算每个区域推荐的特征值
  3. 区域分类:对每个推荐区域进行打分和筛选,先采用类别相关的线性支持向量机对特征向量打分,再根据分值高低保留高分,拒绝(即区域内没有目标)的条件是与一个阈值进行比较。

但训练过程阶段多,时空费用大,目标检测速度慢,因此就有了Fast R-CNN

Fast R-CNN

Fast R-CNN 利用共享卷积计算有效减少目标检测的运行时间,但是却依赖非常耗时的区域推荐算法来提供目标位置的假设。由此催生除了RPN区域推荐网络,所以Fast R-CNN实际上是由一个RPN模块和一个Fast R-CNN检测器组成的。

RPN是用一个全卷积网络实现的,输入一幅图像,输出一组带有对象得分的矩形目标推荐,而RPN与Fast R-CNN目标检测网络共用一组卷积层,共享计算,在最后一个共享卷积层输出的卷积特征图上通过滑动一个小网络生成区域推荐。

Fast R-CNN的训练算法包括四步:

  1. 用ImageNet预训练一个模型去初始化RPN
  2. 用ImageNet预训练一个模型去初始化Fast R-CNN检测网络,利用RPN独立训练检测网络
  3. 利用Fast R-CNN初始化RPN训练并固定共享卷积层
  4. 保持共享卷积层不变,只微调Fast R-CNN的独有层

YOLO模型结构

YOLO先将输入图像分成S*S个网格,然后每个网格负责检测中心落在其中的对象目标,然后用N个边框去寻找目标及并计算相应的置信得分,置信得分表示一个边框含有对象目标的可信程度和准确程度,如果不包含目标,则得分为0,每个边框有五个预测值,(x,y)表示边框中心相对于网格边界的位置坐标,实际上是用0-1之间的比例系数来表示的,w和h是边框相对整个图像的宽度和高度比例,confidence是置信度,然后进入复杂的卷积神经网络最后输出预测。

SSD 单次检测器

SSD不采用边框推荐,使用滤波器负责不同宽高比的检测。SSD的基础是一个前馈卷积网络,用来产生一个大小固定的边框集合并对其中的对象类别实例进行打分,最后通过非极大值抑制步骤给出最后的预测结果

发布了25 篇原创文章 · 获赞 2 · 访问量 2113

猜你喜欢

转载自blog.csdn.net/weixin_43874764/article/details/104180166