06目标检测-One-stage的目标检测算法

一、 One-stage目标检测算法       

  • 使用CNN卷积特征
  • 直接回归物体的类别概率和位置坐标值(无region proposal)
  • 准确度低,速度相对two-stage快

二、One-stage基本流程

输入图片------对图片进行深度特征的提取(主干神经网络)------对目标的位置进行定位和分类,One-stage和Two-stage的区别就在于是否包含了候选区域推荐的过程。Two-stage流程图如下:

三、One-stage常见算法 

      One-stage常见算法

  • YOLOV1/V2/V3
  • SSD/DSSD等
  • Retina-Net

四、One-stage的核心组件 

1、One-stage的两个核心组件

  • CNN网络(主干网络)
  • 回归网络

2、主干CNN网络设计原则

  • 从简单到复杂,再从复杂到简单的卷积神经网络
  • 多尺度特征融合的网络
  • 更轻量级的CNN网络

3、回归网络

        回归网络将通过CNN主干网络卷积层获取的feature maps作为回归网络的输入,通过回归网络主要完成了区域回归、目标区域类别的判定。

       回归网络中有两个主要内容:

  • 回归区域(置信度、位置、类别)
  • Anchor机制(SSD)

回归区域(置信度、位置、类别)

       通过回归网络直接输出最终目标的bounding box位置信息。这里的位置信息就是下图中的红框和蓝框的位置信息,这都是区域回归最终输出结果。所以说回归网络是目标检测算法One-stage中的重要组部分。

图中右侧图片里红色小框中有目标区域置信度会更高。其他小框的置信度会低。 

      置信度:是指是否存在目标,如果存在,表示代表目标区域,如果不是目标表示是背景区域

      类别:表示是否是目标区域,一般用概率表示,概率高表示是目标区域。类别主要是通过对anchor box的回归得到。

       位置:图像的位置,主要通过对anchor box的回归得到。

Anchor机制:

        找到不同的推荐区域(属于Two-stage的RPN网络的核心组件,One-stage则没有此组件,One-stage和Two-stage的区别在于是否有RPN推荐区域提取,但不影响One-stage使用RPN的思想,如:Anchor机制)在SSD目标回归(左边),经过主干网络卷积之后得到的feature map,考虑feature map中的每一个点都是一个Anchor,基于当前的Anchor来提取不同尺度的长宽比,对于不同尺度的长宽比所对应的目标区域,利用此目标区域来进行位置的回归和类别的判定。


yolo没有Anchor机制(右边)用的是各自坐标(左上右下)

4、回归网络预测过程(Yolo)

        过程:对整个图片进行划分,S * S 的格子,针对每个网格分别预测当前这个网格为中心的目标区域的位置信息(中上部图),预测出Bounding boxes和置信度,此外还会对每个格子预测目标类别的概率分布值(中下图),(B *5+C)*S *S 维的向量(最终输出) (B:每个格子预测多少的bouding boxes数;5:四个坐标加一个置信度;C:类别),最终的输出就对应到了这里的bouding box坐标的位置,以及bouding box置信度和对于每一个格子所对应的类别的概率分布,在拿到这些值之后,再利用每一个网格预测的类别信息和bouding box 所对应的置信度进行相乘,就能够拿到每一个bouding box所对应的类别置信度信息,利用类别置信度信息再结合NMS算法,对预测出的所有的Bouding box进行筛选过滤,得到最终预测结果。这个过程也是yolo算法在拿到回归网络预测结果之后得到最终的输出所经过的运算过程。实际上对于SSD和faster RNN这样的检测网络,最终输出的bouding box本身预测出的概率分布,可直接用于NMS算法所需要的类别置信度分数,在yolo算法中需要额外将中间两个图的结果进行融合(两个置信度相乘得到最终能分数置信度,最为NMS输入)。
       yolo是纯粹的端到端的回归网络,检测效率会更高。但是在yolo算法中通长使用各自划分,认为每一个格子点都是目标检测的中心点,有可能我们划分的格子都不是目标的中心点,因此基于中心点预测目标区域所对应的bouding box信息的前提假设会导致我们预测出来的检测相比于SSD,faster rcnn准确率低。再有,由于在yolo中划分格子的时候会忽略掉其中的小物体,比如说鸟类识别检测鸟群,可能会漏检。但整体检测速度快。

