Пример #1
0
        # 加载参数, 跳过形状不匹配的。
        load_weights(ppyolo, cfg.train_cfg['model_path'])

        strs = cfg.train_cfg['model_path'].split('step')
        if len(strs) == 2:
            iter_id = int(strs[1][:8])

        # 冻结,使得需要的显存减少。低显存的卡建议这样配置。
        backbone.freeze()

    if use_gpu:  # 如果有gpu可用,模型(包括了权重weight)存放在gpu显存里
        ppyolo = ppyolo.cuda()

    ema = None
    if cfg.use_ema:
        ema = ExponentialMovingAverage(ppyolo, cfg.ema_decay)
        ema.register()

    # 种类id
    _catid2clsid = copy.deepcopy(catid2clsid)
    _clsid2catid = copy.deepcopy(clsid2catid)
    if num_classes != 80:  # 如果不是COCO数据集,而是自定义数据集
        _catid2clsid = {}
        _clsid2catid = {}
        for k in range(num_classes):
            _catid2clsid[k] = k
            _clsid2catid[k] = k
    # 训练集
    train_dataset = COCO(cfg.train_path)
    train_img_ids = train_dataset.getImgIds()
    train_records = data_clean(train_dataset, train_img_ids, _catid2clsid,