东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3981|回复: 2

[课堂笔记] 总结:SSDLoss损失函数的定义

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14418
QQ
发表于 2019-12-3 10:32:32 | 显示全部楼层 |阅读模式
总结:SSDLoss损失函数的定义

理论部分,请参考:http://www.ai111.vip/thread-910-1-1.html
ssd_loss = SSDLoss(neg_pos_ratio=3,
                   n_neg_min=1,
                   alpha=1.0)
model.compile(optimizer=adam, loss=ssd_loss.compute_loss)


SSD的损失:分类损失-log(实际类别对应的预测的概率值p)
交叉熵体现了模型输出的概率分布和真实样本的概率分布的相似程度
定位损失smooth_L1_loss
负样本:实际值中 类别为背景的边界框box
正样本:实际值中 类别为具体物体类别的边界框box
batch_size 表示多少张图片 每张图片中有n_boxes_total个样本(正样本 负样本 中立样本)
定位损失:只考虑每张图片中正样本的损失之和
分类损失:分为正样本的分类损失 + 部分数量的负样本的分类损失之和
限定负样本的数量(以batch_size张图片为单位的,而不是一张图片中满足条件):最多是正样本数量的neg_pos_ratio=3倍 最少是self.n_neg_min
如果在batch_size张图片中没有一个正样本,导致选取的负样本个数也为0,因为负样本数量最多是正样本数量的neg_pos_ratio=3倍,此时总的损失为0,导致模型无法学习
此时n_neg_min这个参数就开始起作用了,这个值确保每一次迭代梯度都有足够的负样本参与, 即便正样本的数量很小, 或者是0, 也想要使用负样本进行训练.
在batch_size张图片中只取负样本的分类损失前面最大的几个(控制负样本的数量)
体现了难例挖掘思想:找到某些负样本 其分类损失最大的 才是难例
alpha 越大 更多的考虑 正样本的定位损失


  1. 实际值: [[[ 1.  0.  0.  0.  0.  0. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  2.    39.]
  3.   [ 1.  0.  0.  0.  0.  0. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  4.    39.]
  5.   [ 1.  0.  0.  0.  0.  0. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  6.    39.]]

  7. [[ 0.  0.  0.  0.  0.  1. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  8.    39.]
  9.   [ 1.  0.  0.  0.  0.  0. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  10.    39.]
  11.   [ 1.  0.  0.  0.  0.  0. 16. 17. 18. 19. 26. 27. 28. 29. 36. 37. 38.
  12.    39.]]]
  13. 实际值 shape: (2, 3, 18)
  14. 预测值: [[[4.26978000e-03 1.16064600e-02 8.57607900e-02 2.33122010e-01
  15.    3.15496300e-02 6.33691320e-01 1.50000000e+01 1.90000000e+01
  16.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  17.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  18.    4.00000000e+01 4.20000000e+01]
  19.   [3.16350200e-02 1.57501000e-03 6.35406290e-01 8.59928900e-02
  20.    1.16378700e-02 2.33752910e-01 1.50000000e+01 1.90000000e+01
  21.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  22.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  23.    4.00000000e+01 4.20000000e+01]
  24.   [6.02561205e-04 1.63793117e-03 2.43090540e-01 4.45235855e-03
  25.    6.60788597e-01 8.94280120e-02 1.50000000e+01 1.90000000e+01
  26.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  27.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  28.    4.00000000e+01 4.20000000e+01]]

  29. [[2.67614720e-01 6.63350570e-04 1.80317380e-03 6.63350570e-04
  30.    1.80317380e-03 7.27452231e-01 1.50000000e+01 1.90000000e+01
  31.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  32.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  33.    4.00000000e+01 4.20000000e+01]
  34.   [2.78934145e-10 6.91408620e-13 9.99954601e-01 4.53978687e-05
  35.    1.87944349e-12 7.58221619e-10 1.50000000e+01 1.90000000e+01
  36.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  37.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  38.    4.00000000e+01 4.20000000e+01]
  39.   [4.53978686e-05 2.06106005e-09 9.99954600e-01 9.35719813e-14
  40.    8.53266023e-17 3.44232082e-14 1.50000000e+01 1.90000000e+01
  41.    8.00000000e+00 1.60000000e+01 2.20000000e+01 2.80000000e+01
  42.    2.50000000e+01 3.30000000e+01 3.40000000e+01 3.60000000e+01
  43.    4.00000000e+01 4.20000000e+01]]]
  44. classification_loss: [[ 5.45619298  3.45349054  7.41432131]
  45. [ 0.31820694 22.0000454  10.0000454 ]]
  46. localization_loss: [[14. 14. 14.]
  47. [14. 14. 14.]]
  48. 原始的负样本mask: [[1. 1. 1.]
  49. [0. 1. 1.]]
  50. 正样本的mask: [[0. 0. 0.]
  51. [1. 0. 0.]]
  52. n_positive(正样本个数): 1.0
  53. 正样本的分类损失之和(每张图片中)pos_class_loss: [0.         0.31820694]
  54. neg_class_loss_all: [[ 5.45619298  3.45349054  7.41432131]
  55. [ 0.         22.0000454  10.0000454 ]]
  56. n_negative(负样本个数): 5
  57. n_negative_keep(只保留的负样本个数,正负样本的平衡): 3.0
  58. 下面开始求 每张图片中所有负样本的分类损失之和(难点)
  59. [ 5.45619298  3.45349054  7.41432131  0.         22.0000454  10.0000454 ]
  60. [4 5 2]
  61. 保留的负样本的mask(会丢掉一部分负样本): [[0. 0. 1.]
  62. [0. 1. 1.]]
  63. 负样本的分类损失之和(每张图片中)neg_class_loss: [ 7.41432131 32.0000908 ]
  64. end.... 每张图片中所有负样本的分类损失之和(难点)
  65. 总的分类损失(每张图片中)class_loss: [ 7.41432131 32.31829775]
  66. 总的分类损失(每张图片中)(错误class_loss): [16.32400483 32.31829775]
  67. 只考虑正样本的定位损失: [ 0. 14.]
  68. total_loss: [ 7.41432131 46.31829775]
  69. compute_loss= [14.82864263 92.63659549]
复制代码



让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

0

主题

117

帖子

258

积分

中级会员

Rank: 3Rank: 3

积分
258
QQ
发表于 2020-2-3 15:37:54 | 显示全部楼层
谢谢老师提供的资料。
回复

使用道具 举报

0

主题

98

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2020-10-28 16:01:44 | 显示全部楼层
本帖最后由 icescream 于 2020-10-28 16:04 编辑

赞!!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-3-29 09:47 , Processed in 0.179641 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表