写在前面:不只是深度学习相关,在科研过程中我们有时会发现,将在其他领域中应用的方法,迁移到自己的领域中可能就会很容易解决遇到的困难,或者提出一个新的好问题。这很容易理解,科学与技术本就是通用的。 ---读RetinaTrack论文有感
看名字就知道是基于RetinaNet做的工作,先了解下RetinaNet
一、RetinaNet概览
针对之前的目标检测工作来说,其实就是引入Focal loss然后在FPN上以分支形式输出,这两点创新。
灵魂三问
解决了什么问题:单阶段目标检测器与两阶段目标检测器相比,速度上有一定的优势,但运行速度一直被诟病,如何通过一种方法解决这个问题,即提出一种运行速度和准确率都较为不错的方法。
产生该问题的原因:一般地,我们认为产生上述问题的原因在于单阶段检测器中样本的失衡,负样本比例远远大于正样本,占据样本中多数,影响网络的优化。
怎么解决的:提出了一种使用Focal Loss的全新结构RetinaNet,使用ResNet+FPN作为backbone,再利用单级的目标识别法+Focal Loss [1]。
细节
整体网络结构如下,更细节性网络结构可参考[2]。
整个结构不同层的head部分(图中的c和d部分)共享参数,但分类和回归分支间的参数不共享 [3]。请记住这点。
其实回归和分类做成两个分支也可以认为是RetinaNet的一个创新点,但改论文内没有详细论述这部分,但是思考一下其他archor-free类目标检测或者跟踪任务是这么论述这部分的(CenterNet和FairMOT)
二、RetinaTrack部分
首先这里应该思考个问题:YOLOP只是将YOLO应用到自动驾驶(ZJ)领域并针对ZJ改进,RetinaTrack也只是将RetinaNet引入ZJ领域并针对ZJ领域改进,但为什么RetinaNet能发CVPR而YOLOP不行。
因为RetinaTrack在论述的时候抓住了tracking领域的ReID特征和目标检测特征不兼容的这个点(意思是这点属于经典tracking致力于解决的问题之一),而RetinaNet的后续分支恰恰是将这部分做成了分支形式。RetinaTrack的领域迁移是自然而然的。
RetianTrack也有多任务协作,但论述的是上面提到的部分,而不是像YOLOP那样论述多任务协作部分。
将一个领域内的知识迁移到自己研究的领域,或说将那个领域内的某种方法直接应用到我们研究的领域内解决一个问题。这种方法本身没有任何问题,它本就是通用的科学创新手段其中一种,但“是否深刻思考了研究领域内所特有的'几何约束',并使其有效地应用”,这才是水平的体现、能力的体现和研究价值的体现。
以上为个人之见,如觉不对请指正。
可以看到,RetinaTrack在RetinaNet的基础上增加了一个用于提取embeddings层的分支。
三、参考
[1] 关于RetinaNet的细节:retinanet - 纯洁的小兄弟 - 博客园
[2] 详细结构图:RetinaNet详解_再困也得吃的博客-CSDN博客_retinanet
[3] 参数不共享:RetinaNet(Focal Loss) - 知乎
[4] RetinaTrack解析比较好的文章:CVPR2020 | 多目标跟踪(车辆)与检测框架 RetinaTrack - 知乎