Closed HBioquant closed 3 years ago
好问题!事实上,模型的训练和推理速度确实比正常ResNet慢。这主要是由于e2cnn初始化、卷积核运算均为python实现,没有经过cuda的优化。
理论上,模型与ResNet的速度是一样的,因为ReResNet的模块可以导出为正常的ResNet,这也是equivariant model能够存在的意义。参见:https://quva-lab.github.io/e2cnn/api/e2cnn.nn.html#e2cnn.nn.EquivariantModule.export
但目前由于ReDet混合了planar CNN (detection head)和 rotation equivariant CNN(backbone, FPN),因此无法直接导出为planar CNN。
如果要实现推理速度与原版的一致,可以:
我们的方法证明了旋转等变网络在检测任务上的有效性,此处的旋转等变网络不仅仅局限于e2cnn。由于精力有限,我们目前没有计划进一步优化运行速度。
一定需要在FPN加入大量e2cnn的op降低速度么?不知道你们有没有做过在常规的RRoIAlign模型仅加入Rotation-invariant layer(switch channels)的ablation experiments来考量后续这个layer的引入对性能的提升效果。我在paper仅看到你们比较的是RROIAlign和你们混合e2cnn的FPN和switch channel layer的RiROIAlign,这样的结果超越RROIAlign也符合你们的设计。 另外,常规的RROIAlign是不是也能满足Rotation-equivariant feature,我对这块的定义可能不是太了解。如果可以满足,我觉得仅加入后续的switch channel layer就能够满足对Rotation-invariant的要求了。期待你的回复~
switch channels中channel指的是rotation-equivariant feature中的orientation dimension。
ReDet之所以是rotation-invariant的,是因为RoIAlign前的所有层都满足equivariance,包括ResNet和FPN。 只有这样,才能用switch channels对来自不同orientation的feature进行对齐,才能实现rotation-invariant。
Rotation equivariance+RRoIAlign在我们的论文中有体现,更换RiRoIAlign后有0.3-0.8 mAP的提升。
用DOTAv1.5试了下你们的模型,总体感觉:你们的paper上没有系统的去评价模型的FPS,虽然总体的参数量下降了,但是训练速度太慢了,模型的推理速度也挺慢的。请问对于这样的模型,你们有什么提升速度上个的技巧?理论上这样的一个模块可以移植到EfficientNet,然后用来做Backbone?