1)先验框计算

对于一个大小 为m*n 的特征图,共有 mn 个单元,每个单元设置的先验框数目记为 k ,那么每个单元共需要 (c+4)k 个预测值,所有的单元共需要 (c+4)kmn 个预测值,由于SSD采用卷积做检测,所以就需要 (c+4)k 个卷积核完成这个特征图的检测过程。

2)先验框匹配

原则一:每个ground truth匹配与其IOU最大的先验框(为正样本);原则二:剩余未匹配的先验框与所有ground truth匹配,IOU大于一定阈值(0.5)(先验框为正)。先验框数量较ground truth大很多,所以负样本数量很多,所以SSD算法采取了Hard negativate mining技术对负样本进行抽样,抽样时按照置信度误差(预测背景的置信度越小,误差越大)进行降序排列,选取误差的较大的top-k作为训练的负样本,以保证正负样本比例接近1:3。

置信度的理解:

Pr(Object)是先验框内存在对象的概率,并不管是哪个对象,它体现的是有或没有对象的概率

表示先验框与ground truth的IOU

代码:此部分代码主要是在代码,bbox编码部分,ssd_vgg_300.py,ssd_common.py

3)损失函数

N是参与训练的正样本数, 为一个指示参数,表示第i个先验框与第j个ground truth在类别为p时是否匹配,匹配为1,不匹配为0。由于此参数的存在,所以位置误差仅是针对正样本计算的。

先验框位置用  表示,其对应边界框用  表示,那么边界框的预测值  其实是  相对于  的转换值:

 是ground truth相对于先验框的转换值:

代码部分:

4)预测部分

1)参数初始化

2)网络结构

3)预测结果reshape

4)Anchor坐标获取

5)bbox解码

6)bbox选择

发现问题:

(1)Anchor获取部分,关于Anchor的w,h计算部分

(2)代码收敛问题,推荐代码链接https://github.com/HiKapok/SSD.TensorFlow

(3)关于损失函数计算部分

参考链接:https://zhuanlan.zhihu.com/p/37635878(纪录了检测流程)

https://zhuanlan.zhihu.com/p/37635878

Tensoflow-SSD代码解读(github-balancap代码)相关推荐

  1. java车间调度算法_混合算法(GA+TS)求解作业车间调度问题代码解读+完整JAVA代码...

    程序猿声 代码黑科技的分享区 前两篇文章中,我们介绍了FJSP问题,并梳理了一遍HA算法.这一篇文章对小编实现的(很乱很烂的)代码进行简单解读. 往期回顾: 代码下载请关注公众号,后台回复[FJSPH ...

  2. matlab sift代码解读,MATLAB SIFT 代码

    [实例简介] matlab 实现的 sift 变换 的代码,包含整个过程的详细步骤. [实例截图] [核心代码] sift-0.9.0 ├── data │   ├── img3.jpg │   ├─ ...

  3. BERT:代码解读、实体关系抽取实战

    目录 前言 一.BERT的主要亮点 1. 双向Transformers 2.句子级别的应用 3.能够解决的任务 二.BERT代码解读 1. 数据预处理 1.1 InputExample类 1.2 In ...

  4. GoogLeNet代码解读

    GoogLeNet代码解读 目录 GoogLeNet代码解读 概述 GooLeNet网络结构图 1)从输入到第一层inception 2)从第2层inception到第4层inception 3)从第 ...

  5. 基于SegNet和UNet的遥感图像分割代码解读

    基于SegNet和UNet的遥感图像分割代码解读 目录 基于SegNet和UNet的遥感图像分割代码解读 前言 概述 代码框架 代码细节分析 划分数据集gen_dataset.py UNet模型训练u ...

  6. 图像分割套件PaddleSeg全面解析(一)train.py代码解读

    首先祝贺百度团队百度斩获NeurIPS2020挑战赛冠军,https://www.jiqizhixin.com/articles/2020-12-09-2. 在此次比赛中使用的是基于飞桨深度学习框架开 ...

  7. shfflenetv2代码解读

    shufflenetv2代码解读 目录 shufflenetv2代码解读 概述 shufflenetv2网络结构图 shufflenetv2架构参数 shufflenetv2代码细节分析 概述 shu ...

  8. Inception代码解读

    Inception代码解读 目录 Inception代码解读 概述 Inception网络结构图 inception网络结构框架 inception代码细节分析 概述 inception相比起最开始兴 ...

  9. AlexNet代码解读

    AlexNet代码解读 目录 AlexNet代码解读 概述 网络结构图 AlexNet代码细节分析 概述 AlexNet的网络结构很简单,是最初级版本的CNN,没有使用什么技巧. 网络分成两个部分,分 ...

  10. 飞桨PP-HumanSeg本地实时视频推理代码解读

    文章同样发布在百度AIStudio,Fork后即可在线运行,请点击这里 本人希望基于PaddleSeg对视频实时进行图像分割,但在AiStudio中检索分割和实时两个关键词后并没有得到理想的结果,大部 ...

最新文章

  1. 日志多租户架构下的Loki方案
  2. City of Angels
  3. IOS开发中的变量、方法、属性
  4. 如何更好的与人沟通?[图]
  5. Nagios安装部署与Cacti整合文档超精细版本
  6. ef ddl生成不了脚本_如何使用Hibernate从Play生成DDL脚本! 框架项目
  7. 狄慧201771010104《面向对象程序设计(java)》第十周学习总结
  8. iterator remove_Iterator与fast-fail机制
  9. 2015湖南省选集训DAY5——work(BZOJ4177)
  10. MySQL 字段类型解析
  11. tensorflow 模型权重导出
  12. 开课吧Java课堂之如何使用FilenameFilter
  13. sqlplus下无法shutdown情况下不妨试试crsctl stop crs
  14. RF-实现接口自动化
  15. RTL8211千兆网PHY芯片LED灯配置
  16. 前端资源汇总-酷站分享[转载]
  17. 实参可以是任意类型吗_5本可以解决书荒的粮草小说,类型随机,看看有你喜欢的吗?...
  18. 为什么有了FineBI后还会有FineReport?这两者的区别真的很大
  19. Python 位操作符(Bitwise)
  20. 7. JDK拍了拍你:字符串拼接一定记得用MessageFormat#format

热门文章

  1. YurunOAuthLogin v2.0.2,第三方 OAuth2 授权一把梭
  2. js函数、作用域和闭包
  3. Haproxy+Rabbitmq中的问题
  4. 解锁区块链的创业密码
  5. Vector3 *2 ,ToString()自动四舍五入
  6. ASP.NET MVC 重点教程一周年版 第八回 Helper之演化
  7. Java实现动画逐字打印
  8. classpath理解
  9. oracle时间戳效率问题,时间戳问题 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
  10. 关于读入带空格的字符串与输入输出重定向