前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >目标检测算法Faster RCNN的损失函数以及如何训练?

目标检测算法Faster RCNN的损失函数以及如何训练?

作者头像
智能算法
发布2020-06-17 20:00:22
4.5K0
发布2020-06-17 20:00:22
举报
文章被收录于专栏:智能算法

今天我们主要看下Faster RCNN算法的损失函数以及如何训练?

损失函数:

从上一期Faster RCNN的算法原理上,我们知道Faster RCNN算法有两部分,一个是用来提取候选框的RPN网络,一个是最后检测目标的分类回归网络。通过学习,我们知道RPN网络在提取候选框的时候有两个任务,一个是判断该anchor产生的候选框是否是目标的二分类任务,另一个是对该候选框进行边框回归的回归任务。 而Faster RCNN最后的目标检测网络同样也有两个任务,跟RPN网络类似,一个是判断RPN网络产生的候选框框住的物体是具体哪一类物体的分类任务,另一个是对该候选框进行回归的回归任务。 既然两个网络都是多任务网络,那么,我们先看看RPN网络的损失函数是怎么样的?先上RPN网络的总体损失函数,接下来分析,如下(公式可左右滑动):

L({p_i},{t_i})=\frac{1}{N_{cls}}\sum_{i}L_{cls}(p_i,p^*_i)+\lambda\frac{1}{N_{reg}}\sum_ip^*_iL_{reg}(t_i,t^*_i)

上面损失函数可以明显的分成两部分,+号左边为分类的损失值,右边为回归的损失值。逐个看,先考虑分类的loss

分类loss

如何训练?

这个Faster RCNN模型的训练有些复杂,我们还是先把上期的这个算法流程图贴上,有助于下面训练流程的理解,如下:

从上图,我们可以看出,整个算法的两个网络(RPN和最终的分类回归网络)共用同一个卷积网络。那么该如何才能达到共用呢?这里分四步来训练:

  1. ImageNet模型初始化,先独立训练一个RPN网络;
  2. 仍然用ImageNet模型初始化,但是使用上一步训练好的RPN网络产生的候选框作为输入,训练一个Fast-RCNN网络;
  3. 用上一步的Fast-RCNN网络模型重新初始化RPN网络,但是不更新Fast-RCNN网络模型的共享卷积层,只更新RPN网络的特有层;
  4. 用第2步的Fast-RCNN网络模型重新初始化,但是不更新Fast-RCNN网络模型的共享卷积层,使用第3步新的RPN网络重新产生候选框做输入,训练一个Fast-RCNN网络。以此达到RPN网络和最终的检测网络共享卷积层。

相当于是先用一个ImageNet模型初始化训练,然后再用训练好的模型去微调两个网络。至此,我们已经了解了Faster RCNN的损失函数和训练过程。下期我们将继续学习常见的目标检测模型SSD算法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 损失函数:
    • 分类loss
    • 如何训练?
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档