先介绍一下以前的目标检测算法:RCNN、Fast RCNN和Faster RCNN。这三种算法都用到Selective Search方法。之前很多算法都是基于蛮力搜索即穷举搜索(Exhaustive Search),对整张图片进行扫描,比如采用滑动窗口法(DPM就是采用滑动窗口法),耗时严重。图片包含了各种不同层次的语义,信息非常丰富,包括纹理(Texture),形状(shape),颜色(color)等等。而选择性搜索有两大特点。第一是通过分层分组进行选择性搜索,第二是多样化策略。分层分组进行选择性搜索,就是首先使用自下而上的分组(一种流行的分割方法)来创建初始区域。然后计算所有相邻区域之间的相似性。两个最相似的地区被组合在一起,并计算所得到的地区与其邻居之间的新的相似性。重复地把最相似的区域组合在一起,直到整个图像变成单个区域。而多样化策略包括通过使用具有不同不变性质的各种颜色空间、通过使用不同的相似性度量、通过使用不同的初始化区域。RCNN通过选择性搜索得到约2k个区域提议,然后将区域提议转换为固定的227*227大小,再从区域提议中提取固定的特征长度的特征向量,再用SVM进行分类,再用非极大值抑制法来精选区域,其中非极大值抑制法就是先保留最大概率值的区域提议框,然后把IOU值很大的区域提议框删除。Fast RCNN也是通过选择性搜索得到约2k个区域提议,将ROI池化成固定大小的特征图的原因是FCs 需要固定大小的输入,网络有两个输出:softmax probabilities和bounding-box regression。其中,原始图像经过深度卷积(Deep Convnet)得到特征图(feature map),而经过选择性搜索可以得到ROI(regions of interest 、区域提议),其中不需要对ROI进行卷积,而RCNN是对每个region proposal分别做卷积,所以很慢。 Faster RCNN将RPN和Fast RCNN组合起来。Faster RCNN可以从特征图中产生区域提议。Faster RCNN用到的交替训练:第一步,使用在ImageNet上预训练的模型初始化RPN,并针对区域提议任务进行了端到端的微调。第二步,使用RPN生成的区域建议来训练Fast R-CNN网络,也用ImageNet上预训练的模型初始化Fast R-CNN。第三步,使用Fast R-CNN重新初始化RPN,但是要固定卷积层,只微调RPN。第四步,固定Fast R-CNN的卷积层,使用第三步中RPN提取的区域提议对Fast R-CNN网络进行微调。这样一来,RPN 和Fast R-CNN就可以共享相同的卷积层了。其实可以重复这过程,只是没有明显的改善。YOLO速度非常快。由于我们将检测视为回归问题,所以我们不需要复杂的管道,YOLO每秒45帧,而Fast YOLO 每秒150帧,在Titan X GPU上没有批处理。其次,与基于滑动窗口和区域提议的技术不同,YOLO在训练和测试时,会看到整个图像,即全局的看图像,所以它会对上下文信息进行编码。 Fast RCNN因为它看不到更大的上下文,所以背景错误比较多。而YOLO的背景错误数量少一半。最后,YOLO泛化能力强。在对自然图像进行训练并对艺术品进行测试时,YOLO大幅优于DPM和R-CNN。YOLO将输入图像分成S*S个网格。如果某个目标的中心落入网格中,那么该网格负责检测该目标。每个网格预测 B(B=7)个边界框和这些边界框的置信度成绩。每个网格还预测C个条件类概率Pr(Classi|Object)。YOLO网络有24个卷积层,再接着2个全连接层。Fast YOLO使用9个卷积层,在这些层中使用更少的过滤器。除了网络之外,YOLO和Fast YOLO的所有训练和测试参数都是相同的。这样一来,可以提高速度但是精度下降。每个grid有30维,这30维中,8维是回归box的坐标,2维是box的confidence,还有20维是类别。 重视8维的坐标预测,设置权重 =5。对没有object的box的confidence loss,设置权重 =0.5。有object的box的confidence loss和类别的loss的loss weight正常取1。
You Only Look Once: Unified,Real-Time Object Detection
最新推荐文章于 2022-09-23 11:24:15 发布