当前位置: 首页 > news >正文

经典目标检测神经网络 - RCNN、SSD、YOLO

文章目录

    • 1. 目标检测算法分类
    • 2. 区域卷积神经网络
      • 2.1 R-CNN
      • 2.2 Fast R-CNN
      • 2.3 Faster R-CNN
      • 2.4 Mask R-CNN
      • 2.5 速度和精度比较
    • 3. 单发多框检测(SSD)
    • 4. YOLO

1. 目标检测算法分类

目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与Two-Stage是两种不同的思路,其各有各的优缺点。

One-Stage
    主要思路:直接通过卷积神经网络提取特征,预测目标的分类与定位;

Two-Stage
    主要思路:先进行区域生成,即生成候选区域(Region Proposal),在通过卷积神经网络预测目标的分类与定位;

优缺点

优缺点One-StageTwo-Stage
优点速度快;避免背景错误产生false positives; 学到物体的泛化特征精度高(定位、检出率);Anchor机制;共享计算量
缺点精度低(定位、检出率);小物体的检测效果不好速度慢;训练时间长;误报相对高

从目前看,在移动端一般使用 One-Stage算法。现在很难说,精度和准确率的问题,因为影响因素不仅仅取决于算法,还跟数据集大小、图像标注质量、训练参数等有很大的关系。

主要算法

One-Stage:YOLO系列(v1-v8),SSD系列(R-SSD、DSSD、FSSD等),Retina-Net,DetectNet,SqueezeDet。

Two-Stage:RCNN系列(Fast-RCNN、Faster-RCNN、Mask-RCNN),SPPNet,R-FCN。


2. 区域卷积神经网络

2.1 R-CNN

在这里插入图片描述

使用启发式搜索算法来选择锚框。

使用预训练模型来对每个锚框抽取特征。

训练一个SVM来对类别分类。

训练一个线性回归模型来预测边缘偏移框。

当锚框每次选择的大小不同,我们如何使这些锚框称为一个batch呢?

兴趣区域(ROI)池化层

ROI Pooling

  • 给定一个锚框,均匀分割成 n × m \ n\times\ m  n× m块,输出每块里的最大值
  • 不管锚框多大,总是输出$\ nm\ $个值

在这里插入图片描述

2.2 Fast R-CNN

对图片整体抽取特征。

  • 不再对每一个锚框做CNN的特征抽取,而是对图片整体使用CNN进行特征抽取
  • 使用RoI池化层对每个锚框生成固定长度特征

在这里插入图片描述

2.3 Faster R-CNN

  • 使用一个区域提议网络来代替启发式搜索,来获得更好的锚框。
    在这里插入图片描述

2.4 Mask R-CNN

  • 如果有像素级别的标号,使用FCN来利用这些信息
  • 在无人车领域运用较多

在这里插入图片描述

在做像素级别预测时,边界位置不要发生太多的错位。

2.5 速度和精度比较

在这里插入图片描述

总结:

  • R-CNN是最早、也是最有名的一类基于锚框和CNN的目标检测算法
  • Fast/Faster R-CNN持续提升性能
  • Faster R-CNN和Mask R-CNN是在最求高精度场景下的常用算法

3. 单发多框检测(SSD)

SSD全称Single Shot Multibox Detector,是一种单阶段目标检测器。其优点是原始的YOLO和Faster R-CNN在推理速度和精度之间取得了更好的平衡。SSD模型是由Wei Liu等人在使用卷积神经网络(CNN)进行目标检测的研究中,提出的一种改进思路。

SSD用于图像分类、物体检测和语义分割等各种深度学习任务。相对于其他目标检测算法,SSD模型有更高的精度,而且速度也是非常快的。其主要思路是通过在CNN的最后几层添加多个预测层实现多尺度的目标检测,然后通过一个过滤策略对每个检测框进行筛选,最后输出最终的检测结果。

在这里插入图片描述

生成锚框

在这里插入图片描述

  • 对每个像素,生成多个以它为中心的锚框
  • 给定n个大小为 s 1 , s 2 , . . . , s n s_1,s_2,...,s_n s1,s2,...,sn m m m个高宽比,那么生成 n + m − 1 n+m-1 n+m1锚框,其大小和高宽比分别为:

( s 1 , r 1 ) , ( s 2 , r 1 ) , . . . , ( s n , r 1 ) , ( s 1 , r 2 ) , . . . , ( s 1 , r m ) (s_1,r_1),(s_2,r_1),...,(s_n,r_1),(s_1,r_2),...,(s_1,r_m) (s1,r1),(s2,r1),...,(sn,r1),(s1,r2),...,(s1,rm)

