yolo_v1.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:yolo-tensorflow 作者: persistforever 项目源码 文件源码
def calculate_loss(self, logits):
        # ??class_pred?box_pred
        self.box_preds = logits

        # ?????example
        results = tf.while_loop(
            cond=self._one_example_cond, 
            body=self._one_example_body, 
            loop_vars=[tf.constant(0), self.batch_size,
                       tf.constant(0.0), tf.constant(0.0), tf.constant(0.0), tf.constant(0.0),
                       tf.constant(0.0), tf.constant(0.0), tf.constant(0.0), 
                       tf.constant(0.0), tf.constant(0.0)])
        coord_loss = results[2]
        object_loss = results[3]
        noobject_loss = results[4]
        class_loss = results[5]
        iou_value = results[6]
        object_value = results[7]
        anyobject_value = results[8]
        recall_value = results[9]
        class_value = results[10]

        # ?????
        coord_loss = coord_loss * self.coord_scale / self.batch_size
        object_loss = object_loss * self.object_scale / self.batch_size
        noobject_loss = noobject_loss * self.noobject_scale / self.batch_size
        class_loss = class_loss * self.class_scale / self.batch_size
        # ???
        iou_value /= tf.reduce_sum(tf.cast(self.object_nums, tf.float32), axis=[0])
        object_value /= tf.reduce_sum(tf.cast(self.object_nums, tf.float32), axis=[0])
        anyobject_value /= (self.batch_size * self.cell_size * self.cell_size * self.n_boxes)
        recall_value /= tf.reduce_sum(tf.cast(self.object_nums, tf.float32), axis=[0])
        class_value /= tf.reduce_sum(tf.cast(self.object_nums, tf.float32), axis=[0])

        return coord_loss, object_loss, noobject_loss, class_loss, \
            iou_value, object_value, anyobject_value, recall_value, class_value
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号