input: md --- maximum displacement (for correlation. default: 4), after warpping
(self, md=4)
| 41 | |
| 42 | """ |
| 43 | def __init__(self, md=4): |
| 44 | """ |
| 45 | input: md --- maximum displacement (for correlation. default: 4), after warpping |
| 46 | |
| 47 | """ |
| 48 | super(PWCDCNet,self).__init__() |
| 49 | |
| 50 | self.conv1a = conv(3, 16, kernel_size=3, stride=2) |
| 51 | self.conv1aa = conv(16, 16, kernel_size=3, stride=1) |
| 52 | self.conv1b = conv(16, 16, kernel_size=3, stride=1) |
| 53 | self.conv2a = conv(16, 32, kernel_size=3, stride=2) |
| 54 | self.conv2aa = conv(32, 32, kernel_size=3, stride=1) |
| 55 | self.conv2b = conv(32, 32, kernel_size=3, stride=1) |
| 56 | self.conv3a = conv(32, 64, kernel_size=3, stride=2) |
| 57 | self.conv3aa = conv(64, 64, kernel_size=3, stride=1) |
| 58 | self.conv3b = conv(64, 64, kernel_size=3, stride=1) |
| 59 | self.conv4a = conv(64, 96, kernel_size=3, stride=2) |
| 60 | self.conv4aa = conv(96, 96, kernel_size=3, stride=1) |
| 61 | self.conv4b = conv(96, 96, kernel_size=3, stride=1) |
| 62 | self.conv5a = conv(96, 128, kernel_size=3, stride=2) |
| 63 | self.conv5aa = conv(128,128, kernel_size=3, stride=1) |
| 64 | self.conv5b = conv(128,128, kernel_size=3, stride=1) |
| 65 | self.conv6aa = conv(128,196, kernel_size=3, stride=2) |
| 66 | self.conv6a = conv(196,196, kernel_size=3, stride=1) |
| 67 | self.conv6b = conv(196,196, kernel_size=3, stride=1) |
| 68 | |
| 69 | self.corr = Correlation(pad_size=md, kernel_size=1, max_displacement=md, stride1=1, stride2=1, corr_multiply=1) |
| 70 | self.leakyRELU = nn.LeakyReLU(0.1) |
| 71 | |
| 72 | nd = (2*md+1)**2 |
| 73 | dd = np.cumsum([128,128,96,64,32],dtype=np.int32).astype(np.int) |
| 74 | dd = [int(d) for d in dd] |
| 75 | |
| 76 | od = nd |
| 77 | self.conv6_0 = conv(od, 128, kernel_size=3, stride=1) |
| 78 | self.conv6_1 = conv(od+dd[0],128, kernel_size=3, stride=1) |
| 79 | self.conv6_2 = conv(od+dd[1],96, kernel_size=3, stride=1) |
| 80 | self.conv6_3 = conv(od+dd[2],64, kernel_size=3, stride=1) |
| 81 | self.conv6_4 = conv(od+dd[3],32, kernel_size=3, stride=1) |
| 82 | self.predict_flow6 = predict_flow(od+dd[4]) |
| 83 | self.deconv6 = deconv(2, 2, kernel_size=4, stride=2, padding=1) |
| 84 | self.upfeat6 = deconv(od+dd[4], 2, kernel_size=4, stride=2, padding=1) |
| 85 | |
| 86 | od = nd+128+4 |
| 87 | self.conv5_0 = conv(od, 128, kernel_size=3, stride=1) |
| 88 | self.conv5_1 = conv(od+dd[0],128, kernel_size=3, stride=1) |
| 89 | self.conv5_2 = conv(od+dd[1],96, kernel_size=3, stride=1) |
| 90 | self.conv5_3 = conv(od+dd[2],64, kernel_size=3, stride=1) |
| 91 | self.conv5_4 = conv(od+dd[3],32, kernel_size=3, stride=1) |
| 92 | self.predict_flow5 = predict_flow(od+dd[4]) |
| 93 | self.deconv5 = deconv(2, 2, kernel_size=4, stride=2, padding=1) |
| 94 | self.upfeat5 = deconv(od+dd[4], 2, kernel_size=4, stride=2, padding=1) |
| 95 | |
| 96 | od = nd+96+4 |
| 97 | self.conv4_0 = conv(od, 128, kernel_size=3, stride=1) |
| 98 | self.conv4_1 = conv(od+dd[0],128, kernel_size=3, stride=1) |
| 99 | self.conv4_2 = conv(od+dd[1],96, kernel_size=3, stride=1) |
| 100 | self.conv4_3 = conv(od+dd[2],64, kernel_size=3, stride=1) |
no test coverage detected