五、One-stage VS Two-stage

 上一篇:04目标检测-Two-stage的目标检测算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/112758.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京小程序开发-微信小程序开发时间总结

一、双线程模型 渲染线程和逻辑线程 小程序的双线程指的就是渲染线程和逻辑线程,这两个线程分别承担UI的渲染和执行 JavaScript 代码的工作 渲染线程使用 Webview 进行 UI 的渲染呈现。Webview 是一个完整的类浏览器运行环境,本身具备运行 JavaScript…

Python基础数据结构入门必读指南

更多资料获取 作者主页:涛哥聊Python 个人网站:涛哥聊Python 大家好,我是涛哥,今天为大家分享的是Python中常见的数据结构。 1.数组 含义:数组是一种有序的数据结构,其中的元素可以按照索引来访问。数组…

Python灰帽编程——错误异常处理与面向对象

文章目录 错误异常处理与面向对象1. 错误和异常1.1 基本概念1.1.1 Python 异常 1.2 检测(捕获)异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常 1.3 处理异常1.4 特殊场景1.4.1 with 语句 1.5 脚本完善 2. 内网主机存活检测程序2.1 scap…

Windows+Pycharm 如何创建虚拟环境

当我们开发一个别人的项目的时候,因为项目里有很多特有的包,比如 Pyqt5.我们不想破坏电脑上原来的包版本,这个时候,新建一个虚拟环境,专门针对这个项目就很有必要了. 简略步骤: 1.新建虚拟环境 1.打开 pycharm 终端(Terminal)安装虚拟环境工具: pip install virtualenv2.创…

随手笔记(四十五)——idea git冲突

图片为引用,在一次导入项目至gitee的过程中,不知道为什么报了403,很奇怪的一个错误,网上很多的答案大概分成两种。 第一种是最多的,直接找到windows凭据删掉 很抱歉的告诉各位,你们很多人到这里就已经解…

keil报错:Flash Download failed - Could not load file‘..\..\Output\Template.axf

keil报错:Flash Download failed - Could not load file’…\Output\Template.axf,如下图所示: 原因是很多.h文件没有定义位置,可以按照下图操作: 而且,如果是想使用压缩包,那一定要关闭keil后…

AH8316芯片:高效12V转5V 5A电源解决方案

AH8316是一款内置MOS的高效电源转换芯片,具有广泛的应用领域。本文将介绍AH8316芯片的主要特性和性能指标,以及其在12V转5V 5A电源转换中的应用。 AH8316芯片主要特性: 1. 输入电压范围广泛:芯片支持7V至32V的输入电压范围&#…

LeetCode(力扣)62. 不同路径Python

LeetCode62. 不同路径 题目链接代码 题目链接 https://leetcode.cn/problems/unique-paths/ 代码 递归 class Solution:def uniquePaths(self, m: int, n: int) -> int:if m 1 or n 1:return 1return self.uniquePaths(m, n - 1) self.uniquePaths(m - 1, n)动态 c…

MySQL 索引(一)

1.数据访问方式 在 MySQL 中,通常有两种方式访问数据库表的行数据:顺序访问和索引访问。 1.1.顺序访问 顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。实现比较简单&#xff0c…

需要每日温习的java八股文基础

一、java (1)集合 1.list:LinkedList、ArrayList和Vector ArrayList、LinkedList和Vector的区别,场景和扩容机制源码 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不…

YOLOv5算法改进(17)— 更换损失函数(EIoU、AlphaIoU、SIoU和WIoU)

前言:Hello大家好,我是小哥谈。损失函数(loss function)是机器学习中用来衡量模型预测值与真实值之间差异的函数。它用于度量模型在训练过程中的性能,以便优化模型参数。在训练过程中,损失函数会根据模型的…

problen(5)ubuntu版本问题

浅浅记录一下这段时间的血和泪吧,大概耗时快一个月了吧,终于解决了...... 因为需要开启pwn之旅,需要在Ubuntu上安装一些东西,就是下面的一条命令: sudo pip3 install pwntools -i Simple Index(显示不太好了…