Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >YOLO V3网络结构解析

YOLO V3网络结构解析

原创
作者头像
算法发
修改于 2020-08-19 14:09:55
修改于 2020-08-19 14:09:55
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

论文翻译:https://zhuanlan.zhihu.com/p/34945787

网络结构解析:

网络结构
网络结构
  1. Yolov3中,只有卷积层,通过调节卷积步长控制输出特征图的尺寸。所以对于输入图片尺寸没有特别限制。流程图中,输入图片以256*256作为样例。
  2. Yolov3借鉴了金字塔特征图思想,小尺寸特征图用于检测大尺寸物体,而大尺寸特征图检测小尺寸物体。特征图的输出维度为

为输出特征图格点数,一共3个Anchor框,每个框有4维预测框数值

,1维预测框置信度,80维物体类别数。所以第一层特征图的输出维度为

  1. Yolov3总共输出3个特征图第一个特征图下采样32倍,第二个特征图下采样16倍,第三个下采样8倍。输入图像经过Darknet-53(无全连接层),再经过Yoloblock生成的特征图被当作两用,第一用为经过3*3卷积层、1*1卷积之后生成特征图一,第二用为经过1*1卷积层加上采样层,与Darnet-53网络的中间层输出结果进行拼接,产生特征图二。同样的循环之后产生特征图三。
  2. concat操作与加和操作的区别:加和操作来源于ResNet思想,将输入的特征图,与输出特征图对应维度进行相加,即

;而concat操作源于DenseNet网络的设计思路,将特征图按照通道维度直接进行拼接,例如8*8*16的特征图与8*8*16的特征图拼接后生成8*8*32的特征图。

  1. 上采样层(upsample):作用是将小尺寸特征图通过插值等方法,生成大尺寸图像。例如使用最近邻插值算法,将8*8的图像变换为16*16。上采样层不改变特征图的通道数。

Yolo的整个网络,吸取了Resnet、Densenet、FPN的精髓,可以说是融合了目标检测当前业界最有效的全部技巧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! /usr/bin/env python
# coding=utf-8
#================================================================
#   Copyright (C) 2019 * Ltd. All rights reserved.
#
#   Editor      : VIM
#   File name   : backbone.py
#   Author      : YunYang1994
#   Created date: 2019-02-17 11:03:35
#   Description :
#
#================================================================

import core.common as common
import tensorflow as tf


def darknet53(input_data, trainable):

    with tf.variable_scope('darknet'):

        input_data = common.convolutional(input_data, filters_shape=(3, 3,  3,  32), trainable=trainable, name='conv0')
        input_data = common.convolutional(input_data, filters_shape=(3, 3, 32,  64),
                                          trainable=trainable, name='conv1', downsample=True)

        for i in range(1):
            input_data = common.residual_block(input_data,  64,  32, 64, trainable=trainable, name='residual%d' %(i+0))

        input_data = common.convolutional(input_data, filters_shape=(3, 3,  64, 128),
                                          trainable=trainable, name='conv4', downsample=True)

        for i in range(2):
            input_data = common.residual_block(input_data, 128,  64, 128, trainable=trainable, name='residual%d' %(i+1))

        input_data = common.convolutional(input_data, filters_shape=(3, 3, 128, 256),
                                          trainable=trainable, name='conv9', downsample=True)

        for i in range(8):
            input_data = common.residual_block(input_data, 256, 128, 256, trainable=trainable, name='residual%d' %(i+3))

        route_1 = input_data
        input_data = common.convolutional(input_data, filters_shape=(3, 3, 256, 512),
                                          trainable=trainable, name='conv26', downsample=True)

        for i in range(8):
            input_data = common.residual_block(input_data, 512, 256, 512, trainable=trainable, name='residual%d' %(i+11))

        route_2 = input_data
        input_data = common.convolutional(input_data, filters_shape=(3, 3, 512, 1024),
                                          trainable=trainable, name='conv43', downsample=True)

        for i in range(4):
            input_data = common.residual_block(input_data, 1024, 512, 1024, trainable=trainable, name='residual%d' %(i+19))

        return route_1, route_2, input_data




