从图像中提取多个 softmax 值

人工智能 神经网络 机器学习 分类
2021-10-19 09:02:43

我目前正在启动图像分类和提取项目的预处理,该项目需要从单个图像中输出多个 softmax 和绝对值,如下所示:

{
 time: "20:20", 
 teams: [
   {
     red: { goals: 2},
     blue: { goals: 1},
   },
   {
     scored_by : [{
      john: 80%, 
      kyle: 51%, 
      darren: 20%
     }
   ]}
 ]
}

我可以创建多个模型来负责不同的任务,例如从图像中读取时间以及分数,并最终将两者结合起来。但是,我想确保我最大限度地提高效率,以确保流程尽可能快。

任何指向正确方向的指针将不胜感激。

亲切的问候, 丹尼斯

1个回答

与多个输出层共享网络权重并非闻所未闻。我在 DeepMind 的Asynchronous Deep Learning论文上看到过,我也在这里使用过。

这个想法是共享所有层并且只有多个输出。但是,这可能会降低网络的准确性,就像通常的性能与准确性权衡一样。

在此处输入图像描述

要优化这一点,只需计算两个输出的损失并在输入优化器时将它们相加,就像这样

self.target_policy_fast_t = tf.placeholder('float32', [None, a_size], name='target_policy_fast_t')
self.loss_policy_fast = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=self.network.policy_fast_before_softmax, labels=self.loss_policy_fast_t))

self.target_policy_slow_t = tf.placeholder('float32', [None, a_size], name='target_policy_slow_t')
self.loss_policy_slow = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=self.network.policy_slow_before_softmax, labels=self.target_policy_slow_t))

self.loss = tf.reduce_mean(self.loss_policy_fast + self.loss_policy_slow, name='loss')