检测算法回顾
5、6年前的检测算法大体如下:
手动涉及特征时应该考虑的因素:
1、尺度不变性 2、光照不变性 3、旋转不变性
这一步骤称为特征工程,最重要的一个算法称为sift,(回顾SIFT讲解)体现了上述所有的观点。
在分类的过程中,经典的工具有SVM、NN。
由于每一个步骤都会存在误差,随着链路不断增长,会导致误差逐步累积,最终带来错误。
stage1生成备选框,stage2进行精准化.
v1讲解
一些概念和定义
每个备选框都可以用四个维度唯一标定。
confidence为置信度,置信度表达式中的Pr表示是否为目标物体的概率,IoU表示真实与预测box之间的重合程度。
输出的张量,(5*B+C)表示channel数目,5代表了box的xywh和置信度,一共有两个box,C表示分类的个数,原文中给的是20.
B是个武断的数字,只要比1大就行了,用1个预测框去回归,并不能保证回归结果很好。
损失函数解释
函数1、2代表的是对物体边框的回归。3、4代表的是对置信度的回归。
原本的格子7x7,然后每个格子对应2个bbox,一共有98个点需要估计。然而在我们上图中只有3个物体,所以需要把超参数调整大一点,平衡非物体bbox过多。
w与h表示bbox的边框大小,为什么使用根号呢?如果使用线性的,当物体边框大的时候,loss也就越大,说明我们评测结果容易收到大物体影响。使得网络只会去学习到大物体的信息,而把小物体给忽略掉了。
w与h表示bbox的边框大小,使用根号,是为了使得大物体与小物体产生的loss差距不大。取log也可以。
为什么需要加上noobject的损失?
当我们需要学习N类物体的特征时,其实需要学习的时N+1类物体,就是多一个复杂的背景,增强泛化能力。
最后的分类略显粗糙,需要加上softmax,与交叉熵损失相结合。softmax定义,数学表达式,编码以及求导需要好好掌握。
v1总结
之前说过yolo是,图像中物体中心落在哪个格子,那个格子就负责预测那一个物体。如果物体过于拥挤,导致一个格子里面有多个物体中心就不好搞了。
物理信息找边框,语义信息分类。
很显然,右边的更容易回归
人工撒anchor,不同形状,