one-state 和 two-state神经网络的区别
one -state 神经网络模型:YOLO, SSD, SqueezeDet, DetectNet等
two-stage神经网络模型:R-CNN, Fast R-CNN, Faster R-CNN 等
首先给出各个网络的速度与准确度比较,由图可以发现,one-stage网络速度要快很多,但.one-stage网络的准确性要比two-stage网络要低
1. 为什么one-stage的速度快很多
因为two-stage的网络是首先生成候选框,然后将候选框中的特征向量送入全连接层,进行分类和回归任务,每一个候选区域都要进行这样的任务,所以比较耗时。而one-stage网络生产的候选区域只是一个逻辑结构,或者只是一个数据块,,只需要对这个数据块进行分类和回归就可以。
2. 为什么one-stage网络的准确性比two-stage的稍低
因为two-stage,比如说R-CNN,首先在原图上生产若干个候选区域,这个候选区域表示可能会是目标的候选区域,这个候选区域不会特别多。假如我一张图像是100 x 100的,可能会有2000个候选区域,再将这些候选区域送到分类和回归网络中,最后进行训练的候选框其实不多,几百到几千,不会存在特别严重的正负样本不均衡问题。对于one-stage网络,生成的候选框数目特别大,很有可能上万。但是真正负责预测的可能只有几个,也就是正样本。其余的都是背景候选框,也就是负样本,导致正负样本比例严重失衡,这个损失为目标置信度损失。因此导致one-stage的准确率比two-stage的网络稍低。
3. 解决one-stage准确率低的方法
这只阈值,只要大于这个阈值,就认为该候选框为非背景候选框。当然这个阈值只影响目标置信度损失,位置和类别损还是原来的值。保证背景候选框与非背景候选框比例差不多。