(self)
| 103 | # pin_memory=False) |
| 104 | |
| 105 | def create_model(self): |
| 106 | config = self.config |
| 107 | ginfo = self.ginfo |
| 108 | |
| 109 | backbone_bn_group_size = config.backbone['kwargs'].get('bn_group_size', 1) |
| 110 | assert backbone_bn_group_size == 1, 'other bn group size not support!' |
| 111 | backbone_bn_group_comm = self.ginfo.backbone_share_group |
| 112 | |
| 113 | ## build backbone |
| 114 | config.backbone['kwargs']['bn_group'] = backbone_bn_group_comm |
| 115 | backbone_module = backbones.backbone_entry(config.backbone) |
| 116 | count_parameters_num(backbone_module) |
| 117 | |
| 118 | ## build necks |
| 119 | neck_bn_group_size = config.backbone['kwargs'].get('bn_group_size', 1) |
| 120 | assert neck_bn_group_size == 1, 'other bn group size not support!' |
| 121 | neck_bn_group_comm = self.ginfo.neck_share_group |
| 122 | |
| 123 | neck_args = config.neck['kwargs'] |
| 124 | neck_args['backbone'] = backbone_module |
| 125 | neck_args['bn_group'] = neck_bn_group_comm |
| 126 | neck_module = necks.neck_entry(config.neck) |
| 127 | |
| 128 | ## add decoder |
| 129 | decoder_bn_group_size = config.backbone['kwargs'].get('bn_group_size', 1) |
| 130 | assert decoder_bn_group_size == 1, 'other bn group size not support!' |
| 131 | decoder_bn_group_comm = self.ginfo.decoder_share_group |
| 132 | |
| 133 | decoder_args = config.decoder['kwargs'] |
| 134 | decoder_args['backbone'] = backbone_module |
| 135 | decoder_args['neck'] = neck_module |
| 136 | decoder_args['bn_group'] = decoder_bn_group_comm |
| 137 | decoder_args['feature_only'] = True |
| 138 | self.config.decoder.kwargs.ginfo = self.ginfo |
| 139 | self.config.decoder.kwargs.ignore_value = None |
| 140 | self.config.decoder.kwargs.num_classes = 666 |
| 141 | decoder_module = decoders.decoder_entry(config.decoder) |
| 142 | |
| 143 | # build |
| 144 | model = globals()[self.config.get('model_entry_type', 'model_entry')](backbone_module, |
| 145 | neck_module, |
| 146 | decoder_module) |
| 147 | |
| 148 | ## distributed |
| 149 | model.cuda() |
| 150 | |
| 151 | if self.C_train.rank == 0: |
| 152 | print(model) |
| 153 | |
| 154 | model = DistModule(model, sync=self.sync, task_grp=self.ginfo.group, \ |
| 155 | share_backbone_group=self.ginfo.backbone_share_group, \ |
| 156 | share_neck_group=self.ginfo.neck_share_group, \ |
| 157 | share_decoder_group=self.ginfo.decoder_share_group) |
| 158 | |
| 159 | self.model = model |
| 160 | |
| 161 | def save(self): |
| 162 | pass |
nothing calls this directly
no test coverage detected