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

news2025/6/10 3:29:42

上一篇文章主要是写了一些 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) 。

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

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

相关文章

RK3568平台 多点触摸电容屏

一.input事件 对于所有的input设备,报告input事件时候都分这么几部分,首先在probe函数中设置设备发送的事件类型、按键类型,设置设备一些属性信息。然后在发送事件时候要根据probe的设置来发送事件,否则就会被判为无效忽略掉。  …

冒泡与二分法的爱恨纠葛

冒泡排序与二分法查找 前言一、冒泡排序?二分法查找?二、冒泡排序的原理及使用1.原理2.手写冒泡排序思路及实现代码讲解效果演示/运行结果 三、二分法查找的原理及使用1.原理2.二分法查找思路及实现运行结果 总结 前言 冒泡排序,编程中&…

怎么做好独立站的SEO优化

随着全球贸易的蓬勃发展,越来越多的企业开始关注外贸市场,并将目光投向了外贸网站。然而,在竞争激烈的外贸市场中,如何写出吸引人的文章,以及如何优化网站以在搜索引擎中脱颖而出,成为了外贸独立网站必须面…

基于spring boot的汽车4s店管理系统

摘 要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,汽车4s店管理系统当然不能排除在外。汽车4s店管理系统是在实际应用和软件工程的开发原理之上,运用java语言以及SpringBoot框架…

【Windows 常用工具系列 15 -- VMWARE ubuntu 安装教程】

文章目录 安装教程镜像下载 工具安装 安装教程 安装教程参考链接:https://blog.csdn.net/Python_0011/article/details/131619864 https://linux.cn/article-15472-1.html 激活码 VMware 激活码连接:https://www.haozhuangji.com/xtjc/180037874.html…

研究人员发现 OpenAI ChatGPT、Google Gemini 的漏洞

自 OpenAI 推出 ChatGPT 以来,生成式 AI 聊天机器人的数量及其在企业中的采用率在一年多时间里呈爆炸式增长,但网络安全专业人士的担忧也随之增加,他们不仅担心威胁组织对新兴技术的使用,还担心大型网络的安全性及模型&#xff08…

开设新量子计算中心!IonQ 全力加速量子商业化

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨浪味仙 沛贤 深度好文:1000字丨8分钟阅读 近日,量子计算公司IonQ对外宣布,将在华盛顿开设一家新量子中心。公告里还提出&#xff0c…

【随笔】汇编(寄存器、内存模型、常用指令、语法)

文章目录 一、简介二、寄存器三、内存模型3.1 Heap3.2 Stack 四、指令4.1 示例4.2 语法4.3常用指令 一、简介 汇编语言(英语:assembly language)是任何一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不…

HUAWEI Pocket 2外屏实时查看App动态,小小窗口大便捷

当我们点外卖、等候飞机时,不少人习惯频繁点亮手机查看外卖配送进度、值机时间。 这时候,手机亮屏、解锁、打开对应App查看状态对于我们来说就显得非常繁琐。而华为Pocket 2结合HarmonyOS 4系统的实况窗功能,与常显外屏的搭配使用&#xff0…

PTA黑暗料理

小明最近正开发一个料理手游。游戏中仓库里有一些原材料,每个原材料都不相同。在游戏后台,每个原材料由两个不同整数构成。当烹饪锅有至少N(N≥2)个原材料且其中有N个原材料正好包含N个不同的整数(即这N个整数每个出现…

【Java 数据结构】Map和Set的介绍

目录 1、Map 和 Set 的概念 2、模型 3、Map 的学习 3.1 关于 Map.Entry 3.2 Map 的常用方法 4、Set 的常用方法 5、 Map 和 Set 的注意点 1、Map 和 Set 的概念 Java 提供了 Map 和 Set 的接口,是一种专门用来进行搜索的容器或数据结构,而他搜索…

【Maven篇】解锁 Maven 的智慧:依赖冲突纷争下的版本调停者

缘起 软件开发世界是一个充满无限可能的领域,但同时也伴随着诸多挑战。其中之一,就是依赖冲突的问题。在这篇文章中,我们将揭开 Maven 这位“版本调停者”的神秘面纱,深入探讨如何在版本纠纷的盛宴中解决依赖问题。 Maven&#…

Ansible的介绍、安装与部署

Ansible的介绍、安装与部署 文章目录 Ansible的介绍、安装与部署1. 介绍 Ansible1.1 什么是 Ansible?1.2 Ansible 无需代理1.3 Ansible 方式 2. 安装需求2.1 控制节点2.2 受管主机2.3 基于Windows的受管主机2.4 受管网络设备 3. 管理Ansible配置文件3.1 配置Ansible3.2 配置文…

JAVA后端调用OpenAI接口 实现打字机效果(SSE)

SSE SSE(Server-Sent Events,服务器发送事件)是一种基于HTTP协议的通信技术,它允许服务器持续地将数据推送给客户端,而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景,如实时更新、通知、或…

AJAX-原理XMLHttpRequest

定义 使用 查询参数 定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据 语法:http://xxxx.com/xxx/xxx?参数名1值1&参数名2值2

敏捷开发——elementUI/Vue使用/服务器部署

1. 创建vue项目 2. 安装element-ui组件库 npm i -S element-ui或 npm install element-ui3. 在main.js中导入element-ui组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI)4. 运行 npm run serve后可以使用 ctrc终止进…

C/C++动态链接库的封装和调用

1 引言 静态链接库是在编译时被链接到程序中的库文件,在编译时,链接器将静态链接库的代码和数据复制到最终的可执行文件中。动态链接库是在程序运行时加载的库文件,在编译时,可执行文件只包含对动态链接库的引用,而不…

软件杯 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

leetcode 3081

leetcode 3081 题目 例子 思路 使用minheap 记录字符出现频次 代码 class Solution { public:string minimizeStringValue(string s) {int freq[26]{};for(char c: s){if(c ! ?){freq[c-a];}}//std::greater<> 比较器比较 pair 对象时&#xff0c;默认比较规则是先比…

leetcode刷题(javaScript)——动态规划相关场景题总结

动态规划在 JavaScript 刷题中有一定的难度&#xff0c;但也是非常常见和重要的算法思想。动态规划通常适用于需要求解最优解、最大值、最小值等问题的场景&#xff0c;可以将复杂问题拆分成子问题&#xff0c;通过存储子问题的解来避免重复计算&#xff0c;从而提高效率。 理解…