在目标检测领域,能大规模应用在业务领域和工业领域的,很大一部分都是采用yolo来做,我们知道yolo这个系列,除了v1和v2和x以外,都是基于anchor base的。这也从侧面说明,anchor base其实更适用业务,我们知道业务上肯定是追求高召回和高准确率,所以anchor free很显然不能很好满足这两个需求。那anchor free也是有优势所在的,一个是速度快,因为本身不会计算anchor和iou。
看到知乎上的一个说法:
anchor based收敛快,可操作性大,适合业务场景。anchor-based的可操作性大指的是可以通过设置anchor的形状来引入先验
anchor free收敛慢,存在漏检的情况,人工可操作性不大,不太适合业务场景。
区别1:定位方式
Anchor-based方法使用预先设定的锚点来确定候选框位置和大小;Anchor-free方法则不需要预先设置锚点,直接从特征图中推断物体位置和大小。
区别2:锚点数量
Anchor-based方法需要人工设定一系列锚点来生成候选框;Anchor-free方法不需要设置锚点。
区别3:特征提取
Anchor-based方法通常使用单独的卷积层来提取特征,而Anchor-free方法通常使用多个卷积层来捕获不同尺度的特征。
区别4:预测模式
Anchor-based方法中,每个锚点都针对某个特定尺度和长宽比进行分类和回归;Anchor-free方法中,对于每个像素点,都可以进行分类和回归。
区别5:适用场景
Anchor-based方法通常适用于物体尺寸变化较小和数量较稀少的情况;Anchor-free方法适用于物体尺寸变化较大和数量较密集的情况。
区别6:推理速度
由于不需要生成大量的候选框,Anchor-free方法在推理速度上通常快于Anchor-based方法。
区别7:模型复杂度
Anchor-based方法中需要额外的操作(如生成候选框和计算与真实框的IOU值等),导致模型复杂度相对更高。
区别8:难度级别
Anchor-based方法需要手动设置锚点数量和大小,需要一定的经验和技巧;相比之下,Anchor-free方法更易于实现和优化。
区别9:处理能力
在目标密集区域,Anchor-free方法的检测结果可能会产生重叠或重复检测的问题,而Anchor-based方法可以通过调整锚点的位置和大小来处理这种情况。
区别10:检测精度
在某些情况下,Anchor-based方法可以达到更高的检测精度;而Anchor-free方法相对于Anchor-based方法而言,具有更好的物体尺度鲁棒性。