MCPcopy Create free account
hub / github.com/coperception/star / SegModule

Class SegModule

star/utils/SegModule.py:7–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5
6
7class SegModule(object):
8 def __init__(self, model, teacher, config, optimizer, kd_flag):
9 self.config = config
10 self.model = model
11 self.optimizer = optimizer
12 self.scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(
13 optimizer, T_max=self.config.nepoch
14 )
15 # self.scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[50, 100, 150, 200], gamma=0.5)
16 self.criterion = nn.CrossEntropyLoss()
17 self.teacher = teacher
18 if kd_flag:
19 for k, v in self.teacher.named_parameters():
20 v.requires_grad = False # fix parameters
21
22 self.kd_flag = kd_flag
23
24 self.com = config.com
25
26 def resume(self, path):
27 def map_func(storage, location):
28 return storage.cuda()
29
30 if os.path.isfile(path):
31 if rank == 0:
32 print("=> loading checkpoint '{}'".format(path))
33
34 checkpoint = torch.load(path, map_location=map_func)
35 self.model.load_state_dict(checkpoint["state_dict"], strict=False)
36
37 ckpt_keys = set(checkpoint["state_dict"].keys())
38 own_keys = set(model.state_dict().keys())
39 missing_keys = own_keys - ckpt_keys
40 for k in missing_keys:
41 print("caution: missing keys from checkpoint {}: {}".format(path, k))
42 else:
43 print("=> no checkpoint found at '{}'".format(path))
44
45 def step(self, data, num_agent, batch_size, loss=True):
46 bev = data["bev_seq"]
47 labels = data["labels"]
48 self.optimizer.zero_grad()
49 bev = bev.permute(0, 3, 1, 2).contiguous()
50
51 if not self.com:
52 filtered_bev = []
53 filtered_label = []
54 for i in range(bev.size(0)):
55 if torch.sum(bev[i]) > 1e-4:
56 filtered_bev.append(bev[i])
57 filtered_label.append(labels[i])
58 bev = torch.stack(filtered_bev, 0)
59 labels = torch.stack(filtered_label, 0)
60
61 if self.kd_flag:
62 data["bev_seq_teacher"] = (
63 data["bev_seq_teacher"].permute(0, 3, 1, 2).contiguous()
64 )

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by 1

mainFunction · 0.68