Tensorflow2.0---SSD网络原理及代码解析(一)
Tensorflow2.0—SSD网络原理及代码解析(一)
在目标检测领域中,一般我们分为单阶段和双阶段。其中,双阶段最著名的就是Faster RCNN,单阶段有之前讲过的YOLO系列,还有一个比较经典的就是今天要讲的SSD目标检测网络算法。废话不多说,直接上干货~
一、主体思路
主干网络是VGG16,但是与VGG16还是有一点区别:
1、将VGG16的FC6和FC7层转化为卷积层。
2、去掉所有的Dropout层和FC8层;
3、新增了Conv6、Conv7、Conv8、Conv9。
目的:因为原始的VGG16只有16个卷积层,特征提取程度不够高,在后面再加三层卷积层,能够进一步地进行特征提取,有利于模型对大目标的检测。
二、细节研究
2.1 锚点框
在上面,我们可以知道,在训练网络中,会在特定的卷积层中提取相应的feature map,一共会提取6个卷积层,而每个卷积层又会生成相应的anchor box(数量:feature map_w * feature map_h * (4 or 6))。但是每层的anchor box的尺寸是怎么选择的呢?在YOLO V3或V4中,我们都知道三个有效特征层的anchor box的尺寸是通过人为Kmeans聚类得到的,但是在SSD中是如何得到的呢?
我来解释一下上面的公式的含义:
首先,要知道:随着feature map越小,那么anchor box的尺度就要越大(因为层级越高,那么feature map就会越小,同时anchor就会越少,anchor box的shape就要越大)。
其次,在上述公式中未知参数就只有一个:k。而m是固定值为5,k越大,表示层级数越高,s_k的值就会越大。
其中,第一层有效feature map的尺度为0.1,不参与上述公式计算。
现在,我们来计算下conv9_2的尺度:
k = 3 , s_k = 0.2 + 0.175 * 2 = 0.55,那么映射到原图中anchor box的尺度就是300 x 0.55 = 165,以此类推。。。。。。
我们得到了6个有效feature map的尺度大小,那么我们要根据这个尺度结合长宽比进行anchor box的设置。
我们还是以conv9_2为例:
我们在上面已经计算得到该层的scale为165,同时该层中每个anchor会生成6个anchor box,则:
w_1 = 165 * 1 = 165, h_1 = 165 * 1 = 165
w_2 = 165 * 1.414 = 233,31,h_2 = 165 / 1.414 = 116.69
w_3 = 165 * 1.73 = 285.45, h_3 = 165 / 1.73 = 95.38
w_4 = 165 * 0.707 = 116.655, h_4 = 165 / 0.707 = 233.38
w_5 = 165 * 0.577 = 95.205,h_5 = 165 / 0.577 = 285.96
以此类推。。。。。。
细心的小伙伴一定发现了,上面只有5个anchor box,但是在论文中该层是有6个anchor box,还有一个anchor box去哪了?
我们就是利用s_k和s_k+1进行根号计算得到新的尺度,这里为189。所以,
w_6 = 189,h_6 = 189。
2.2 正负样本选择
过年了~等回来再补吧(#.#)
Tensorflow2.0---SSD网络原理及代码解析(一)相关推荐
- Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
Tensorflow2.0-SSD网络原理及代码解析(二)-锚点框的生成 分析完SSD网络的原理之后,一起来看看代码吧~ 代码转载于:https://github.com/bubbliiiing/ss ...
- DBNet++(TPAMI) 原理与代码解析
paper:Real-Time Scene Text Detection with Differentiable Binarization and Adaptive Scale Fusion code ...
- G-GhostNet(IJCV 2022)原理与代码解析
paper:GhostNets on Heterogeneous Devices via Cheap Operations code:https://github.com/huawei-noah/Ef ...
- YOLOv3原理及代码解析
博主完整翻译了YOLOV1和YOLOV3的论文:请移步查看: YOLOV1:https://blog.csdn.net/taifengzikai/article/details/81988891 YO ...
- ICCV2017跟踪算法BACF原理及代码解析
文章和代码下载地址: Galoogahi H K, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual ...
- TPAMI2015跟踪算法KCF原理及代码解析
文章和代码下载地址: http://www.robots.ox.ac.uk/~joao/circulant/ 一.基础公式的由来 相关滤波跟踪器可以表示为最小化的岭回归问题: 表示期望相应,表示正则系 ...
- 视觉SLAM开源算法ORB-SLAM3 原理与代码解析
来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...
- 【资源】CenterNet原理与代码解析
<CenterNet原理与代码解析>是首发于GiantPandaCV公众号的电子书教程,由pprp总结并整理CenterNet相关解析,这本电子书是基于非官方的CenterNet实现,ht ...
- 对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析
GAN作为生成模型的一种新型训练方法,通过discriminative model来指导generative model的训练,并在真实数据中取得了很好的效果.尽管如此,当目标是一个待生成的非连续性序 ...
- SSD算法原理与代码(三)
说明:这几篇文章是讲解SSD,从算法原理.代码到部署到rk3588芯片上的过程.环境均是TF2.2,具体的安装过程请参考网上其他的文章. 一.SSD简介 SSD算法是一个优秀的one-stage目标检 ...
最新文章
- 16进制魔术数字 0xdeadbeef Leet英文转写形式 简介
- linux有三个查看文件的命令:more、cat、less
- 为什么 Linux的开发者要转到Windows 10 平台!
- Java NIO框架Mina
- ffmpeg 源码学习之seek play
- NH3.X与2.X使用上的一些区别
- java erlang_Java开发人员的Erlang
- 「澳洋主数据项目」主数据促企业变革
- DB2操作指南及命令大全word版
- python不能安装在中文_无法在Python上安装表
- java导出数据库的结构 表结构 字段信息 主键
- 浅谈分布式和微服务架构
- php 标签页切换,vue.js实现标签页切换效果
- Understanding Linux CPU Load - when should you be worried?
- 【揭秘】我几乎面了所有知名公司的算法岗位
- 分布式配置中心-Disconf入门指南
- 斐波那契数列java代码实现
- Tomcat8安装及配置详解
- 因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
- 算法的时间复杂度取决于: