https://www.luoyoyo.com/articles/b5ac2fae5c8a3f41cddd4d6e79dde8e8

经过大约一个月对YOLO3理论和源码的阅读,今天开始逐渐记录自己对这一大神作的理解。

本文在基于对CNN、keras、tensorflow有一定掌控力的基础上进行描述。

首先,贴出python版star最多的源码地址:https://github.com/qqwweee/keras-yolo3,各位看官可移步阅读。过一段时间我会把自己对每一步源码的注释都附上。

目前可进行工业部署的两大物体检测基础框架,一个是诸如FRCNN、Mask RCNN的RCNN系列,准确度高;另外就是YOLO系列,检测速度快。

首先,我们看下他的tensorboard打印出来的图结构.

这个图是从keras的.h5文件转出来用tensorflow进行查看的网络图,我没记错应该是252层,包括3层输出层,其中darknet是185层。注意:这些层包括Input层!

这个图比较长且原始,我自己弄了一个概览图,如下:

1、整个yolo3的框架分成两大部分,第一部分就是yolo团队经过长期摸索得到的darknet,第二部分是在darknet基础上进行的三次采样输出。

(1)先看第一部分,yolo团队对网络结构进行了封装,主要封装成B1和B2(我们先暂时这么命名)。其中B1由一个卷积层+一个BN层+一个LeakyRelu层组合,这就构成了yolo网络结构的最小单元;B2是由一个填充层+一个B1+一个Compose组合块组成。Conpose是yolo团队自己写的一个函数,用来堆叠网络层用的,由N个B1块组成的残差网络组成,N表示残差块的个数。这就是darknet的全部结构

(2)第二部分是网络的采样输出部分,主要对特征进行上采样和连接,并输出,所以我暂时把它命名为output模块,该部分的输入就是darknet的输出。make_last_layers是每次采样的输出部分,其中y(输出)部分经过一个Compose_y,得到一个输出;x(计算)部分经过一个Compose_x后,继续经过compose2,再经过一个Concatenate层,进入下一次的output部分。其中Compose_y由一个B1+一个卷积层组成,Compose_x由N个B1组成,compose2块由一个B1+一个上采样层组成。这就是yolov3的三层输出结构。Compose_y后面的接着的Con2D就是每一次采样后的输出。对应https://github.com/ldhsight/tmp/blob/master/yolov3.png该图片下的conv2d_59、conv3d_67和conv2d_75,舍弃了全连接层,而使用卷积层.

(3)所以其实darknet部分跟output部分实际上是一个串联的状态,且output部分进行了三次循环,输出三个值。图只是为了方便了解其网络结构这么画的。具体的结构图,还是请移步tensorflow画出来的网络图。

2、图像的输出是416 x 416的大小

YOLOv3庖丁解牛(一):网络结构相关推荐

  1. YOLOv3庖丁解牛(三):YOLOv3损失函数

    1.首先我们看一下他的输入参数 model_loss = Lambda(yolo_loss, output_shape=(1,), name='yolo_loss',arguments={'ancho ...

  2. 计算机视觉:单阶段目标检测模型YOLO-V3

    计算机视觉:单阶段目标检测模型YOLO-V3 单阶段目标检测模型YOLO-V3 YOLO-V3 模型设计思想 产生候选区域 生成锚框 生成预测框 对候选区域进行标注 标注锚框是否包含物体 标注预测框的 ...

  3. 智慧交通day02-车流量检测实现11:yoloV3模型

    yoloV3以V1,V2为基础进行的改进,主要有:利用多尺度特征进行目标检测:先验框更丰富:调整了网络结构:对象分类使用logistic代替了softmax,更适用于多标签分类任务. 1.算法简介 Y ...

  4. 基于yolov3和pythorch框架的火焰识别检测算法

    这是本人第一次写博客,就当是自己实现算法的一个记录吧,有什么不好的地方也请多多指教.我会详细的从环境的配置到算法实现都说明一下,希望对大家能有帮助. 本火焰识别算法采用的是pytorch版本的yolo ...

  5. yolov3前向传播(二)-- yolov3相关模块的解析与实现(一)

    yolov3检测块的解析与实现 在yolo v3模型中,检测部分的模型是由yolo检测块.yolo检测层以及上采样函数组成. yolo检测块负责进一步提取特征: 检测层负责将最终特征转化为bbox a ...

  6. YOLOv3学习——锚框和候选区域

    YOLOv3学习之锚框和候选区域 单阶段目标检测模型YOLOv3 R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法.近几年,很多研究人员相继提 ...

  7. 深度学习之目标检测(九)--YOLOv3 SPP理论介绍

    深度学习之目标检测(九)-- YOLOv3 SPP理论介绍 深度学习之目标检测(九)YOLOv3 SPP理论介绍 1. Mosaic 图像增强 2. SPP 模块 3. CIoU Loss 3.1 I ...

  8. Yolov1、Yolov2、Yolov3学习笔记

    前言 目前可以将目标检测算法分为两类:一类是onestage,一类是twostage. onestage的目标检测算法是指在进行目标检测的时候不需要进行region proposal阶段,而是直接产生 ...

  9. 我们是如何改进YOLOv3进行红外小目标检测的?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 [导语]本文将介绍BBuf.小武和笔者一起在过年期间完成的一个目标检测项目,将描述我们模型改进的思路. ...

最新文章

  1. visual studio code 修改工具栏风格
  2. 不同场景下MySQL的迁移方案
  3. qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
  4. leetcode455. 分发饼干(贪心算法)
  5. NC代码调试 - 持续更新
  6. 阿里Java研发工程师实习面经
  7. JS定义数组,初始化
  8. ArcGISEngine二次开发(5):添加矢量要素
  9. 机器学习算法(八):基于BP神经网络的预测(乳腺癌分类实践)
  10. 小米电视4s android,小米电视系列ROOT教程(含4A,4S,4X等Android6.0.1版机型)
  11. iOS切换根控制器动画!
  12. c语言遥控器程序设计,基于51单片机的红外线遥控器解码程序设计
  13. 什么是外汇EA呢?工作的原理又是什么呢?送给不懂外汇EA
  14. [译]为什么苹果眼镜会没有ARKit——当前AR产品的8大问题
  15. java cryptography_Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide...
  16. git的本地仓库在哪里
  17. C/C++ GBK2312转Unicode
  18. centos7 下修改MySQL密码
  19. hihoCoder 1095 HIHO Drinking Game 微软苏州校招笔试 12月27日
  20. [商业]博客中国的新广告方式

热门文章

  1. java校验图片名称后缀
  2. 论文中文翻译——A deep tree-based model for software defect prediction
  3. 千斤顶装配图怎么画_工程制图习题集千斤顶装配图
  4. 当我们再谈AI芯片,有些东西已经变了
  5. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;Task4:集合运算-JOIN
  6. Win10删除文件权限不足的一种可能的解决方式
  7. 美国签证DS-160填表指南(内含图文)
  8. QQ号强制搜索查询教程
  9. c语言排列组合还可以这样求
  10. 【解决方案】物流行业如何通过国标GB28181协议国标平台EasyGBS建立车载视频可视化监控系统?