SSD模型

  • 一个基础网络来抽取特征,然后多个卷积层块来减半高宽
  • 在每段都生成锚框
    • 底部段来拟合小物体,顶部短来集合大物体
  • 对每个锚框预测类别和边缘框

总结:

  • SSD通过单神经网络来检测模型
  • 以每个像素为中心的产生多个锚框
  • 在多个段段输出上进行多尺度的检测

4. YOLO

You Only Look Once

YOLO系列算法是一类典型的one-stage目标检测算法,其利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好,所以在工业界也十分受欢迎。

Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别。

在这里插入图片描述

yolo尽量让锚框不重叠。

  • SSD中锚框大量重叠,因此浪费了很多计算
  • yolo将图片均匀分成 S × S S\times S S×S个锚框
  • 每个锚框预测 B B B个边缘框
  • 后续版本(V2,V3,V4…)有持续改进

YOLO家族进化史(V1-V8)

  • YOLOv1
  • YOLOv2:对YOLOv1进行改进
  • YOLOv3:对YOLOv2进行改进
  • YOLOv4:对YOLOv3进行改进
  • YOLOv5:对YOLOv4进行改进
  • YOLOx:以YOLOv3作为基础网络进行改进
  • YOLOv6:由美团推出,更加适应GPU设备,算法思路类似YOLOv5(backbone+neck)+YOLOX(head)
  • YOLOv7:是YOLOv4团队的续作,检测算法与YOLOv4,v5类似
  • YOLOv8:是YOLOv5团队进一步开发的

相关文章:

经典目标检测神经网络 - RCNN、SSD、YOLO

文章目录 1. 目标检测算法分类2. 区域卷积神经网络2.1 R-CNN2.2 Fast R-CNN2.3 Faster R-CNN2.4 Mask R-CNN2.5 速度和精度比较 3. 单发多框检测(SSD)4. YOLO 1. 目标检测算法分类 目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与…...

mysql存在10亿条数据,如何高效随机返回N条纪录,sql如何写

1 低效方案 1.使用ORDER BY RAND(): SELECT * FROM your_table ORDER BY RAND() LIMIT 1; 这将随机排序表中的所有行,并且通过LIMIT 1仅返回第一行,从而返回一个随机记录。然而,对于大型表来说,ORDER BY RAND()可能会…...

c语言中啥时候用double啥时候用float?

c语言中啥时候用double啥时候用float? 一般来说,可以使用double来表示具有更高精度要求的浮点数,因为它可以存储更大范围的数值并且具有更高的精度。 最近很多小伙伴找我,说想要一些c语言资料,然后我根据自己从业十年…...

vscode 保存 “index.tsx“失败: 权限不足。选择 “以超级用户身份重试“ 以超级用户身份重试。

vscode 保存 "index.tsx"失败: 权限不足。选择 “以超级用户身份重试” 以超级用户身份重试。 操作:mac在文件夹中创建文件,sudo 创建umiJs项目 解决:修改文件夹权限 右键文件夹...

综合性练习

名片管理系统 综合性项目实现—详细请点这里 dict {} # 定义一个空字典,用于存储信息。 list [] # 定义一个列表,存储name值 list1 [] #存储age值 list2 [] #存储phone值 def people_tips(): #提示print("*****" * 10)print("…...

threejs(7)-精通粒子特效

一、初识Points与点材质 // 设置点材质 const pointsMaterial new THREE.PointsMaterial(); import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import gsa…...

使用了百度OCR,记录一下

由于识别ocr有的频率不高,图片无保密性需求,也不想太大的库, 就决定还是用下api算了,试用了几家,决定用百度的ocr包,相对简单。 遇到的问题里面下列基本有提到:例如获取ID,KEY&…...

5.OsgEarth加载地形

愿你出走半生,归来仍是少年! 在三维场景中除了使用影像体现出地貌情况,还需要通过地形体现出地势起伏,还原一个相对真实的三维虚拟世界。 osgEarth可通过直接加载Dem数据进行场景内的地形构建。 1.数据准备 由于我也没有高程数据&#xff0c…...

基于回溯搜索算法的无人机航迹规划-附代码

基于回溯搜索算法的无人机航迹规划 文章目录 基于回溯搜索算法的无人机航迹规划1.回溯搜索搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用回溯搜索算法来优化无人机航迹规划。 …...

微信小程序云开发笔记-初始化商城小程序

缘起:由于痴迷机器人,店都快倒闭了,没办法,拿出点精力给店里搞个小程序,要多卖货才能活下来搞机器人,在此记录一下搞小程序的过程,要不然搞完又忘了。腾讯的云开发,前端和后端都有了…...

vulnhub_DeRPnStiNK靶机渗透测试

VulnHub2018_DeRPnStiNK靶机 https://www.vulnhub.com/entry/derpnstink-1,221/ flag1(52E37291AEDF6A46D7D0BB8A6312F4F9F1AA4975C248C3F0E008CBA09D6E9166) flag2(a7d355b26bda6bf1196ccffead0b2cf2b81f0a9de5b4876b44407f1dc07e51e6) flag4(49dca65f362fee401292ed7ada96f9…...

网站如何判断请求是来自手机-移动端还是PC-电脑端?如何让网站能适应不同的客户端?

如果网站需要实现手机和PC双界面适应,可以有两种方式: 第一种是响应式界面,根据屏幕宽度来判定显示的格式。这种需要前端来做,手机/PC共用一套代码,有一定的局限性。 第二种是后端通过request请求头中的内容来分析客户…...

sass和 scss的区别?

Sass(Syntactically Awesome Style Sheets)和 SCSS(Sassy CSS)是两种流行的 CSS 预处理器,它们扩展了普通的 CSS 语法,提供了更多的功能和便利性。下面是 Sass 和 SCSS 的主要区别: 1&#xff…...

Vuex 动态模块状态管理器

模块化思想 我们之前的博文已经讲述了Vuex怎么使用命名空间实现模块化状态管理。详情可以看: Vuex命名空间及如何获取根模块、兄弟模块状态管理器_AI3D_WebEngineer的博客-CSDN博客https://blog.csdn.net/weixin_42274805/article/details/133269196?ops_request_…...

实现分片上传、断点续传、秒传 (JS+NodeJS)(TypeScript)

一、引入及效果 上传文件是一个很常见的操作,但是当文件很大时,上传花费的时间会非常长,上传的操作就会具有不确定性,如果不小心连接断开,那么文件就需要重新上传,导致浪费时间和网络资源。 所以&#xff0…...

浅谈安科瑞EMS能源管控平台建设的意义-安科瑞 蒋静

摘 要:能源消耗量大、能源运输供给不足、环境压力日趋增加、能耗双控等一系列问题一直困扰着钢铁冶金行业,制约着企业快速稳定健康发展。本文介绍的安科瑞EMS能源管控平台,采用自动化、信息化技术,实现从能源数据采集、过程监控、…...

【原创】指针变量作为函数参数要点注意+main函数中值是否改变

指针变量作为函数参数要点注意(已写至笔记) 1传参指针不加*(main中函数) 2收参指针要加*(被main调用的函数) 3传参指针名可与收参指针名不同,不影响 4【问】如何看主函数中指针所指内容是否改变…...

售后处置跟踪系统设想

售后处置跟踪系统设想 前言 随着汽车工业的发展,软件定义车的模式已成为主流汽车设计及智能化功能架构模式,通过引入SOA的软件架构设计,使得现有的座舱软件、云端服务软件、App软件等众多功能模块的版本迭代频次日新月异,发版更…...

python实现ModBusTCP协议的server

python实现ModBusTCP协议的server是一件简单的事情,只要通过pymodbus、pyModbusTCP等模块都可以实现,本文采用pymodbus。 相关文章见: python实现ModBusTCP协议的client-CSDN博客 一、了解pymodbus的Server 1、pymodbus.server的模块 pym…...

AndroidStudio编译错误‘android.injected.build.density‘ is deprecated

问题 AndroidStudio编译错误 The option ‘android.injected.build.density’ is deprecated. It was removed in version 8.0 of the Android Gradle plugin. Density property injection from Android Studio has been removed. 解决 app/build.gradle 中这行 apply plugi…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

node.js的初步学习

那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...

Qt学习及使用_第1部分_认识Qt---Qt开发基本流程

前言 学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面. 参考书:<Qt 6 C开发指南>(以下称"本书") 标识说明:概念用粗体倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字), 本书原话内容用深蓝色标识,比较重要的内容用加粗倾…...

VASP软件在第一性原理计算中的应用-测试GO

VASP软件在第一性原理计算中的应用 VASP是由维也纳大学Hafner小组开发的一款功能强大的第一性原理计算软件&#xff0c;广泛应用于材料科学、凝聚态物理、化学和纳米技术等领域。 VASP的核心功能与应用 1. 电子结构计算 VASP最突出的功能是进行高精度的电子结构计算&#xff…...