| 30 | self.deep_sup_scale = deep_sup_scale |
| 31 | |
| 32 | def forward(self, feed_dict, *, segSize=None): |
| 33 | if segSize is None: # training |
| 34 | if self.deep_sup_scale is not None: # use deep supervision technique |
| 35 | (pred, pred_deepsup) = self.decoder(self.encoder(feed_dict['img_data'], return_feature_maps=True)) |
| 36 | else: |
| 37 | pred = self.decoder(self.encoder(feed_dict['img_data'], return_feature_maps=True)) |
| 38 | |
| 39 | loss = self.crit(pred, feed_dict['seg_label']) |
| 40 | if self.deep_sup_scale is not None: |
| 41 | loss_deepsup = self.crit(pred_deepsup, feed_dict['seg_label']) |
| 42 | loss = loss + loss_deepsup * self.deep_sup_scale |
| 43 | |
| 44 | acc = self.pixel_acc(pred, feed_dict['seg_label']) |
| 45 | return loss, acc |
| 46 | else: # inference |
| 47 | pred = self.decoder(self.encoder(feed_dict['img_data'], return_feature_maps=True), segSize=segSize) |
| 48 | return pred |
| 49 | |
| 50 | |
| 51 | def conv3x3(in_planes, out_planes, stride=1, has_bias=False): |