Hi all,
I am doing face detection with MTCNN - I have the ‘original’ network, and a ‘pruned’ network (i.e. structured pruning, so it’s definitely smaller).
The issue I’m having is that I’m not seeing any speed differences between the two networks during inference. I am simply trying a  few images at a time on my CPU. The network structures are below; has anybody encountered anything similar?:
Pruned (execution time: 1.0987770557403564)
<bound method Module.parameters of MTCNN(
  (pnet): PNet(
    (conv1): Conv2d(3, 8, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=8)
    (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(8, 7, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=7)
    (conv3): Conv2d(7, 13, kernel_size=(3, 3), stride=(1, 1))
    (prelu3): PReLU(num_parameters=13)
    (conv4_1): Conv2d(13, 2, kernel_size=(1, 1), stride=(1, 1))
    (softmax4_1): Softmax(dim=1)
    (conv4_2): Conv2d(13, 4, kernel_size=(1, 1), stride=(1, 1))
  )
  (rnet): RNet(
    (conv1): Conv2d(3, 11, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=11)
    (pool1): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(11, 25, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=25)
    (pool2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv3): Conv2d(25, 24, kernel_size=(2, 2), stride=(1, 1))
    (prelu3): PReLU(num_parameters=24)
    (dense4): Linear(in_features=216, out_features=128, bias=True)
    (prelu4): PReLU(num_parameters=128)
    (dense5_1): Linear(in_features=128, out_features=2, bias=True)
    (softmax5_1): Softmax(dim=1)
    (dense5_2): Linear(in_features=128, out_features=4, bias=True)
  )
  (onet): ONet(
    (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=32)
    (pool1): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=64)
    (pool2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1))
    (prelu3): PReLU(num_parameters=64)
    (pool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv4): Conv2d(64, 128, kernel_size=(2, 2), stride=(1, 1))
    (prelu4): PReLU(num_parameters=128)
    (dense5): Linear(in_features=1152, out_features=256, bias=True)
    (prelu5): PReLU(num_parameters=256)
    (dense6_1): Linear(in_features=256, out_features=2, bias=True)
    (softmax6_1): Softmax(dim=1)
    (dense6_2): Linear(in_features=256, out_features=4, bias=True)
    (dense6_3): Linear(in_features=256, out_features=10, bias=True)
  )
)>


Unpruned (execution time: 0.7370638847351074)
<bound method Module.parameters of MTCNN(
  (pnet): PNet(
    (conv1): Conv2d(3, 10, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=10)
    (pool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(10, 16, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=16)
    (conv3): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1))
    (prelu3): PReLU(num_parameters=32)
    (conv4_1): Conv2d(32, 2, kernel_size=(1, 1), stride=(1, 1))
    (softmax4_1): Softmax(dim=1)
    (conv4_2): Conv2d(32, 4, kernel_size=(1, 1), stride=(1, 1))
  )
  (rnet): RNet(
    (conv1): Conv2d(3, 28, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=28)
    (pool1): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(28, 48, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=48)
    (pool2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv3): Conv2d(48, 64, kernel_size=(2, 2), stride=(1, 1))
    (prelu3): PReLU(num_parameters=64)
    (dense4): Linear(in_features=576, out_features=128, bias=True)
    (prelu4): PReLU(num_parameters=128)
    (dense5_1): Linear(in_features=128, out_features=2, bias=True)
    (softmax5_1): Softmax(dim=1)
    (dense5_2): Linear(in_features=128, out_features=4, bias=True)
  )
  (onet): ONet(
    (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(1, 1))
    (prelu1): PReLU(num_parameters=32)
    (pool1): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))
    (prelu2): PReLU(num_parameters=64)
    (pool2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1))
    (prelu3): PReLU(num_parameters=64)
    (pool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=True)
    (conv4): Conv2d(64, 128, kernel_size=(2, 2), stride=(1, 1))
    (prelu4): PReLU(num_parameters=128)
    (dense5): Linear(in_features=1152, out_features=256, bias=True)
    (prelu5): PReLU(num_parameters=256)
    (dense6_1): Linear(in_features=256, out_features=2, bias=True)
    (softmax6_1): Softmax(dim=1)
    (dense6_2): Linear(in_features=256, out_features=4, bias=True)
    (dense6_3): Linear(in_features=256, out_features=10, bias=True)
  )
)>