【目标检测】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) 。

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

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

相关文章

springboot280基于WEB的旅游推荐系统设计与实现

旅游推荐系统设计与实现 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装旅游推荐系统软件来发挥其高效地信息处理…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享,严禁他用!!如有侵权,请联系删除 目录 一、知识引入 (一)隐藏层 (二)泛化 (三…

深入理解浏览器的页面渲染机制

在当今的网络技术日益发展的背景下,网页变得越来越复杂和动态。作为开发者,理解浏览器如何渲染页面对于优化性能、提升用户体验至关重要。本文将深入探讨浏览器的页面渲染过程,包括重排(Reflow)和重绘(Repa…

【Spring Cloud】SpringCloud接入SOFARegistry

背景 由于项目开发使用的是SpringCloud,但是甲方使用的是阿里云提供的私有云注册中心,需要替换注册中心。 方案 官方文档:Spring Cloud 使用 SOFARegistry 改造的步骤: 1.去掉原项目中注册中心的pom依赖引入,我们使…

java算法题每日多道

274. H 指数 题目 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Ellipse)

椭圆绘制组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Ellipse(options?: {width?: string | number, height?: string | number}) 从API version 9开始&#xff0…

数据结构知识Day1

数据结构是什么? 数据结构是计算机存储、组织数据的方式,它涉及相互之间存在一种或多种特定关系的数据元素的集合。数据结构反映了数据的内部构成,即数据由哪些成分数据构成,以何种方式构成,以及呈现何种结构。这种结…

谷歌发布Bard AI以与ChatGPT/GPT-4竞争

Google发布Bard AI,与ChatGPT/GPT-4竞争 概述 谷歌近日推出了一款名为Bard的创新型AI聊天机器人,旨在与OpenAI的ChatGPT和微软的Bing Chat竞争。与同类产品不同,Bard能够直接从其模型中生成信息,而不是检索搜索结果。Bard被视为…

LeetCode讲解算法1-排序算法(Python版)

文章目录 一、引言问题提出 二、排序算法1.选择排序(Selection Sort)2.冒泡排序3.插入排序(Insertion Sort)4.希尔排序(Shell Sort)5.归并排序(Merge Sort)6.快速排序(Qu…

【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

在现代web开发中,Node.js因其高效和灵活性而备受青睐。其中,中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中,我们将深入探讨Node.js中间件的高级应用,包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起&a…

AJAX-原理XMLHttpRequest

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

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件 今天撸一本书,其中书中提供一个zip压缩文件的资料。下载之后,没有解压软件,(也可能该文件可以自解压)。这段时间已经深刻体会到AI编程带来…

爬虫 Day2

resp.close()#关掉resp 一requests入门 (一) 用到的网页:豆瓣电影分类排行榜 - 喜剧片 import requestsurl "https://movie.douban.com/j/chart/top_list" #参数太长,重新封装参数 param {"type": "…

【Unity每日一记】unity中的内置宏和条件编译(Unity内置脚本符号)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

EDI在汽车主机厂配送流程中的应用

汽车主机厂的汽车配送流程始于汽车 “生产结束 ” ,止于 “交付给经销商 ” 。在这个流程中,企业作为主机厂的下游供应商,与主机厂的物流服务供应商之间的信息交换将会变得十分重要。 配送流程:运输订单以及报告 汽车主机厂提供预…

【linux驱动】定时器的使用

【linux驱动】定时器的使用 文章目录 【linux驱动】定时器的使用1.介绍1.1相关名词1.2配置HZ的方法 2.API3.示例4.调试 1.介绍 1.1相关名词 HZ、jiffies、tick Linux系统启动后,每隔固定周期就会发出timer interrupt(IRQ 0),HZ用来定义每一秒发生多少…

Day50| 123 买卖股票的最佳时机III 188 买卖股票的最佳时机IV

目录 123 买卖股票的最佳时机III 188 买卖股票的最佳时机IV 123 买卖股票的最佳时机III class Solution { public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size() 1, vector<int>(5, 0));dp[0][0] 0;dp[0][…

模块化开发在不同编程语言中的实现方式有何异同?并以LabVIEW为例进行说明

模块化开发是一种软件设计方法&#xff0c;它将一个大型程序分解成独立的、可以单独开发和测试的模块或组件。这种方法提高了代码的可重用性、可维护性和可测试性。不同编程语言实现模块化开发的方式各有特色&#xff0c;但都遵循基本的设计原则&#xff0c;如封装、接口抽象和…

【机器学习】经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍

文章目录 三者的比较&#xff1a;RCNN、Fast RCNN、 Faster RCNN一、框架的对比1.三者都是二阶算法&#xff0c;网络框架比较&#xff1a;2.三者的优缺点比较&#xff1a; RCNN一、RCNN系列简介二、RCNN算法流程的4个步骤三、RCNN存在的问题四、论文解析补充1.R-CNN提出了两个问…

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中&#xff0c;其突出功能之一是能够构建个性化视图&#xff0c;允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程&#xff0c;你将获得关于开发Odo…