SSD源码解析1-整体结构和框架

 

SSD源码解析1-整体结构和框架

SSD源码解析2-input_pipeline()

SSD源码解析3-ssd_model_fn()

SSD源码解析4-损失函数(理论+源码)

 

 

参考文章:

博客园:深度学习笔记(七)SSD 论文阅读笔记简化

知乎:SSD

知乎:目标检测|SSD原理与实现

知乎:SSD-TensorFlow 源码解析

TensorFlow之estimator详解

解析代码:

解析源码地址

SSD源码简单版

看了一下两个版本的代码,如上面链接所示,

简单版,代码和之前解析的源码类型是一致的,更容易理解些,但是只有预测部分而没有训练部分。虽然能很容易理解,但里面没有标签处理,损失计算等部分。即使看懂了,也有种啥都没学到的感觉。

复杂版,当时看到这个源代码是有点懵的,为啥呢?因为看不懂啊,之前没见过用这种方式写的代码,套路不太一样。反反复复犹犹豫豫了好几次,想着要不要花点精力看复杂版的,也尝试在github上搜了一下看看有没有更合适的版本,结果是并没有,所以就硬着头皮解析这个比较复杂的代码了。前期是先跳过了看不懂的部分,直接去看网络构建部分,anchor生成部分,计算损失部分,数据预处理部分,但是整体运行逻辑还是有点懵。后来看了一点有关TensorFlow的Estimator讲解,稍微有点眉目,但是还不是很了解,有点不知所以然。主要是Estimator的方式不太习惯,如果只把他当作一种框架,你按它固定的格式传入相应的参数就行,还可以接受些。具体的网络搭建,anchor创建,损失计算等和之前还是一样的。

 

代码框架

下面看一下代码结构(这张图不太好解析,放在这只是大概说明一下代码结构,下面分块说明):

 

主框架

代码主框架是基于Estimator写的主要是搭建所需的结构,这里主要由2个函数需要了解,

一个是ssd_model_fn()函数,该函数主要功能是建立网络结构,计算预测框及类别概率,计算损失等。

另一个是input_pipeline()函数,该函数的主要功能是,读取图像,标签,生成anchor等。

虽然在代码顺序上是ssd_model_fn()函数在先,input_pipeline()函数在后,但是从逻辑上,先解析input_pipeline()函数,再解析ssd_model_fn()函数,会更容易理解些。

 

input_pipeline()函数

该函数的主要功能是,读取图像,标签,生成anchor等。

 

其中的get_all_anchors()函数

 

其中的encode_all_anchors()函数

 

其中的decode_all_anchors()函数

ssd_mode_fn()函数

该函数主要功能是建立网络结构,计算预测框及类别概率,计算损失等。

下面会分别对input_pipeline()函数,ssd_model_fn()函数进行源码解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值