pytorch的caffe最大池化时的区别

caffe的PoolingLayer有round_mode与pytorch MaxPooling中的ceil_mode对应,不过caffe里面默认是ceil,而pytorch默认是false。
yolov5中spp 层的 maxpool ceil mode 都是默认的 false 状态,而海思里的 caffe 只支持 ceil mode 方式,所以要改成 ceil mode = True 。模型训练好,离线测试精度很高,但模型转完caffe和wk后,测试结果有差异.

yolov5中修改SPP中对应的该参数:
yolov5/models/common.py

class SPP(nn.Module):
    # Spatial pyramid pooling layer used in YOLOv3-SPP
    def __init__(self, c1, c2, k=(5, 9, 13)):
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1)
        # self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k])
        self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2, ceil_mode=True) for x in k])

你可能感兴趣的:(caffe,pytorch,深度学习)