SSD源码解析4-损失函数(理论(1),作为一名Linux运维面试者你应该知道的

参考文章:

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

知乎:SSD

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

知乎:SSD-TensorFlow 源码解析

TensorFlow之estimator详解

解析代码:

解析源码地址

SSD源码简单版

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

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

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

SSD损失函数

相比较YOLOv3,SSD的损失函数相对直观些,这次就不贴手写的了,因为要贴损失计算实现的代码,手写太费事了。

SSD损失函数定义为**位置误差(locatization loss, loc)置信度误差(confidence loss, conf)**的加权和(实际代码中还会加上l2_loss以防止过拟合):

其中N 是先验框的正样本数量。这里 x_{ij}^{k}\varepsilon {1,0}} 为一个指示参数,当**x_{ij}^{k}=1时表示第i 个先验框与第j 个ground truth匹配**,并且ground truth的类别为 p 。 c 为类别置信度预测值l 为先验框的所对应边界框的位置预测值而 g 是ground truth的位置参数

下面盗一张图再来说明一下:

1,对于位置误差

其采用Smooth L1 loss,定义如下:

由于x_{ij}^{k} 的存在,所以位置误差仅针对正样本进行计算。值得注意的是,要先对ground truth的g 进行编码得到 \hat{g}(偏移量)因为预测值 l 也是编码值,若设置variance_encoded_in_target=True,编码时要加上variance=[0.1, 0.1, 0.2, 0.2]:

上面公式在实际代码中的操作如下(encode_all_anchors()函数中):

            gt_cy = (gt_cy - anchor_cy) / anchor_h / self._prior_scaling[0]  # [0.1, 0.1, 0.2, 0.2]
            gt_cx = (gt_cx - anchor_cx) / anchor_w / self._prior_scaling[1]
            gt_h = tf.log(gt_h / anchor_h) / self._prior_scaling[2]
            gt_w = tf.log(gt_w / anchor_w) / self._prior_scaling[3]

smooth_l1的公式如下,实际计算中x=g-l,g为ground_truth,l为预测值。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
[外链图片转存中…(img-PwbTRcjz-1712550480437)]

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值