【目标检测】YOLOv2 网络结构(darknet-19 作为 backbone)

上一篇文章主要是写了一些 YOLOv1 的原版网络结构,这篇文章一样,目标是还原论文中原版的 YOLOv2 的网络结构,而不是后续各种魔改的版本。

YOLOv2 和 YOLOv1 不一样,开始使用 Darknet-19 来作为 backbone 了。论文中给出了 Darknet-19 的网络结构细节图。但是表格中的输入甚至不是 448x448x3 的,而是 224x224x3 的,但是论文中特别提到:

We also shrink the network to operate on 416 input images instead of 448×448. We do this because we want an odd number of locations in our feature map so there is a single center cell.

就是说为了让网格为奇数,中心点只存在一个中心网格,就将输入的尺寸设定为了 416x416x3。

在这里插入图片描述
按照 416x416x3 的网络输入的话,backbone Darknet-19 的网络结构参数示意图如下面表格所示。

layeroutput sizemodule
input416x416x3
1416x416x32Conv 3x3x32, s-1, p-1backbone: Darknet-19
208x208x32Maxpool 2x2, s-2, p-0backbone: Darknet-19
2208x208x64Conv 3x3x64, s-1, p-1backbone: Darknet-19
104x104x64Maxpool 2x2, s-2, p-0backbone: Darknet-19
3104x104x128Conv 3x3x128, s-1, p-1backbone: Darknet-19
4104x104x64Conv 1x1x64, s-1, p-0backbone: Darknet-19
5104x104x128Conv 3x3x128, s-1, p-1backbone: Darknet-19
52x52x128Maxpool 2x2, s-2, p-0backbone: Darknet-19
652x52x256Conv 3x3x256, s-1, p-1backbone: Darknet-19
752x52x128Conv 1x1x128, s-1, p-0backbone: Darknet-19
852x52x256Conv 3x3x256, s-1, p-1backbone: Darknet-19
26x26x256Maxpool 2x2, s-2, p-0backbone: Darknet-19
926x26x512Conv 3x3x512, s-1, p-1backbone: Darknet-19
1026x26x256Conv 1x1x256, s-1, p-0backbone: Darknet-19
1126x26x512Conv 3x3x512, s-1, p-1backbone: Darknet-19
1226x26x256Conv 1x1x256, s-1, p-0backbone: Darknet-19
1326x26x512Conv 3x3x512, s-1, p-1backbone: Darknet-19
13x13x512Maxpool 2x2, s-2, p-0backbone: Darknet-19
1413x13x1024Conv 3x3x1024, s-1, p-1backbone: Darknet-19
1513x13x512Conv 1x1x512, s-1, p-0backbone: Darknet-19
1613x13x1024Conv 3x3x1024, s-1, p-1backbone: Darknet-19
1713x13x512Conv 1x1x512, s-1, p-0backbone: Darknet-19
1813x13x1024Conv 3x3x1024, s-1, p-1backbone: Darknet-19
1913x13x1000Conv 1x1x1000, s-1, p-0backbone: Darknet-19
1000Avgpool
1softmax

因为要作为 YOLOv2 的 backbone,所以要将后面的一个 1x1 的卷积层(相当于 FC 层)和后续的 softmax 去掉。所以实际上 Darknet-19 作为 backbone 在 YOLOv2 里只有 18 个卷积层。

在这里插入图片描述

可以看到上面 YOLOv2 的 backbone 部分只有 Darknet-19 的 前 18 个卷积层。

  • Pass Through 层,感觉和 YOLOv5 中出现的 Focus 模块是一样的:
    在这里插入图片描述
    是对特征的重新排列,一种特殊的 reshape。
  • 最后的 1x1 卷积层,是根据类别 class 的数量来决定的,例如,你如果有目标检测的类别有 20 类,那么,因为每个网格 grid 一般会预测 5 个 boundary box,每个 boundary box 会预测 4 个坐标值(x, y, w, h) + 1 个置信率 conf + 20 个类别。计算出来就是一个网格 grid 会预测 125 个参数。

YOLO2的训练主要包括三个阶段。

  • 第一阶段就是先在ImageNet分类数据集上预训练Darknet-19,此时模型输入为 224x224 ,共训练160个epochs。
  • 第二阶段将网络的输入调整为 448x448,继续在ImageNet数据集上finetune分类模型,训练10个epochs,此时分类模型的top-1准确度为76.5%,而top-5准确度为93.3%。
  • 第三个阶段就是修改Darknet-19分类模型为检测模型,移除最后一个卷积层、global avgpooling层以及softmax层,并且新增了三个 3x3x1024卷积层,同时增加了一个passthrough层,最后使用 1x1 卷积层输出预测结果,输出的channels数为:num_anchors(5+num_classes) 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FolderStack)

FolderStack继承于Stack(层叠布局)控件,新增了折叠屏悬停能力,通过识别upperItems自动避让折叠屏折痕区后移到上半屏 说明: 该组件从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件…

数据在内存的存储

