faster rcnn 原理解析

faster rcnn 网络结构图

        Faster cnn 大概思路就是,首先是输入一张图像,然后将图像固定最小边为600的大小,保证了图像不发生形变,然后经过一个训练好的网络,比如vgg或者是其他的,得到特征图,然后有两条路,一个是输入RNP网络,经过一个3*3的卷积,RPN网络也有两条路,一条是直接经过一个1*1的卷积,激活函数使用linear,用于回归,因为框有4个坐标,(dx,dy,dw,dh),其实这里回归的是一种变换,我们假设总共有N种候选框,那么输入的卷积通道数就是4A,另外一条是二分了网络,用于区分每个anchor是含有目标还是不含有目标,如果是bg(背景)那么输入就是0,否则就是1,当然sigmoid输入的是概率值。然后经过proposal,这个网络坐的事情,首先是将我们回归得到的变换用于我们的特征图上每个点的候选框,这里其实需要注意的是,我们的框是一直都在的,就是在每个特征图上的每个点,我们用这个点作为矩阵框的中点,然后根据不同的事先给定的框的长和宽,所以proposal就是讲回归得到的框的变换用在候选框上,因为这样会有很对框,比如我们最后特征图大小是M*N,总共有九种候选框,那么最后的框就是M*N*9个,这样其实里面就有很多事没用的,我们将经过回归变换后的框和我们真实的框进行非极大值抑制,最终只选择256个框,他的具体做法就是,给定一个阈值,然后我们把求其他框和概率最大的的一个交并比,选择大于阈值的,这样,最后选到256个框,然后我们把这些框和我们真实的框,也就是GT,去求一个交并比,删除那些交并比小于最小的阈值的,比如小于0.3的舍去,0.3-0.7直接为bg,大于0.7的就是正例(pos),然后在经过roi poling,这个层的作用主要是首先提取框里面的图像,就是把我们anchor里面的图像提取出来,因为不同框大小不一样,而我们知道,全连接层要求我们的大小输入时一致的,为了统一大小,roi pooling是这样做的,它是将任意一张图像切分为7*7的小块,每一个小块使用max pooling,那么最后输出大小就是7*7,这样就统一了输入大小不一致得问题,然后从到分类的网络,用分类的网络来分类和回归。

Anchor的生成

    Anchor是这样的,我么实现给定不同尺度的框,比如scale ==[128,256,512]长宽比[1;1,1:2,2:1],那么长宽和长宽比就可以11两两组合生成九种框,然后是在特征图上没一个点,把这个点当做是矩形框的中心,生成这九种长宽不同的框。


上图左边就是一个特征图上的点方法了的anchor,右边就是特征图上一个点。

Faster rcnn 的损失函数



其实他的变换思想就是,现将我们的框的中心点平移到目标框的中心(这里的目标框其实就是gt,或者是预测框),然后再将我们的长和宽进行伸缩变换,所以前面的叫做平移变换,后面的是伸缩变换。然后我们也可以看出来,我们的回归是这样回归的,是让我们预测的框和anchor直接的变换与真实框与anchor直接的变换的损失最小,损失函数就是smooth函数。

分类函数的损失就是softmax损失,也叫互熵损失,对于RPN的分类是二分类问题,而对于分类层是一个多分类问题。


  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值