File models/pacnn.py changed (mode: 100644) (index 6ccb98e..82897d0) |
... |
... |
class PACNN(nn.Module): |
31 |
31 |
|
|
32 |
32 |
|
|
33 |
33 |
class PACNNWithPerspectiveMap(nn.Module): |
class PACNNWithPerspectiveMap(nn.Module): |
34 |
|
def __init__(self): |
|
|
34 |
|
def __init__(self, perspective_aware_mode=False): |
35 |
35 |
super(PACNNWithPerspectiveMap, self).__init__() |
super(PACNNWithPerspectiveMap, self).__init__() |
36 |
36 |
self.backbone = models.vgg16(pretrained=True).features |
self.backbone = models.vgg16(pretrained=True).features |
37 |
37 |
self.de1net = self.backbone[0:23] |
self.de1net = self.backbone[0:23] |
|
... |
... |
class PACNNWithPerspectiveMap(nn.Module): |
56 |
56 |
self.perspective_11 = nn.Conv2d(512, 1, kernel_size=1) |
self.perspective_11 = nn.Conv2d(512, 1, kernel_size=1) |
57 |
57 |
|
|
58 |
58 |
# deconvolution upsampling |
# deconvolution upsampling |
59 |
|
self.up12 = nn.ConvTranspose2d(512, 1, 2, 2) |
|
60 |
|
self.up23 = nn.ConvTranspose2d(512, 1, 2, 2) |
|
61 |
|
self.up_perspective = nn.ConvTranspose2d(512, 1, 2, 2) |
|
|
59 |
|
self.up12 = nn.ConvTranspose2d(1, 1, 2, 2) |
|
60 |
|
self.up23 = nn.ConvTranspose2d(1, 1, 2, 2) |
|
61 |
|
self.up_perspective = nn.ConvTranspose2d(1, 1, 2, 2) |
62 |
62 |
|
|
63 |
63 |
# if true, use perspective aware |
# if true, use perspective aware |
64 |
64 |
# if false, use average |
# if false, use average |
65 |
|
self.perspective_aware_mode = False |
|
|
65 |
|
self.perspective_aware_mode = perspective_aware_mode |
66 |
66 |
|
|
67 |
67 |
def forward(self, x): |
def forward(self, x): |
68 |
68 |
de1 = self.de1_11((self.de1net(x))) |
de1 = self.de1_11((self.de1net(x))) |
|
... |
... |
class PACNNWithPerspectiveMap(nn.Module): |
73 |
73 |
pespective_w = self.up_perspective(pespective_w_s) |
pespective_w = self.up_perspective(pespective_w_s) |
74 |
74 |
# TODO: code more here |
# TODO: code more here |
75 |
75 |
de23 = pespective_w_s * de2 + (1 - pespective_w_s)*(de2 + self.up23(de3)) |
de23 = pespective_w_s * de2 + (1 - pespective_w_s)*(de2 + self.up23(de3)) |
76 |
|
de = pespective_w * de1 + (1 - pespective_w)*(de2 + self.up12(de23)) |
|
|
76 |
|
de = pespective_w * de1 + (1 - pespective_w)*(de1 + self.up12(de23)) |
77 |
77 |
else: |
else: |
78 |
78 |
de23 = (de2 + self.up23(de3))/2 |
de23 = (de2 + self.up23(de3))/2 |
79 |
79 |
de = (de1 + self.up12(de23))/2 |
de = (de1 + self.up12(de23))/2 |
File models/test_PACNNWithPerspectiveMap.py added (mode: 100644) (index 0000000..cd3eab6) |
|
1 |
|
from unittest import TestCase |
|
2 |
|
from models.pacnn import PACNNWithPerspectiveMap |
|
3 |
|
import torch |
|
4 |
|
|
|
5 |
|
class TestPACNNWithPerspectiveMap(TestCase): |
|
6 |
|
|
|
7 |
|
def test_avg_schema_pacnn(self): |
|
8 |
|
net = PACNNWithPerspectiveMap() |
|
9 |
|
# image |
|
10 |
|
# batch size, channel, h, w |
|
11 |
|
image = torch.rand(1, 3, 224, 224) |
|
12 |
|
density_map = net(image) |
|
13 |
|
print(density_map.size()) |
|
14 |
|
|
|
15 |
|
def test_perspective_aware_schema_pacnn(self): |
|
16 |
|
net = PACNNWithPerspectiveMap(perspective_aware_mode=True) |
|
17 |
|
# image |
|
18 |
|
# batch size, channel, h, w |
|
19 |
|
image = torch.rand(1, 3, 224, 224) |
|
20 |
|
density_map = net(image) |
|
21 |
|
print(density_map.size()) |