示例#1
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__(config, kwargs)
        self.opt = opt
        # cfgfile = 'yolo-voc.cfg'
        # self.detector = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
        # in_features = self.detector.roi_heads.box_predictor.cls_score.in_features
        #
        # # replace the pre-trained head with a new one
        # self.detector.roi_heads.box_predictor = FastRCNNPredictor(in_features, config.DATA.NUM_CLASSESS + 1)
        self.detector = yolov4(inference=True,
                               n_classes=config.DATA.NUM_CLASSESS)

        # """
        # 预训练模型
        # """
        # pretrained_dict = torch.load('pretrained/yolov4.pth')
        # self.detector.load_state_dict(pretrained_dict)

        self.yolov4loss = Yolo_loss(device=opt.device, batch=opt.batch_size)
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        if opt.debug:
            print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)
示例#2
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__()
        self.opt = opt
        self.logger = logger

        # 根据YoloV2和YoloV3使用不同的配置文件
        if opt.model == 'Yolo2':
            cfgfile = 'configs/yolo2-voc.cfg'
        elif opt.model == 'Yolo3':
            cfgfile = 'configs/yolo3-coco.cfg'

        # 初始化detector
        self.detector = Darknet(cfgfile, device=opt.device).to(opt.device)
        print_network(self.detector, logger=logger)

        # 在--load之前加载weights文件(可选)
        if opt.weights:
            utils.color_print('Load Yolo weights from %s.' % opt.weights, 3)
            self.detector.load_weights(opt.weights)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#3
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        self.classifier = Classifier()  #.cuda(device=opt.device)
        #####################
        #    Init weights
        #####################
        # self.classifier.apply(weights_init)

        print_network(self.classifier)

        self.optimizer = optim.Adam(self.classifier.parameters(),
                                    lr=opt.lr,
                                    betas=(0.95, 0.999))

        # load networks
        if opt.load:
            pretrained_path = opt.load
            self.load_network(self.classifier, 'G', opt.which_epoch,
                              pretrained_path)
            # if self.training:
            #     self.load_network(self.discriminitor, 'D', opt.which_epoch, pretrained_path)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#4
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__()
        self.opt = opt
        self.logger = logger

        kargs = {}
        if opt.scale:
            min_size = opt.scale
            max_size = int(min_size / 3 * 4)
            kargs = {
                'min_size': min_size,
                'max_size': max_size,
            }

        kargs.update({'box_nms_thresh': nms_thresh})

        # 定义backbone和Faster RCNN模型
        if opt.backbone is None or opt.backbone.lower() in [
                'res50', 'resnet50'
        ]:
            # 默认是带fpn的resnet50
            self.detector = fasterrcnn_resnet50_fpn(pretrained=False, **kargs)

            in_features = self.detector.roi_heads.box_predictor.cls_score.in_features

            # replace the pre-trained head with a new one
            self.detector.roi_heads.box_predictor = FastRCNNPredictor(
                in_features, opt.num_classes + 1)

        elif opt.backbone.lower() in ['vgg16', 'vgg']:
            backbone = vgg16_backbone()
            self.detector = FasterRCNN(backbone,
                                       num_classes=opt.num_classes + 1,
                                       **kargs)

        elif opt.backbone.lower() in ['res101', 'resnet101']:
            # 不带FPN的resnet101
            backbone = res101_backbone()
            self.detector = FasterRCNN(backbone,
                                       num_classes=opt.num_classes + 1,
                                       **kargs)

        elif opt.backbone.lower() in ['res', 'resnet']:
            raise RuntimeError(
                f'backbone "{opt.backbone}" is ambiguous, please specify layers.'
            )

        else:
            raise NotImplementedError(f'no such backbone: {opt.backbone}')

        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#5
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        self.classifier = Classifier(opt.model)
        # self.classifier.apply(weights_init)  # 初始化权重

        print_network(self.classifier)

        self.optimizer = get_optimizer(opt, self.classifier)
        self.scheduler = get_scheduler(opt, self.optimizer)
示例#6
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        self.cleaner = FFA().to(device=opt.device)
        #####################
        #    Init weights
        #####################
        # normal_init(self.cleaner)

        print_network(self.cleaner)

        self.g_optimizer = get_optimizer(opt, self.cleaner)
        self.scheduler = get_scheduler(opt, self.g_optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#7
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__(config, kwargs)
        self.opt = opt
        self.detector = get_net().to(device=opt.device)
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        if opt.debug:
            print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)
示例#8
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        self.detector = torchvision.models.detection.fasterrcnn_resnet50_fpn(
            pretrained=False)
        # self.detector = FasterRCNN_VGG()
        in_features = self.detector.roi_heads.box_predictor.cls_score.in_features

        # replace the pre-trained head with a new one
        self.detector.roi_heads.box_predictor = FastRCNNPredictor(
            in_features, opt.num_classes + 1)
        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#9
0
    def __init__(self, config, **kwargs):
        super(Model, self).__init__(config, kwargs)
        self.config = config

        # 根据YoloV2和YoloV3使用不同的配置文件
        if config.MODEL.NAME == 'Yolo2':
            cfgfile = 'configs/networks/yolo2-voc.cfg'
        elif config.MODEL.NAME == 'Yolo3':
            cfgfile = 'configs/networks/yolo3-coco.cfg'

        # 初始化detector
        self.detector = Darknet(cfgfile, device=opt.device).to(opt.device)
        if opt.debug:
            print_network(self.detector)

        # 在--load之前加载weights文件(可选)
        if opt.load and opt.load[-2:] != 'pt':
            if is_first_gpu():
                utils.color_print('Load Yolo weights from %s.' % opt.load, 3)
            self.detector.load_weights(opt.load)
        elif 'LOAD' in config.MODEL and config.MODEL.LOAD[-2:] != 'pt':
            if is_first_gpu():
                utils.color_print(
                    'Load Yolo weights from %s.' % config.MODEL.LOAD, 3)
            self.detector.load_weights(config.MODEL.LOAD)

        self.to(opt.device)
        # 多GPU支持
        if is_distributed():
            self.detector = torch.nn.SyncBatchNorm.convert_sync_batchnorm(
                self.detector)
            self.detector = torch.nn.parallel.DistributedDataParallel(
                self.detector,
                find_unused_parameters=False,
                device_ids=[opt.local_rank],
                output_device=opt.local_rank)
            # self.detector = torch.nn.parallel.DistributedDataParallel(self.detector, device_ids=[opt.local_rank], output_device=opt.local_rank)

        self.optimizer = get_optimizer(config, self.detector)
        self.scheduler = get_scheduler(config, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)
示例#10
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        cfgfile = 'configs/yolov5x.yaml'
        self.detector = Yolo5(cfgfile)
        self.detector.hyp = hyp
        self.detector.gr = 1.0
        self.detector.nc = opt.num_classes
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
        self.it = 0
示例#11
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__(config, kwargs)
        self.opt = opt
        cfgfile = 'configs/yolov5x.yaml'
        self.detector = Yolo5(cfgfile)
        self.detector.hyp = hyp
        self.detector.gr = 1.0
        self.detector.nc = config.DATA.NUM_CLASSESS
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        if opt.debug:
            print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)
        self.it = 0
示例#12
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__()
        self.opt = opt
        # cfgfile = 'yolo-voc.cfg'
        # self.detector = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
        # in_features = self.detector.roi_heads.box_predictor.cls_score.in_features
        #
        # # replace the pre-trained head with a new one
        # self.detector.roi_heads.box_predictor = FastRCNNPredictor(in_features, opt.num_classes + 1)
        self.detector = Retina_50(opt.num_classes,pretrained=True)

        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#13
0
    def __init__(self, opt):
        super(Model, self).__init__()
        self.opt = opt
        self.classifier = Classifier()
        #####################
        #    Init weights
        #####################
        # self.classifier.apply(weights_init)

        print_network(self.classifier)

        self.optimizer = optim.Adam(self.classifier.parameters(),
                                    lr=opt.lr,
                                    betas=(0.95, 0.999))
        self.scheduler = get_scheduler(opt, self.optimizer)

        # load networks
        # if opt.load:
        #     pretrained_path = opt.load
        #     self.load_network(self.classifier, 'G', opt.which_epoch, pretrained_path)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)
示例#14
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__()
        self.opt = opt
        self.detector = SSDDetector(opt).to(device=opt.device)
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)

        CENTER_VARIANCE = 0.1
        SIZE_VARIANCE = 0.2
        THRESHOLD = 0.5

        self.target_transform = SSDTargetTransform(
            PriorBox(opt)(), CENTER_VARIANCE, SIZE_VARIANCE, THRESHOLD)
示例#15
0
    def __init__(self, config, **kwargs):
        super(Model, self).__init__(config, kwargs)
        self.config = config
        self.detector = SSDDetector(config).to(device=opt.device)
        #####################
        #    Init weights
        #####################
        # normal_init(self.detector)

        if opt.debug:
            print_network(self.detector)

        self.optimizer = get_optimizer(config, self.detector)
        self.scheduler = get_scheduler(config, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)

        CENTER_VARIANCE = 0.1
        SIZE_VARIANCE = 0.2
        THRESHOLD = 0.5

        self.target_transform = SSDTargetTransform(
            PriorBox(config)(), CENTER_VARIANCE, SIZE_VARIANCE, THRESHOLD)
示例#16
0
    def __init__(self, config, **kwargs):
        super(Model, self).__init__(config, kwargs)
        self.config = config

        kargs = {}
        if 'SCALE' in config.DATA:
            scale = config.DATA.SCALE
            if isinstance(scale, int):
                min_size = scale
                max_size = int(min_size / 3 * 5)
            else:
                min_size, max_size = config.DATA.SCALE

            kargs = {
                'min_size': min_size,
                'max_size': max_size,
            }

        kargs.update({'box_nms_thresh': config.TEST.NMS_THRESH})

        # 多卡使用 SyncBN
        if is_distributed():
            kargs.update({'norm_layer': torch.nn.SyncBatchNorm})

        # 定义backbone和Faster RCNN模型
        if config.MODEL.BACKBONE is None or config.MODEL.BACKBONE.lower() in [
                'res50', 'resnet50'
        ]:
            # 默认是带fpn的resnet50
            self.detector = fasterrcnn_resnet50_fpn(pretrained=False, **kargs)

            in_features = self.detector.roi_heads.box_predictor.cls_score.in_features

            # replace the pre-trained head with a new one
            self.detector.roi_heads.box_predictor = FastRCNNPredictor(
                in_features, config.DATA.NUM_CLASSESS + 1)

        elif config.MODEL.BACKBONE.lower() in ['vgg16', 'vgg']:
            backbone = vgg16_backbone()
            self.detector = FasterRCNN(backbone,
                                       num_classes=config.DATA.NUM_CLASSESS +
                                       1,
                                       **kargs)

        elif config.MODEL.BACKBONE.lower() in ['res101', 'resnet101']:
            # 不带FPN的resnet101
            backbone = res101_backbone()
            self.detector = FasterRCNN(backbone,
                                       num_classes=config.DATA.NUM_CLASSESS +
                                       1,
                                       **kargs)

        elif config.MODEL.BACKBONE.lower() in ['res', 'resnet']:
            raise RuntimeError(
                f'backbone "{config.MODEL.BACKBONE}" is ambiguous, please specify layers.'
            )

        else:
            raise NotImplementedError(
                f'no such backbone: {config.MODEL.BACKBONE}')

        if opt.debug and is_first_gpu():
            print_network(self.detector)

        self.to(opt.device)
        # 多GPU支持
        if is_distributed():
            self.detector = torch.nn.parallel.DistributedDataParallel(
                self.detector,
                find_unused_parameters=False,
                device_ids=[opt.local_rank],
                output_device=opt.local_rank)
            # self.detector = torch.nn.parallel.DistributedDataParallel(self.detector, device_ids=[opt.local_rank], output_device=opt.local_rank)

        self.optimizer = get_optimizer(config, self.detector)
        self.scheduler = get_scheduler(config, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join('checkpoints', opt.tag)
示例#17
0
    def __init__(self, opt, logger=None):
        super(Model, self).__init__()
        self.opt = opt

        if opt.scale:
            min_size = opt.scale
            max_size = int(min_size / 3 * 5)
        else:
            min_size = 800
            max_size = 1333
            # anchor_sizes = ((16,), (32,), (64,), (128,), (512,)) # ,( 4,), (256,), (512,))
            # aspect_ratios = ((0.2, 0.5, 1.0, 2.0, 5.0),) * len(anchor_sizes)
            # rpn_anchor_generator = AnchorGenerator(
            #     anchor_sizes, aspect_ratios
            # )

        kargs = {
            'min_size': min_size,
            'max_size': max_size,
            'cascade_iou_thr': [0.5, 0.6, 0.7],
        }

        # 定义backbone和Faster RCNN模型
        if opt.backbone is None or opt.backbone.lower() in [
                'res50', 'resnet50'
        ]:
            # 默认是带fpn的resnet50
            self.detector = cascadercnn_resnet50_fpn(pretrained=False, **kargs)

            in_features = self.detector.roi_heads[
                0].box_predictor.cls_score.in_features

            # replace the pre-trained head with a new one
            self.detector.roi_heads[0].box_predictor = FastRCNNPredictor(
                in_features, opt.num_classes + 1)
            self.detector.roi_heads[1].box_predictor = FastRCNNPredictor(
                in_features, opt.num_classes + 1)
            self.detector.roi_heads[2].box_predictor = FastRCNNPredictor(
                in_features, opt.num_classes + 1)

        elif opt.backbone.lower() in ['vgg16', 'vgg']:
            backbone = vgg16_backbone()
            self.detector = CascadeRCNN(backbone,
                                        num_classes=opt.num_classes + 1,
                                        **kargs)

        elif opt.backbone.lower() in ['res101', 'resnet101']:
            # 不带FPN的resnet101
            backbone = res101_backbone()
            self.detector = CascadeRCNN(backbone,
                                        num_classes=opt.num_classes + 1,
                                        **kargs)

        elif opt.backbone.lower() in ['res', 'resnet']:
            raise RuntimeError(
                f'backbone "{opt.backbone}" is ambiguous, please specify layers.'
            )

        else:
            raise NotImplementedError(f'no such backbone: {opt.backbone}')

        print_network(self.detector)

        self.optimizer = get_optimizer(opt, self.detector)
        self.scheduler = get_scheduler(opt, self.optimizer)

        self.avg_meters = ExponentialMovingAverage(0.95)
        self.save_dir = os.path.join(opt.checkpoint_dir, opt.tag)