Spaces:
Runtime error
Runtime error
| import torch | |
| from copy import deepcopy | |
| from extras.facexlib.utils import load_file_from_url | |
| from .retinaface import RetinaFace | |
| def init_detection_model(model_name, half=False, device='cuda', model_rootpath=None): | |
| if model_name == 'retinaface_resnet50': | |
| model = RetinaFace(network_name='resnet50', half=half, device=device) | |
| model_url = 'https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth' | |
| elif model_name == 'retinaface_mobile0.25': | |
| model = RetinaFace(network_name='mobile0.25', half=half, device=device) | |
| model_url = 'https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_mobilenet0.25_Final.pth' | |
| else: | |
| raise NotImplementedError(f'{model_name} is not implemented.') | |
| model_path = load_file_from_url( | |
| url=model_url, model_dir='facexlib/weights', progress=True, file_name=None, save_dir=model_rootpath) | |
| # TODO: clean pretrained model | |
| load_net = torch.load(model_path, map_location=lambda storage, loc: storage) | |
| # remove unnecessary 'module.' | |
| for k, v in deepcopy(load_net).items(): | |
| if k.startswith('module.'): | |
| load_net[k[7:]] = v | |
| load_net.pop(k) | |
| model.load_state_dict(load_net, strict=True) | |
| model.eval() | |
| model = model.to(device) | |
| return model | |