| 1129 | the Encoder and Decoder. |
| 1130 | """ |
| 1131 | def __init__( |
| 1132 | self, |
| 1133 | *args, |
| 1134 | with_box_refine=False, |
| 1135 | as_two_stage=False, |
| 1136 | transformer=None, |
| 1137 | npose=144, |
| 1138 | nbeta=10, |
| 1139 | ncam=3, |
| 1140 | hdim=256, # TODO: choose proper hdim |
| 1141 | niter=3, |
| 1142 | smpl_mean_params=None, |
| 1143 | **kwargs): |
| 1144 | self.with_box_refine = with_box_refine |
| 1145 | self.as_two_stage = as_two_stage |
| 1146 | self.npose = npose |
| 1147 | self.nbeta = nbeta |
| 1148 | self.ncam = ncam |
| 1149 | self.hdim = hdim |
| 1150 | self.niter = niter |
| 1151 | |
| 1152 | if self.as_two_stage: |
| 1153 | transformer['as_two_stage'] = self.as_two_stage |
| 1154 | |
| 1155 | super(DeformableDETRHead, self).__init__(*args, |
| 1156 | transformer=transformer, |
| 1157 | **kwargs) |
| 1158 | |
| 1159 | if smpl_mean_params is None: |
| 1160 | init_pose = torch.zeros([1, npose]) |
| 1161 | init_shape = torch.zeros([1, nbeta]) |
| 1162 | init_cam = torch.FloatTensor([[1, 0, 0]]) |
| 1163 | else: |
| 1164 | mean_params = np.load(smpl_mean_params) |
| 1165 | init_pose = torch.from_numpy(mean_params['pose'][:]).unsqueeze(0) |
| 1166 | init_shape = torch.from_numpy( |
| 1167 | mean_params['shape'][:].astype('float32')).unsqueeze(0) |
| 1168 | init_cam = torch.from_numpy(mean_params['cam']).unsqueeze(0) |
| 1169 | self.register_buffer('init_pose', init_pose) |
| 1170 | self.register_buffer('init_shape', init_shape) |
| 1171 | self.register_buffer('init_cam', init_cam) |
| 1172 | |
| 1173 | def _init_layers(self): |
| 1174 | """Initialize classification branch and regression branch of head.""" |