提取自Shufflenet v2
1. Equal channel width minimizes memory access cost (MAC). 在网络设计时尽量使输入输出的通道数相同以减少MAC,降低计算瓶颈并提高推理速度。
(这一点,现在的SoAT网络结构确实已经可以看到这种思想的趋势,比如CSP-ResNe(X)t,CSP-DarkNet中取消bottleneck的操作, etc.)
2. Excessive group convolution increases MAC. 由于能够减少FLOPs,分组卷积自ResNeXt以来成为了很多网络设计的核心单元。但是过多地使用分组卷积会增加MAC。
(设计网络时需要考虑使用场景,若需要较小的MAC以及需要从网络的层面提升推理速度时,应该要权衡分组卷积的使用频率。)
3. Network fragmentation reduces degree of parallelism. 网络过度地“碎片化”会降低计算的并行度。
(比如Inception系列中的block(尤其是V3之前的版本)重复度不高,并且block内部结构不相同,这相比于ResNe(X)t系列来说,除了显得不那么优雅之外,会增加很多碎片化地操作,而不是大量的相同操作,这样使得计算并行度降低。这样,随着网络加深,即使网络能够很好地避免梯度问题,但其推理速度会下降。)
4. Element-wise operations are non-negligible. Element-wise操作,比如非线性激活函数、张量相加、添加偏置以及depthwise conv等,相比于卷积操作来说其计算量小很多,但是也是不能忽略的,在设计网络时应该要考虑这些因素。