To change the number of input channels in the first layer, you could just assign a new nn.Conv2d layer:
model = models.vgg16()
model.features[0] = nn.Conv2d(12, 64, 3, 1, 1)
x = torch.randn(1, 12, 64, 64)
output = model(x)

If you want to copy the pretrained weights from the original first layer, you could do so after reassigning the new layer.
I’m not sure, how you would want to initialize the first 12 layers with the weights of the first one, as the shapes of the kernels are different. Could you explain your use case a bit more?