原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
目标检测之YOLO v3-You Only Look Once(三)
进一步加大对小框的损失,值的范围是,边界框的尺寸越小,bbox_loss_scale 的值就越大。box_loss_scale可以弱化边界框尺寸对损失值的影响;
CristianoC
2020/06/02
7440
简述Yolo系列网络的发展史
YOLOv1是单阶段目标检测方法,不需要像Faster RCNN这种两阶段目标检测方法一样,需要生成先验框。Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测。
AIWalker
2021/07/05
1.6K0
简述Yolo系列网络的发展史
精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比
……最近在学习yolo1、yolo2和yolo3,事实上它们和SSD网络有一定的相似性,我准备汇总一下,看看有什么差别。
全栈程序员站长
2022/07/02
1K0
精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比
从0到1 实现YOLO v3 (Part one)
如果说非要提供一个方法快速掌握目标检测的深度学习算法的话,那就是自己从无到有的实现它,在这期间,可以对整个算法有更清晰的认识,此次系列文章旨在提供一个自己从无到有实现目标检测YOLOV3的教程,希望对那些对目标检测感兴趣的人有所帮助。
机器学习算法工程师
2018/07/27
2.2K0
从0到1 实现YOLO v3 (Part one)
深度学习应用篇-计算机视觉-图像分类2:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
LeNet是最早的卷积神经网络之一<sup>1</sup>,其被提出用于识别手写数字和机器印刷字符。1998年,Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上,在手写数字识别任务中取得了巨大成功。算法中阐述了图像中像素特征之间的相关性能够由参数共享的卷积操作所提取,同时使用卷积、下采样(池化)和非线性映射这样的组合结构,是当前流行的大多数深度图像识别网络的基础。
汀丶人工智能
2023/06/07
1.3K1
深度学习应用篇-计算机视觉-图像分类2:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
从零开始PyTorch项目:YOLO v3目标检测实现
选自Medium 作者:Ayoosh Kathuria 机器之心编译 目标检测是深度学习近期发展过程中受益最多的领域。随着技术的进步,人们已经开发出了很多用于目标检测的算法,包括 YOLO、SSD、Mask RCNN 和 RetinaNet。在本教程中,我们将使用 PyTorch 实现基于 YOLO v3 的目标检测器,后者是一种快速的目标检测算法。该教程一共有五个部分,本文包含其中的前三部分。 在过去几个月中,我一直在实验室中研究提升目标检测的方法。在这之中我获得的最大启发就是意识到:学习目标检测的最佳方
机器之心
2018/05/08
3.2K0
从零开始PyTorch项目:YOLO v3目标检测实现
Github 项目 - YOLOV3 的 TensorFlow 复现
原文:Github 项目 - YOLOV3 的 TensorFlow 复现 - AIUAI
AIHGF
2019/02/27
4.4K0
【抬抬小手学Python】yolov3代码和模型结构图详细注解【图文】
我对他的框图加了注释,便于理解,红色圈为yolo_block,深红色注解为前一模块的输出,请对照代码
查理不是猹
2022/01/07
3740
YOLO系列介绍
YOLO(You Only Look Once: Unified, Real-Time Object Detection)是Joseph Redmon和Ali Farhadi等于2015年首次提出,在2017年CVPR上,Joseph Redmon和Ali Farhadi又提出的YOLOV2,后又再次提出YOLOV3,它是一个标准的One-stage目标检测算法。
算法之名
2022/03/24
1.9K0
YOLO系列介绍
【项目实践】YOLO V4万字原理详细讲解并训练自己的数据集(pytorch完整项目打包下载)
YOLOV4是YOLOV3的改进版,在YOLOV3的基础上结合了非常多的小Tricks。尽管没有目标检测上革命性的改变,但是YOLOV4依然很好的结合了速度与精度。
OpenCV学堂
2020/06/22
8.8K0
【项目实践】YOLO V4万字原理详细讲解并训练自己的数据集(pytorch完整项目打包下载)
睿智的目标检测26——Pytorch搭建yolo3目标检测平台[通俗易懂]
https://github.com/bubbliiiing/yolo3-pytorch 喜欢的可以点个star噢。
全栈程序员站长
2022/10/02
1.4K0
睿智的目标检测26——Pytorch搭建yolo3目标检测平台[通俗易懂]
零基础入门深度学习(十):目标检测之YOLOv3算法实现上篇
本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越。从本课程中,你将学习到:
用户1386409
2020/02/19
1.4K0
【从零开始学习YOLOv3】1. YOLOv3的cfg文件解析与总结
它是由重复的类似于ResNet的模块组成的,其下采样是通过卷积来完成的。通过对cfg文件的观察,提出了以下总结:
BBuf
2020/02/13
1.4K0
【从零开始学习YOLOv3】1. YOLOv3的cfg文件解析与总结
手把手教你使用PyTorch从零实现YOLOv3--构建网络代码讲解(2)
这是从l零开始实现YOLOv3目标检测教程的第2部分。在上一部分中,解释了YOLO的工作原理,在这一部分中,我们将在PyTorch中实现YOLO所使用的层。换句话说,这是我们创建模型构建模块的部分。
AI算法与图像处理
2019/11/15
2.9K0
零基础入门深度学习(十一):目标检测之YOLOv3算法实现下篇
本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越。从本系列课程中,你将学习到:
用户1386409
2020/02/19
1.2K0
从0 到1 实现YOLO v3(part two)
本部分是 从0到1 实现YOLO v3 的第二部分 的第二部分,前两部分主要介绍了YOLO的工作原理,包含的模块的介绍以及如何用pytorch搭建完整的YOLOv3网络结构。本部分主要介绍如何完成YOLO的前馈部分。 本文假设读者已经完成了第一部分的阅读,以及对pytorch有一定的了解。
机器学习算法工程师
2018/07/27
1.6K0
从0 到1 实现YOLO v3(part two)
【长文详解】卷积神经网络常见架构AlexNet、ZFNet、VGGNet、GoogleNet和ResNet模型的理论与实践
目前的常见的卷积网络结构有AlexNet、ZF Net、VGGNet、Inception、ResNet等等,接下来我们对这些架构一一详解。
zenRRan
2018/10/09
2.1K0
【长文详解】卷积神经网络常见架构AlexNet、ZFNet、VGGNet、GoogleNet和ResNet模型的理论与实践
从0到1实现YOLO v3(part two)
本部分是 从0到1 实现YOLO v3 的第二部分,前两部分主要介绍了YOLO的工作原理,包含的模块的介绍以及如何用pytorch搭建完整的YOLOv3网络结构。本部分主要介绍如何完成YOLO的前馈部分。 本文假设读者已经完成了上部分的阅读,以及对pytorch有一定的了解。
DoubleV
2018/09/12
7640
从0到1实现YOLO v3(part two)
长文详解YOLOv7的网络结构
作者:Kissrabbit (知乎同名) 方向:目标检测与人体动作行为分析 哈尔滨工业大学在读博士 最近,Scaled-YOLOv4的作者(也是后来的YOLOR的作者)和YOLOv4的作者AB大佬再次联手推出了YOLOv7,目前来看,这一版的YOLOv7是一个比较正统的YOLO续作,毕竟有AB大佬在,得到了过YOLO原作的认可。 网上已经有了很多文章去从各个方面来测试YOLOv7,但关于YOLOv7到底长什么样,似乎还没有多少人做出介绍。由于YOLOv7再一次平衡好了参数量、计算量和性能之间的矛盾,所以,笔
zenRRan
2022/09/14
8.4K2
长文详解YOLOv7的网络结构
YOLO系列介绍(二)
通过上图,我们可以看到V4比V3无论在准确率上还是检测速度上都有了一个很大的提升,在准确率上提升了10%,在速度上提升了12%。
算法之名
2022/05/06
1.3K0
YOLO系列介绍(二)
推荐阅读
相关推荐
目标检测之YOLO v3-You Only Look Once(三)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验