ooooverflow / BiSeNet

BiSeNet based on pytorch
394 stars 77 forks source link

I think this version is not very stable. #16

Closed YuGuii closed 5 years ago

YuGuii commented 5 years ago

When I first trained, the training data(MIOU) was normal. but second, miou has been fixed at around 0.12, I thought for a long time but did't solve this problem. So, I want to ask if you have encountered this problem.

REFunction commented 5 years ago

What is mIoU when you say "normal"? I am training

REFunction commented 5 years ago

I have got 0.38 mIoU

YuGuii commented 5 years ago

What is mIoU when you say "normal"? I am training

0.56 miou

REFunction commented 5 years ago

What is mIoU when you say "normal"? I am training

0.56 miou

Did you change any hyper-parameters? Or just keep them original?

YuGuii commented 5 years ago

What is mIoU when you say "normal"? I am training

0.56 miou

Did you change any hyper-parameters? Or just keep them original?

Below is my hyperparameter settings:

if __name__ == '__main__':
    params = [
        '--num_epochs', '300',
        '--data', 'data/CamVid',
        '--learning_rate', '0.001',
        '--num_classes', '32',
        '--num_workers', '6', 
        '--batch_size', '4',
        '--crop_height', '640',
        '--crop_width', '640',
        '--checkpoint_step', '5',
        '--context_path', 'resnet34'
    ]

I use the resnet34 as my Basemodel and add Kaiming initialization,

for example:

class Spatial_path(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.convblock1 = ConvBlock(in_channels=3, out_channels=64)
        self.convblock2 = ConvBlock(in_channels=64, out_channels=128)
        self.convblock3 = ConvBlock(in_channels=128, out_channels=256)
        self.init_weight()

    def forward(self, input):
        x = self.convblock1(input)
        x = self.convblock2(x)
        x = self.convblock3(x)
        return x

    def init_weight(self):
        for ly in self.children():
            if isinstance(ly, nn.Conv2d):
                nn.init.kaiming_normal_(ly.weight, a=1)
                if not ly.bias is None: nn.init.constant_(ly.bias, 0)    

The settings of other modules are the same as this one. I am not sure if these operations will help you.

REFunction commented 5 years ago

What is mIoU when you say "normal"? I am training

0.56 miou

Did you change any hyper-parameters? Or just keep them original?

Below is my hyperparameter settings:

if __name__ == '__main__':
    params = [
        '--num_epochs', '300',
        '--data', 'data/CamVid',
        '--learning_rate', '0.001',
        '--num_classes', '32',
        '--num_workers', '6', 
        '--batch_size', '4',
        '--crop_height', '640',
        '--crop_width', '640',
        '--checkpoint_step', '5',
        '--context_path', 'resnet34'
    ]

I use the resnet34 as my Basemodel and add Kaiming initialization,

for example:

class Spatial_path(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.convblock1 = ConvBlock(in_channels=3, out_channels=64)
        self.convblock2 = ConvBlock(in_channels=64, out_channels=128)
        self.convblock3 = ConvBlock(in_channels=128, out_channels=256)
        self.init_weight()

    def forward(self, input):
        x = self.convblock1(input)
        x = self.convblock2(x)
        x = self.convblock3(x)
        return x

    def init_weight(self):
        for ly in self.children():
            if isinstance(ly, nn.Conv2d):
                nn.init.kaiming_normal_(ly.weight, a=1)
                if not ly.bias is None: nn.init.constant_(ly.bias, 0)    

The settings of other modules are the same as this one. I am not sure if these operations will help you.

Thank you for your help. I would like to have a try.

kjjeong78 commented 5 years ago

I have got a similar result on the main page. However, my mIoU is 0.366. ;)