Fast-RCNN详解:
简要概述:Fast-RCNN是基于SPP-net的改进,第一个改进是将SPP-net中的SPP层改为Rol pooling层,第二个改进是抛弃SVM,使用softmax层,下面一一介绍文章改进之处。如详细理解Fast-RCNN,请先阅读目标检测之SPP-net详解。
文章链接:https://blog.youkuaiyun.com/a24444054d/article/details/118877757?spm=1001.2014.3001.5502
1.RoI pooling
RoI pooling是一个简单版本的SPP,目的是为了减少计算时间而得出固定长度的向量,只使用一种4*4=16的空间盒数,Rol池层使用最大池化将任何有效的Rol区域内的特征转换成具有HxW的固定空间范围的小Feature map,其中H和W是超参数它们独立干任何特定的Rol,相比SPP更能提高计算速度。
2. 抛弃SVM,使用softmax
(1)使用传统的softmax进行分类,输出类别有K个类别加上‘'背景"类
(2)训练比较统一,除候选区域生成需要选择性搜索(Selective Search)算法生成外,是一个端到端的网络
(3)多任务分类损失(Mutil-task loss)
两个loss,分别是:
对于分类loss是一个N+1路的softmax输出,其中的N是类别个数1是背景,使用交叉熵损失
对于回归loss,是一个4xN路输出的regressor,也就是说对于每个类别都会训练一个单独的regressor的意思,使用平均绝对误差(MAE)损失即L1损失
最终损失L=失交叉熵损失+平均绝对误差(MAE)损失
(4)fine-tuning训练:在微调时,调整 CNN+Rol pooling+softmax以及fc,调整bbox regressor回归当中的参数
总结:Fast-RCNN在SPP-net基础上改进了SPP层,使用RoI pooling提高了计算速度,抛弃了SVM分类器,使用softmax分类器,将模型除候选区域生成之外的部分连接起来,更方便训练。
R-CNN,SPP-net,Fast-RCNN三个模型效果对比如下: