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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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)
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)
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)
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)
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)
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)