是否可以在训练时使用较少的对象检测数据为 class 赋予更多权重?
Is it possible give more weight to class with lesser data in object detection while training?
假设我有大约 250000 张图片,其中 5 张 类,所有照片中的实际对象数量如下。
狗 20000 猫 17000 母鸡 16000 牛 5000 牛 2000
在这样的问题中,使用张量流模型训练模型后的准确率如下:
狗 90 猫 60 母鸡 50 牛 0.02ox 0.15
类 cow 和 ox 的准确度可以提高吗?
我们能否训练模型,以便我们可以为张量流中 类 数量较少的 类 添加更多权重?
我正在使用迁移学习:Faster R-CNN with ResNet-101
最典型的方法是更改您的采样率,使您训练的每个批次都以相同的速率对每个 class 进行采样。这意味着您将在训练时对代表性不足的 classes 进行过采样。在 Tensorflow 中,一种相当简单的方法是为每个 class 创建单独的 Dataset
对象,然后使用 tf.data.Dataset.interleave
将它们重新组合在一起,以便将它们重新组合在一起,以便它们在整个过程中均匀采样classes.
也可以将你的损失乘以一个常数向量,这将有效地改变每个 class 的学习率,我自己会选择前一个选项。
假设我有大约 250000 张图片,其中 5 张 类,所有照片中的实际对象数量如下。
狗 20000 猫 17000 母鸡 16000 牛 5000 牛 2000
在这样的问题中,使用张量流模型训练模型后的准确率如下:
狗 90 猫 60 母鸡 50 牛 0.02ox 0.15
类 cow 和 ox 的准确度可以提高吗?
我们能否训练模型,以便我们可以为张量流中 类 数量较少的 类 添加更多权重?
我正在使用迁移学习:Faster R-CNN with ResNet-101
最典型的方法是更改您的采样率,使您训练的每个批次都以相同的速率对每个 class 进行采样。这意味着您将在训练时对代表性不足的 classes 进行过采样。在 Tensorflow 中,一种相当简单的方法是为每个 class 创建单独的 Dataset
对象,然后使用 tf.data.Dataset.interleave
将它们重新组合在一起,以便将它们重新组合在一起,以便它们在整个过程中均匀采样classes.
也可以将你的损失乘以一个常数向量,这将有效地改变每个 class 的学习率,我自己会选择前一个选项。