示例#1
0
def main():
    parser = argparse.ArgumentParser(
        description="PyTorch DeeplabV3Plus Training")
    parser.add_argument('config_file', help='config file path')
    parser.add_argument(
        "opts",
        help="Modify config options using the command-line",
        default=None,
        nargs=argparse.REMAINDER,
    )

    args = parser.parse_args()

    cfg = get_cfg_defaults()
    cfg.merge_from_file(args.config_file)
    cfg.merge_from_list(args.opts)
    print(cfg)

    torch.manual_seed(cfg.SYSTEM.SEED)
    trainer = Trainer(cfg)

    for epoch in range(cfg.TRAIN.START_EPOCH, cfg.TRAIN.EPOCHS):
        trainer.training(epoch)

    trainer.writer.close()
示例#2
0
            if k in state_dict:
                model_dict[k] = v
        state_dict.update(model_dict)
        self.load_state_dict(state_dict)

    def _initialize_weights(self):
        for m in self.modules():
            if isinstance(m, nn.Conv2d):
                # n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
                # m.weight.data.normal_(0, math.sqrt(2. / n))
                torch.nn.init.kaiming_normal_(m.weight)
            elif isinstance(m, SynchronizedBatchNorm2d):
                m.weight.data.fill_(1)
                m.bias.data.zero_()
            elif isinstance(m, nn.BatchNorm2d):
                m.weight.data.fill_(1)
                m.bias.data.zero_()


if __name__ == "__main__":
    from deeplab3.config.defaults import get_cfg_defaults
    cfg = get_cfg_defaults()
    cfg.merge_from_list(
        ['MODEL.BACKBONE_ZOO', True, 'MODEL.INPUT_CHANNELS', 3])

    input = torch.rand(1, 3, 512, 512)
    model = MobileNetV2(cfg, BatchNorm=nn.BatchNorm2d)
    output, low_level_feat = model(input)
    print(output.size())
    print(low_level_feat.size())
示例#3
0
_C.MODEL.RESNETS.STEM_OUT_CHANNELS = 64

# Apply Deformable Convolution in stages
# Specify if apply deform_conv on Res2, Res3, Res4, Res5
_C.MODEL.RESNETS.DEFORM_ON_PER_STAGE = [False, False, False, False]
# Use True to use modulated deform_conv (DeformableV2, https://arxiv.org/abs/1811.11168);
# Use False for DeformableV1.
_C.MODEL.RESNETS.DEFORM_MODULATED = False
# Number of groups in deformable conv.
_C.MODEL.RESNETS.DEFORM_NUM_GROUPS = 1

# ---------------------------------------------------------------------------- #
# Deeplab Backbone options
# These options apply to networks imported from saved pytorch-deeplab-xception models
# ---------------------------------------------------------------------------- #
_C.MODEL.DEEPLAB = CN(get_cfg_defaults())

# ---------------------------------------------------------------------------- #
# Solver
# ---------------------------------------------------------------------------- #
_C.SOLVER = CN()

# Which optimizer to use [adamw, sgd]
_C.SOLVER.OPTIMIZER = "adamw"

# See detectron2/solver/build.py for LR scheduler options
_C.SOLVER.LR_SCHEDULER_NAME = "WarmupMultiStepLR"

_C.SOLVER.MAX_ITER = 40000

_C.SOLVER.BASE_LR = 0.001
import scipy.stats
import numpy as np
from tqdm import tqdm

from PIL import Image

from deeplab3.config.defaults import get_cfg_defaults
from dataloaders.utils import sample_distribution

from dataloaders.datasets.cityscapes import CityscapesSegmentation
from dataloaders.datasets.coco import COCOSegmentation
from dataloaders.datasets.sunrgbd import RGBDSegmentation

from dataloaders.SampleLoader import SampleLoader

city_rgbd = get_cfg_defaults()
city_rgbd.merge_from_file('configs/cityscapes_rgbd.yaml')
city_rgbd.merge_from_list([
    'DATASET.ROOT', 'datasets/cityscapes/', 'DATASET.CITYSCAPES.DEPTH_DIR',
    'completed_depth'
])

sunrgbd_rgbd = get_cfg_defaults()
sunrgbd_rgbd.merge_from_file('configs/sunrgbd.yaml')
sunrgbd_rgbd.merge_from_list(['DATASET.ROOT', 'datasets/SUNRGBD/'])

sunrgbd_rgbd_dist_train = sample_distribution(RGBDSegmentation(sunrgbd_rgbd,
                                                               split='train'),
                                              n=100)
sunrgbd_rgbd_dist_test = sample_distribution(RGBDSegmentation(sunrgbd_rgbd,
                                                              split='test'),