def __init__(self): self.model = 'models/r2d2_WASF_N16.pt' self.tag = 'r2d2' # output file tag self.top_k = 2000 # number of keypoints self.scale_f = 2**0.25 self.min_size = 256 self.max_size = 1024 self.min_scale = 0 self.max_scale = 1 self.reliability_thr = 0.7 self.repeatability_thr = 0.7 self.gpu = [0] self.iscuda = common.torch_set_gpu(self.gpu) self.net = None # load_network checkpoint = torch.load(self.model) print("\n>> Creating net = " + checkpoint['net']) net = eval(checkpoint['net']) nb_of_weights = common.model_size(net) #print(f"( Model size: {nb_of_weights/1000:.0f}K parameters )") # initialization weights = checkpoint['state_dict'] net.load_state_dict( {k.replace('module.', ''): v for k, v in weights.items()}) self.net = net.eval()
def load_network(model_fn): checkpoint = torch.load(model_fn) print("\n>> Creating net = " + checkpoint['net']) net = eval(checkpoint['net']) nb_of_weights = common.model_size(net) print(f" ( Model size: {nb_of_weights/1000:.0f}K parameters )") # initialization weights = checkpoint['state_dict'] net.load_state_dict({k.replace('module.',''):v for k,v in weights.items()}) return net.eval()
def load_network(model_fn): checkpoint = torch.load(model_fn) print("\n>> Creating net = " + checkpoint['net']) # checkpoint['net'] = "Quad_L2Net_ConfCFS()" 字符串 # checkpoint['state_dict'] = Dict 存储网络的参数值 net = eval(checkpoint['net']) # 这里就是执行函数 Quad_L2Net_ConfCFS() 返回一个网络 nb_of_weights = common.model_size(net) print(f" ( Model size: {nb_of_weights / 1000:.0f}K parameters )") # 初始化 weights = checkpoint['state_dict'] # 这里将k(key,即层的名称)修改个名字后和k对应的一个数组重新组成一个新的dict net.load_state_dict( {k.replace('module.', ''): v for k, v in weights.items()}) return net.eval()