这里的第二步已经不一样了,这里是把整个图像输入到网络中,roi pooling(感兴趣区域), fast rcnn是先把整个图像输入得到特征图,然后根据候选框对整个图片的映射关系得到每个候选框的特征图了。 正样本指的是包含目标的样本,负样本指的是背景了。ss算法提取了2000个候选框,但是只拿64个,然后把和含目标的框的iou大于0.5的设置为正样本,在0.1到0.5的设置为负样本。 之后再使用roi pooling层。将各个候选框对应的特征图缩放到统一的尺寸。 假设左图是一个候选框对应的特征图,然后将他分为7*7的区域,然后对每一个区域实现最大池化下采样操作,如右图所示,右上角是0.1。注意这里只是一个channel。 softmax分类器会输出n+1个类别, 会输出(n+1)x4个节点,下面这个一维向量每4个一份。 黄色的框是初始,绿色的框是含目标的框,红色的是调整之后得到的框。 一共有两个损失值。 可以看到是交叉熵损失。 oi*只有在真实的位置才会是1,其余位置都是0。 那么它是一个平衡系数,平衡这两个损失值。
faster rcnn
有一个不同是使用RPN结构得到候选框,可以看成是RPN加上fast rcnn
RPN结构
先来解释anchor,在特征图上找一个点,等比例找到他在原图里的位置,然后以他为中心,创建多个矩形区域,就像右图里这些矩形,就是一个anchor,然后针对假如k个anchor,经过cls后得到2k个结果,一个是是目标的概率,一个是是背景的概率,同理,经过回归层可以得到4k个参数。 cls这个框里每2个一组,一个是是目标的概率(这里不是是汽车的概率),一个是是背景的概率。 三种尺度就是anchor的面积,每个尺度会有三个比例,可以在右图看到。所以每个位置有9个anchor。 只选取256个anchor,其中分为正样本和负样本。 有2种方法定义正样本:1.这个anchor与人工选的的iou大于0.7;2.与人工选取的anchor的iou最大的那个anchor。负样本是指与所有人工框的iou小于0.3的。其余丢弃。
|