SSD网络介绍

news2024/11/26 21:45:43

1. 目标检测

计算机视觉关于图像识别有四大类任务:

  • 分类 Classfication:解决“是什么?”的问题,即给定一张图片或一段视频,判断里面包含什么类别的目标;
  • 定位 Location:解决“在哪里?”的问题,即定位出这个目标的位置;
  • 检测 Detection:解决“在哪里?是什么?”的问题,不仅要定位出这个目标的位置,还要知道这个目标物体是什么?
  • 分割 Segmentation:分为实例的分割(instance-level)和场景分割(scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

目标检测(object detection)的目的就是找出图像中所有感兴趣的目标,确定他们的类别和位置。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等许多因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。

2. 背景

目标检测主流算法主要有两大类:

  • two-stage:R-CNN系列
    其方法是先进行区域生成,该区域称之为 region proposal(RP,一个有可能包含待检测物体的预选框),然后再通过网络预测目标的分类和定位。
  • one-stage:SSD和YOLO系列
    不利用RP,直接在网络中提取特征来预测目标的分类和位置。
    在这里插入图片描述

3. 核心理念

特征金字塔(多尺度):在多个尺度上进行目标检测以提高精度。
原因在于:

  • 多尺度信息:特征金字塔可以通过在不同层级的网络中提取特征来获取多尺度信息。在任务中,目标可能以不同的尺寸出现在图像中,因此需要在不同尺度上进行检测和定位。特征金字塔通过合并不同层次的特征图,可以检测和识别不同尺寸的目标。
  • 上下文信息:特征金字塔通过在不同的层级中提取特征,可以捕获更广泛的上下文信息。较深层次的特征通常对于全局语义信息具有较好的把握,而较浅层次的特征可以提供更多局部细节信息。通过特征金字塔,算法可以在不同层级上同时利用全局和局部信息,从而更好地理解图像内容。
  • 减少信息丢失: 在深度卷积神经网络中,随着网络层数的增加,特征图的尺寸逐渐减小。这可能导致信息丢失,特别是对于较小目标或细节。特征金字塔通过融合多个尺度的特征,可以减少信息丢失的影响,提高网络对小目标的检测能力。

4. SSD网络结构

在这里插入图片描述
SSD的网络结构主要分为三个部分:VGG16 Base Layer, Extra Feature Layer, Detection layer

VGG16 Base Layer:
SSD网络以VGG16作为基础的特征提取层,并选取其中的Conv4_3作为第一个特征层用于目标检测。

Extra Feature Layer:
在Base Layer的基础上,作者将VGG16中的FC6,FC7改成了卷积层Conv6,Conv7,并且同时添加了Conv8,Conv9,Conv10,Conv11这几个特征层用于目标检测。

输入:reshape后 大小为 ( 300 × 300 × 3 ) (300 \times 300\times3) 300×300×3的图像
Conv1_2:两次 3 × 3 3 \times3 3×3卷积,得到 ( 300 × 300 × 64 ) (300 \times 300\times64) 300×300×64;再经过 2 × 2 2\times2 2×2最大池化,得到 ( 150 × 150 × 64 ) (150 \times 150\times64) 150×150×64
Conv2_2:两次 3 × 3 3 \times3 3×3卷积,得到 ( 150 × 150 × 128 ) (150 \times 150\times128) 150×150×128;再经过 2 × 2 2\times2 2×2最大池化,得到 ( 75 × 75 × 128 ) (75 \times 75\times128) 75×75×128
Conv3_3:三次 3 × 3 3 \times3 3×3卷积,得到 ( 75 × 75 × 256 ) (75 \times 75\times256) 75×75×256;再经过 2 × 2 2\times2 2×2最大池化,得到 ( 38 × 38 × 256 ) (38 \times 38\times256) 38×38×256
Conv4_3:三次 3 × 3 3 \times3 3×3卷积,得到 ( 38 × 38 × 512 ) (38 \times 38\times512) 38×38×512;再经过 2 × 2 2\times2 2×2最大池化,得到 ( 19 × 19 × 64 ) (19 \times 19\times64) 19×19×64
Conv5_3:三次 3 × 3 3 \times3 3×3卷积,得到 ( 19 × 19 × 512 ) (19 \times 19\times512) 19×19×512;再经过 3 × 3 3\times3 3×3最大池化,得到 ( 19 × 19 × 512 ) (19 \times 19\times512) 19×19×512
Conv6、Conv7:分别进行了一次 3 × 3 3\times3 3×3卷积和 1 × 1 1\times1 1×1卷积,得到 ( 19 × 19 × 1024 ) (19 \times 19\times1024) 19×19×1024
Conv8:经过一次 1 × 1 1\times1 1×1卷积,和 3 × 3 3\times3 3×3卷积,得到 10 × 10 × 512 10 \times 10 \times512 10×10×512
Conv9:经过一次 1 × 1 1\times1 1×1卷积,和 3 × 3 3\times3 3×3卷积,得到 5 × 5 × 256 5 \times 5\times256 5×5×256
Conv10:经过一次 1 × 1 1\times1 1×1卷积,和 3 × 3 3\times3 3×3卷积,得到 3 × 3 × 256 3 \times 3 \times256 3×3×256
Conv11:经过一次 1 × 1 1\times1 1×1卷积,和 3 × 3 3\times3 3×3卷积,得到 1 × 1 × 256 1 \times 1 \times256 1×1×256

Detection layer
在这里插入图片描述

通过上图可以得知,网络共获取六个有效特征层:即Conv4_3的特征、Conv7的特征、Conv8的特征、Conv8的特征,Conv9的特征,Conv10的特征。
对获取到的每一个有效特征层,我们都需要对其做两个操作,分别是:

  • num_anchors x 4的卷积 用于预测 该特征层上 每一个网格点上 每一个先验框的变化情况。
  • num_anchors x num_classes的卷积 用于预测 该特征层上 每一个网格点上 每一个预测对应的种类。

num_anchors指的是该特征层每一个特征点所拥有的先验框数量。
每一个有效特征层将整个图片分成与其长宽对应的网格,如conv4-3的特征层就是将整个图像分成38x38个网格;然后从每个网格中心建立多个先验框,对于conv4-3的特征层来说,它的每个特征点分别建立了4个先验框;因此,对于conv4-3整个特征层来讲,整个图片被分成38x38个网格,每个网格中心对应4个先验框,一共建立了38x38x4个,5776个先验框。这些框密密麻麻的遍布在整个图片上。网络的预测结果会对这些框进行调整获得预测框。在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2321. 拼接数组的最大分数;768. 最多能完成排序的块 II;2192. 有向无环图中一个节点的所有祖先

2321. 拼接数组的最大分数 核心思想:数学思维。假设nums1的和为a0a1a2a3...an-1 sum(nums1),nums2的和为b0b1b2b3...bn-1 sum(nums2),交换al...ar与bl..br,现在nums1的和要最大,则s sum(nums1) (br-ar)(br-1-ar-1)...(bl-al),所以你要使…

项目名称:驱动开发(控LED灯,控制蜂鸣器)

一,简述 (1)Linux系统组成 ()app: [0-3G] ---------------------------------系统调用(软中断)--------------------- kernel: 【3-4G】…

Python补充笔记3-bug问题

目录 一、Bug 粗心导致的语法错误​ ​编辑 知识不熟练导致的错误​ 思路不清晰导致的问题​ 被动掉坑​ 二、try…except…else结构​ 三、try…except…else…finally结构​ 四、常见异常类型​编辑traceback模块 pycharm调试 一、Bug 粗心导致的语法错误 知识不熟练导致的…

C++进阶:c++11

C11 相比于C98,C11则带来了数量可观的变化,以及对C03缺陷的修正。C11语法更加泛化简单化、更加稳定安全,功能更强大,提升开发效率。 cpp11 1. 列表初始化 C11扩大了用{}(初始化列表)的使用范围&#xff…

Spring Cloud+Uniapp+企业工程管理系统源码之提高工程项目管理软件的效率

高效的工程项目管理软件不仅能够提高效率还应可以帮你节省成本提升利润 在工程行业中,管理不畅以及不良的项目执行,往往会导致项目延期、成本上升、回款拖后,最终导致项目整体盈利下降。企企管理云业财一体化的项目管理系统,确保…

Mac端虚拟定位 AnyGo mac中文 6.2.1

AnyGo for Mac是一款一键将iPhone的Gps位置更改为任何位置的强大软件!使用AnyGo在其iOS或Android设备上改变其Gps位置,并在任何想要的地方显示自己的位置。这对那些需要测试应用程序、游戏或其他依赖于地理位置信息的应用程序的开发人员来说非常有用&…

C# List 详解六

目录 35.MemberwiseClone() 36.Remove(T) 37.RemoveAll(Predicate) 38.RemoveAt(Int32) 39.RemoveRange(Int32, Int32) 40.Reverse() 41.Reverse(Int32, Int32) C# List 详解一 1.Add(T),2.AddRange(IEnumerable),3…

【SpringCloud Alibaba】(一)微服务介绍

此专栏内容皆来自于【冰河】的《SpringCloud Alibaba 实战》文档。 1. 专栏介绍 我们先来看看《SpringCloud Alibaba实战》专栏的整体结构吧,先上图 从上图,大家可以看到,专栏从整体上分为十个大的篇章,分别为 专栏设计、微服务…

MGER-OSPF的LSA-OSPF的优化 综合实验报告

题目: 步骤一:拓扑设计,地址规划 地址规划: 有题意知:整个OSPF环境基于172.16.0.0/16划分。则据提意划分出子网掩码长度为20的,十六个网段,如下: 骨干链路:使用172.16.…

Appium+python自动化(十九)- Monkey(猴子)参数(超详解)

前边几篇介绍了Monkey以及Monkey的事件&#xff0c;今天就给小伙伴们介绍和分享一下Monkey的参数。 首先我们看一下这幅图来大致了解一下&#xff1a; 1、Monkey 命令 基本参数介绍 -p <允许的包名列表> 用此参数指定一个或多个包。指定包之后&#xff0c;mon…

18 常用控件--按钮组

QPushButton 可以显示图标QToolButton 工具按钮 可以显示图标 可以设置透明效果QRadioButton 单选按钮QCheckBox 多选按钮 多个单选按钮可以用GroupBox分组 按钮可以设置默认选中状态&#xff0c;多选按钮可以设置半选状态 代码&#xff1a; //widget.h #ifndef WIDGET_H #def…

Llama2开源大模型的新篇章以及在阿里云的实践

Llama一直被誉为AI社区中最强大的开源大模型。然而&#xff0c;由于开源协议的限制&#xff0c;它一直不能被免费用于商业用途。然而&#xff0c;这一切在7月19日发生了改变&#xff0c;当Meta终于发布了大家期待已久的免费商用版本Llama2。Llama2是一个由Meta AI开发的预训练大…

前端工程师的岗位职责(合集)

篇一 岗位职责&#xff1a; 1、负责网站前端开发&#xff0c;实现产品的页面交互及功能实现; 2、与程序开发人员紧密合作&#xff0c;制作前端及后端程序接口标准; 3、完成产品的设计、开发、测试、修改bug等工作&#xff0c;包括业务需求的沟通&#xff0c;功能模块详细设计…

防火墙入门指南:了解防火墙的基础知识

目录 防火墙&#xff08;四层设备&#xff09; 1.1防火墙是什么 1.2 防火墙是如何诞生的 1.2.1包过滤防火墙----访问控制列表技术---三层技术 1.2.2代理防火墙----中间人技术---应用层 1.2.3状态防火墙---会话追踪技术---三层、四层 1.2.4UTM---深度包检查技术----应用层…

element-ui动态编辑标签

点击叉叉&#xff0c;标签消失&#xff0c;点击New Tag&#xff0c;显示输入框&#xff0c;输入完成后生成标签&#xff0c;并且出现New Tag标签。 代码&#xff1a; <el-tag:key"tag"v-for"tag in dynamicTags"closable:disable-transitions"fa…

【Hive 01】简介、安装部署、高级函数使用

1 Hive简介 1.1 Hive系统架构 Hive是建立在 Hadoop上的数据仓库基础构架&#xff0c;它提供了一系列的工具&#xff0c;可以进行数据提取、转化、加载&#xff08; ETL &#xff09;Hive定义了简单的类SQL查询语言&#xff0c;称为HQL&#xff0c;它允许熟悉SQL的用户直接查询…

redux源码阅读总结(一)- createStore.js详细解析与思考

redux数据流分析 在阅读redux源码之前&#xff0c;先整理一下redux的数据流&#xff0c;官网的数据流程图如下所示。该图十分清晰明了的展示了redux的数据流&#xff1a; 点击UI&#xff0c;发起一个存钱的点击事件。在点击事件处理函数中&#xff0c;dispatch分发一个action…

AE 3D粒子插件trapcode particular 新版本

Trapcode Particular for Mac是目前AE系列的插件中最火爆最流行的一款三维粒子插件&#xff0c;是属于Red Giant Trapcode Suite&#xff08;红巨人粒子特效套装插件&#xff09;中的一款粒子插件。该软件提供了多达一百余种粒子效果供用户使用&#xff0c;可以产生各种各样的自…

【算法基础:搜索与图论】3.4 求最短路算法(Dijkstrabellman-fordspfaFloyd)

文章目录 求最短路算法总览Dijkstra朴素 Dijkstra 算法&#xff08;⭐原理讲解&#xff01;⭐重要&#xff01;&#xff09;&#xff08;用于稠密图&#xff09;例题&#xff1a;849. Dijkstra求最短路 I代码1——使用邻接表代码2——使用邻接矩阵 补充&#xff1a;稠密图和稀疏…

(Chrome Ext)谷歌扩展程序-谷歌插件渗透测试方法记录

文章目录 前言一、本地获取谷歌插件/扩展程序源码二、工具化信息收集总结 前言 在工作岗位变更之后&#xff0c;越来越多“奇奇怪怪”的东西要去渗透和测试&#xff0c;在我之前干安服的时候&#xff0c;最多的就是测一下web&#xff0c;极少情况下测测app&#xff0c;但是现在…