SPP和SPPF的比较

SPP的结构是将输入并行通过多个不同大小的MaxPool层,然后做进一步融合,能在一定程度上解决多尺度问题。

而SPPF结构则是讲输入串行通过多个5*5的MaxPool层,这里需要注意两个5*5的MaxPool层和一个9*9的MaxPool的计算结果是一样的,而串行三个5*5的MaxPool层和一个13*13的MaxPool层计算结果是一样的。

做个实验对比一下:

复制代码
import time
import torch
import torch.nn as nn

class SPP(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool1 = nn.MaxPool2d(5, 1, padding=2)
        self.maxpool2 = nn.MaxPool2d(9, 1, padding=4)
        self.maxpool3 = nn.MaxPool2d(13, 1, padding=6)

    def forward(self, x):
        o1 = self.maxpool1(x)
        o2 = self.maxpool2(x)
        o3 = self.maxpool3(x)
        return torch.cat([x, o1, o2, o3], dim=1)
    
class SPPF(nn.Module):
    def __init__(self):
        super().__init__()
        self.maxpool = nn.MaxPool2d(5, 1, padding=2)

    def forward(self, x):
        o1 = self.maxpool(x)
        o2 = self.maxpool(o1)
        o3 = self.maxpool(o2)
        return torch.cat([x, o1, o2, o3], dim=1)
    
def main():
    input_tensor = torch.rand(8, 32, 16, 16)
    spp = SPP()
    sppf = SPPF()
    output1 = spp(input_tensor)
    output2 = sppf(input_tensor)

    print(torch.equal(output1, output2))

    t_start = time.time()
    for _ in range(100):
        spp(input_tensor)
    print(f"spp time : {time.time()- t_start}")

    t_start = time.time()
    for _ in range(100):
        sppf(input_tensor)
    print(f"sppf time : {time.time()- t_start}")

if __name__== '__main__':
    main()

最终输出为:

通过对比发现,两者的计算结果是一模一样的,但是计算时间SPPF比SPP快乐两倍多。

相关推荐
HIT_Weston1 分钟前
77、【Agent】【OpenCode】bash 工具提示词(持久化)(一)
人工智能·agent·opencode
j_xxx404_1 分钟前
Linux共享内存原理与实战:从内核到C++实现|附源码
linux·运维·开发语言·c++·人工智能
无敌的六边形狗勾战士2 分钟前
重温DIRE:走向通用人工智能生成的图像检测
人工智能
Master_oid6 分钟前
机器学习41:利用KNN算法实现手写数字识别
深度学习·算法·机器学习
云天AI实战派9 分钟前
ChatGPT / Realtime API / 智能体故障排查指南:语音模型、浏览器会话与权限问题全流程解决方案
人工智能·chatgpt
agicall.com10 分钟前
信电助 - 信创坐席盒 UB-B-XC 型号功能列表
人工智能·语音识别·信创电话助手·座机语音转文字·固话录音转文字
数据与后端架构提升之路13 分钟前
深度学习性能调优全景指南:数据、计算、显存、通信四大瓶颈的破局之道
深度学习·gpu·性能调优
夜影风14 分钟前
Prompt提示词工程化:用LangChain把提示词从字符串变成资产
人工智能·langchain·ai agent
土星云SaturnCloud14 分钟前
防爆边缘计算+工业视频智能分析:高危场景视觉安全闭环,落地架构与场景全解
服务器·人工智能·ai·边缘计算
周末也要写八哥15 分钟前
开发者如何快速实现一个NLP模型?
人工智能·自然语言处理