yolov7_d2 icon indicating copy to clipboard operation
yolov7_d2 copied to clipboard

encoder_sparseinst.py 中MyAdaptiveAvgPool2d函数疑似代码bug

Open LuoxiaofeiFly opened this issue 2 years ago • 1 comments

(https://github.com/jinfagang/yolov7/blob/main/yolov7/modeling/transcoders/encoder_sparseinst.py) 这个文件中的30-33行缩进出问题了,elif isinstance(self.sz, list) or isinstance(self.sz, tuple):应该和elif isinstance(self.sz, list) or isinstance(self.sz, tuple):对齐。

class MyAdaptiveAvgPool2d(nn.Module): def init(self, sz=None): super().init() self.sz = sz

def forward(self, x):
    inp_size = x.size()
    kernel_width, kernel_height = inp_size[2], inp_size[3]
    if self.sz is not None:
        if isinstance(self.sz, int):
            kernel_width = math.ceil(inp_size[2] / self.sz)
            kernel_height = math.ceil(inp_size[3] / self.sz)
    elif isinstance(self.sz, list) or isinstance(self.sz, tuple):
        assert len(self.sz) == 2
        kernel_width = math.ceil(inp_size[2] / self.sz[0])
        kernel_height = math.ceil(inp_size[3] / self.sz[1])
    if torch.is_tensor(kernel_width):
        kernel_width = kernel_width.item()
        kernel_height = kernel_height.item()
    return F.avg_pool2d(
        input=x, ceil_mode=False, kernel_size=(kernel_width, kernel_height)
    )

LuoxiaofeiFly avatar Jun 23 '22 03:06 LuoxiaofeiFly

@LuoxiaofeiFly 你的确发现了一个BUG,可以给主仓库提交一个PR修正以下这个地方么?看起来似乎不影响运行,但在onnx export的时候恐容易崩

lucasjinreal avatar Jun 23 '22 04:06 lucasjinreal