コード例 #1
0
    def model_loss(self, data_ph, model_params):
        with tf.variable_scope("loss"):
            label = data_ph.get_label()
            mask = data_ph.get_mask()

            l2_loss_list = list()
            for i, deconv in enumerate(self.predict_list):
                deconv = self._filter_mask(deconv, mask)
                label = self._filter_mask(label, mask)
                l2_loss = mf.image_l2_loss(deconv, label, "l2_loss_%d" % i)
                l2_loss_list.append(l2_loss)
                tf.add_to_collection("losses", l2_loss)

                l1_loss = mf.image_l1_loss(deconv, label, "l1_loss_%d" % i)
            self.l1_loss = l1_loss
            self.l2_loss = tf.add_n(l2_loss_list)

            # Add domain loss
            if model_params['use_da']:
                pred = tf.reshape(self.da_cls, [-1, 2])
                da_label = data_ph.get_da_label()
                total_da_loss = tf.nn.softmax_cross_entropy_with_logits(
                    pred, da_label
                )
                weight_da_loss = data_ph.get_da_weight() * total_da_loss
                self.da_loss = tf.reduce_mean(weight_da_loss)
                tf.add_to_collection("losses", self.da_loss)

            self.loss = tf.add_n(tf.get_collection('losses'), name='total_loss')
コード例 #2
0
    def model_loss(self, data_ph, model_params):
        with tf.variable_scope("loss"):
            label = data_ph.get_label()
            mask = data_ph.get_mask()

            l1_loss_list = list()
            l2_loss_list = list()
            for i, deconv in enumerate(self.predict_list):
                deconv = self._filter_mask(deconv, mask)
                label = self._filter_mask(label, mask)
                l2_loss = mf.image_l2_loss(deconv, label, "l2_loss_%d" % i)
                l2_loss_list.append(l2_loss)
                tf.add_to_collection("losses", l2_loss)
                l1_loss = mf.image_l1_loss(deconv, label, "l1_loss_%d" % i)
                tf.add_to_collection("losses", l1_loss)
                l1_loss_list.append(l1_loss)

            self.l1_loss = l1_loss_list
            self.l2_loss = tf.add_n(l2_loss_list)

            self.loss = tf.add_n(tf.get_collection('losses'),
                                 name='total_loss')
コード例 #3
0
    def _image_l2_loss(self, label, mask, predict_list, index, model_params):
        """
        Args:
            label: [b, h, w, c]
            mask: [b, h, w, c]
            predict_list: list of [b, h, w, c]
        """

        l2_loss_list = list()
        for i, deconv in enumerate(predict_list):
            deconv = self._filter_mask(deconv, mask)
            label = self._filter_mask(label, mask)
            l2_loss = mf.image_l2_loss(deconv, label,
                                       "image_loss_%d_%d" % (index, i))
            l2_loss_list.append(l2_loss)
            count_diff = mf.count_diff(deconv, label,
                                       "count_diff_%d_%d" % (index, i))
            tf.summary.scalar("count_diff_%d_%d" % (index, i), count_diff)
            #tf.add_to_collection("losses", l2_loss)

        l2_loss = tf.add_n(l2_loss_list)
        return l2_loss