Using HourGlass Network pretrained on human pose in a similar scenario such as calling models.resnet18()

Could you please guide me how to use an HourGlass Network here that is pretrained on human pose instead of this ResNet18?

num_classes = 4 * 2 #4 coordinates X and Y flattened --> 4 of 2D keypoints or landmarks

class Network(nn.Module):
    def __init__(self,num_classes=8):
        super().__init__()
        self.model_name = 'resnet18'
        self.model = models.resnet18()
        self.model.fc = nn.Linear(self.model.fc.in_features, num_classes)
        
    def forward(self, x):
        x = x.float()
        out = self.model(x)
        return out

For example, I found this Stacked Hourglass code for facial landmark detection which is a similar problem. How can I use it in my own PyTorch code such as I am calling models.resnet18()? Also, are there more standard implementations of Stacked hourglass network since it is a pretty much famous network (or any other baseline for human pose estimation with pretraining enabled)?

Here’s another Hourglass code I found in PyTorch https://github.com/bearpaw/pytorch-pose/blob/master/pose/models/hourglass.py

Hi,

You just need to instantiate the desired model for instance self.model = HourGlass(args). Also, you need to load weights and state dict which you can find it here. (note that do not set model in eval mode)

But as you might know, in the following line,

        self.model.fc = nn.Linear(self.model.fc.in_features, num_classes)

the author replaces last linear layer to match their desired number of output classes. In your case, you need to find model definition (you can use this thread), and the change the appropriate layer based on the model definition.

Unfortunately I don’t know any implemenation of HourGlass.

Let me know if you had any troubles.

Bests