「分析」SPP特徴ピラミッドシリーズ

ここに画像の説明を挿入

CNN モデルの場合、次の 2 つの部分に分割できます。

畳み込み層、活性化関数層、プーリング層を含む特徴抽出ネットワーク(以下、CNN_Preと呼びます)、

次の完全に接続されたネットワーク (以下、CNN_Post と呼びます)。

多くの CNN モデルには入力画像のサイズに関する要件があります。実際、CNN_Pre には入力画像に関する要件はありません。単純に画像を固定倍数で縮小すると考えることができますが、CNN_Post には入力次元に関する要件があります。

SPP: 空間ピラミッド プーリング。CNN_Pre によって出力される特徴マップのサイズに関係なく、固定次元を出力して CNN_Post に渡すことができます。

SPP の本質は多層マックスプールですが、それは異なるサイズ a a の特徴マップに対して固定サイズ n nの出力を生成するだけです。

ここに画像の説明を挿入

ここに画像の説明を挿入

変換モジュール

class Conv(nn.Module):
    # Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation)
    default_act = nn.SiLU()  # default activation

    def __init__(self, c1, c2, k=1, s=1, p=None, g=1, d=1, act=True):
        super().__init__()
        self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=g, dilation=d, bias=False)
        self.bn = nn.BatchNorm2d(c2)
        self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity()

    def forward(self, x):
        return self.act(self.bn(self.conv(x)))

    def forward_fuse(self, x):
        return self.act(self.conv(x))

おすすめ

転載: blog.csdn.net/ViatorSun/article/details/129846468