整数在内存中的存储 我们来回顾一下,整数在计算机是以补码的形式进行存储的,整数分为正整数和负整数,正整数的原码、反码和补码是一样的,负整数的原码、反码和补码略有不同(反码是原码除符号位,其他位按位取…

【九】【算法分析与设计】双指针(3)

15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…

SpringBoot(数据库操作 + druid监控功能)

文章目录 1.JDBC HikariDataSource(SpringBoot2默认数据源)1.数据库表设计2.引入依赖 pom.xml3.配置数据源参数 application.yml4.编写一个bean,映射表5.编写测试类来完成测试1.引入依赖 pom.xml2.使用JdbcTemplate进行测试3.成功&#xff0…

STM32信息安全 1.2 课程架构介绍:芯片生命周期管理与安全调试

STM32信息安全 1.2 课程架构介绍:STM32H5 芯片生命周期管理与安全调试 下面开始学习课程的第二节,简单介绍下STM32H5芯片的生命周期和安全调试,具体课程大家可以观看STM32官方录制的课程,链接:1.2. 课程架构介绍&…

01背包问题详解

01背包问题是动态规划问题的子背包问题&#xff0c;算是蓝桥杯以及CSP较为常考的一种题型。 这种问题是有一个板子的&#xff0c;非常简单 #include <bits/stdc.h> using namespace std;int k[200],v[200],dp[130][130]; int main() {int t,m;cin>>t>>m;fo…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— Toggle切换按钮组件

概述 Toggle为切换按钮组件&#xff0c;一般用于两种状态之间的切换&#xff0c;例如下图中的蓝牙开关。 参数 Toggle组件的参数定义如下 Toggle(options: { type: ToggleType, isOn?: boolean })● type type属性用于设置Toggle组件的类型&#xff0c;可通过ToggleType枚举…

【MIT 6.S081】2020, 实验记录(9),Lab: file system

目录 Task 1&#xff1a;Large filesTask 2&#xff1a;Symbolic links2.1 增加一个系统调用 symlink2.2 新增文件类型2.3 新增 NOFOLLOW 标志位2.4 实现 sys_symlink 系统调用2.5 修改 sys_open 函数2.6 测试 Task 1&#xff1a;Large files 现在的 xv6 系统中&#xff0c;一…

基础:TCP三次握手做了什么,为什么要握手?

1. TCP 三次握手在做些什么 1. 第一次握手 &#xff1a; 1&#xff09;握手作用&#xff1a;客户端发出建立连接请求。 2&#xff09;数据处理&#xff1a;客户端发送连接请求报文段&#xff0c;将SYN位置为1&#xff0c;Sequence Number为x;然后&#xff0c;客户端进入SYN_S…

Swagger Array 使用指南:详解与实践

Swagger 允许开发者定义 API 的路径、请求参数、响应和其他相关信息&#xff0c;以便生成可读性较高的文档和自动生成客户端代码。而 Array &#xff08;数组&#xff09;是一种常见的数据结构&#xff0c;用于存储和组织多个相同类型的数据元素。数组可以有不同的维度和大小&a…

几个精品声音模型

AI技术提取某位歌手的音色&#xff0c;再用其替换另一位歌手音色的方式&#xff0c;可以实现接近歌手本人翻唱的逼真效果。无需学习其他伪音技巧&#xff0c;即可实现实时男女声音互换等等。 使用 RVC 及模型工具&#xff0c;可以实现以下几个功能&#xff1a; 音乐干声分离&…

【兔子机器人】实现从初始状态到站立

一、遥想星空up主的方法 由于我有卡位结构&#xff0c;无法做到劈腿&#xff0c;而且底盘也不一样&#xff0c;无法使用此方法 但是其代码思想是可以借鉴的。 参考视频&#xff1a; 【【开源啦&#xff01;】无刷轮腿平衡机器人】 【精准空降到 01:16】 https://www.bilibili…

uniapp 对video视频组件嵌套倍速按钮

这次接了需求是要求有倍速功能&#xff0c;去看了文档发现并没有倍速按钮的属性&#xff0c;想着手写一个吧 可最后发现原生层级太高&#xff0c;无论怎么样都迭不上去&#xff0c;就只能去找插件看看咯 找了好多插件发现都不可用&#xff0c;因为我这是app端&#xff0c;有些视…

旅游管理系统|基于SpringBoot+ Mysql+Java+Tomcat技术的旅游管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 用户功能 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 …

深度学习——数据预处理

一、数据预处理 为了能用深度学习来解决现实世界的问题&#xff0c;我们经常从预处理原始数据开始&#xff0c; 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中&#xff0c;我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样…

【JVM篇】类的生命周期

文章目录 &#x1f354;类的生命周期概述⭐加载⭐连接⭐初始化⭐类的卸载 &#x1f354;类的生命周期概述 Java类的生命周期包括加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;R…

TrueNAS怎么设置中文,最新2024版本安装详细说明

首先我们做好安装前的准备工作 1&#xff0c;ISO镜像安装包 2&#xff0c;虚拟机&#xff08;建议使用ESXI虚拟机环境&#xff09; 如果是物理机安装&#xff0c;建议先给底层安装虚拟机系统esxi&#xff0c;再在上面安装方便以后的管理&#xff0c;如果你想物理机直接安装&a…

【Redis】缓存穿透

问题发生背景&#xff1a;客户端请求的数据再缓存中和数据库中都不存在。 导致的问题&#xff1a;缓存永远不会生效&#xff0c;这些请求都会去请求数据库—导致数据库压力增大。 解决方案&#xff1a; 1.缓存空对象 在Redis中缓存空对象&#xff0c;告诉客户端数据库中没有该值…

zookeeper快速入门五:用zookeeper实现服务注册与发现中心

系列&#xff1a; zookeeper快速入门一&#xff1a;zookeeper安装与启动-CSDN博客 zookeeper快速入门二&#xff1a;zookeeper基本概念-CSDN博客 zookeeper快速入门三&#xff1a;zookeeper的基本操作 zookeeper快速入门四&#xff1a;在java客户端中操作zookeeper-CSDN博客…

【Python】线程—GIL—asyncio

文章目录 一、Python 线程二、threading 模块三、例程3.1 基本用法3.2 同步3.21 Lock&#xff08;锁&#xff09;3.22 RLock&#xff08;递归锁&#xff09;3.23 Condition&#xff08;条件变量&#xff09;3.24 Semaphore&#xff08;信号量&#xff09; 四、GIL4.1 简述4.2 详…