|
|
@@ -3,9 +3,11 @@ |
|
|
|
from utils.utils import * |
|
|
|
|
|
|
|
|
|
|
|
def autopad(k): |
|
|
|
def autopad(k, p=None): # kernel, padding |
|
|
|
# Pad to 'same' |
|
|
|
return k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad |
|
|
|
if p is None: |
|
|
|
p = k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad |
|
|
|
return p |
|
|
|
|
|
|
|
|
|
|
|
def DWConv(c1, c2, k=1, s=1, act=True): |
|
|
@@ -17,7 +19,7 @@ class Conv(nn.Module): |
|
|
|
# Standard convolution |
|
|
|
def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups |
|
|
|
super(Conv, self).__init__() |
|
|
|
self.conv = nn.Conv2d(c1, c2, k, s, p or autopad(k), groups=g, bias=False) |
|
|
|
self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) |
|
|
|
self.bn = nn.BatchNorm2d(c2) |
|
|
|
self.act = nn.LeakyReLU(0.1, inplace=True) if act else nn.Identity() |
|
|
|
|