Tensorflow 在模糊度增加的数据集层上训练对象检测器

Tensorflow 在模糊度增加的数据集层上训练对象检测器,tensorflow,object-detection,object-detection-api,Tensorflow,Object Detection,Object Detection Api,我有很多覆盆子皮摄像机,它们聚焦于鸟类喂食器, 持续运行TensorFlow目标检测图(SSD MNet2)以检测鸟类。 随着时间的推移,我已经建立了一个超过11个物种的+10k图像数据集,经常重新训练图形。 我打算将数据集中的项目数限制为10k个(可能是任意的) 数据集中有数据流,因此它会不断改进。 法官(me)对新的候选侦探进行如下筛选: 添加为新的培训/评估项目。 检测被判断为代表一个类别。 经过调整后,图像和检测可以添加到地面上 添加为反例项。 检测结果为假,但可以转换为未分类反例。

我有很多覆盆子皮摄像机,它们聚焦于鸟类喂食器, 持续运行TensorFlow目标检测图(SSD MNet2)以检测鸟类。 随着时间的推移,我已经建立了一个超过11个物种的+10k图像数据集,经常重新训练图形。 我打算将数据集中的项目数限制为10k个(可能是任意的)

数据集中有数据流,因此它会不断改进。 法官(me)对新的候选侦探进行如下筛选:

  • 添加为新的培训/评估项目。 检测被判断为代表一个类别。 经过调整后,图像和检测可以添加到地面上

  • 添加为反例项。 检测结果为假,但可以转换为未分类反例。 经过调整后,图像和检测可以添加到地面上

  • 丢弃物品 对训练没有帮助

还请注意,当有足够的更好的数据可用时,某些现有数据将失效

迄今为止,《地面真相》中的所有物品都以1.0的重量交付训练

见:

但这显然不是很正确。 通过检查,我知道有些产品不太好,但在任何时候,它们都是最好的例子。 随着时间的推移,坏的东西最终会被更好的东西所取代

排名培训记录 我想知道对培训的影响,以及是否可以通过对数据集、理想值进行排序来改善这种情况, 然后依次进行训练,使模型在最理想的数据上初始化,然后学习越来越不理想的数据

我想尝试避免的是模型过于关注
坏的
数据,而对
好的
数据关注不够,特别是在训练的最初阶段。 其中,
bad
good
数据表示数据项对训练模型的准确性和可视化(通过Lucid)的贡献程度

加权数据集 在某个项目上设置权重(介于0和1之间)意味着为该项目计算的损失减少(通过权重系数); 我想它的意思是“对这个项目的关注要少一些”

见:

我访问了数据集中的每一项,以回顾性地设置权重。 为此,我在数据集图像上运行了一些最新的模型(无可否认,模型是从这些图像中训练出来的),然后匹配检测结果。 通过模型检测的平均分数(四舍五入到小数点后一位形成分数带)计算每个项目的权重。 然后对整个数据集进行审查,以根据需要增加或减少权重

结果如下表所示:

| Class\Weight Bin | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | Total| 
| blackbird        |     |     |  34 |  84 | 212 | 305 | 115 |  750 | 
| blue tit         |     |     |  47 |  94 | 211 | 435 | 241 | 1028 |
| collared dove    |     |     |  17 |  52 | 236 | 302 | 101 |  708 |
| dunnock          |     |     |  50 | 140 | 260 | 236 | 228 |  914 |
| goldfinch        |     |     |  60 | 103 | 220 | 392 | 164 |  939 |
| great tit        |     |  35 |  42 |  71 | 234 | 384 | 201 |  967 |
| mouse            |  40 |  29 |  35 |  50 |  87 | 142 |     |  383 |
| robin            |     |  43 |  44 |  97 | 175 | 207 |  52 |  618 |
| sparrow          |     |  31 |  51 |  75 | 278 | 475 | 220 | 1130 |
| starling         |     |  19 |  28 |  39 |  97 | 227 |  73 |  483 |
| wood pigeon      |     |     |  10 |  34 |  82 | 265 | 560 |  951 |
|                  |     |     |     |     |     |     |     | 8871 |
第一个训练结果看起来很有希望,因为模型训练得很好。 但是我还没有回顾过可视化


在每个数据集项上设置适当的权重是否等同于分层提供已排名的培训记录?

首先,尝试从数据集中删除不明确的数据并训练模型,并将其结果与以前的模型进行比较


如果这没有帮助,那么就用类权重来平衡数据。

我重写了这个问题,以避免在类之间出现歧义。当我找到数据集时,我确实会从数据集中删除明显不好的数据(即我犯的错误)。然而,我希望只有在出现更好的数据时才删除“性能”较差的数据,因为我需要保留每个类的一些总体。例如,在上表中,我只是没有收集足够的鼠标数据。
| Class\Weight Bin | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | Total| 
| blackbird        |     |     |  34 |  84 | 212 | 305 | 115 |  750 | 
| blue tit         |     |     |  47 |  94 | 211 | 435 | 241 | 1028 |
| collared dove    |     |     |  17 |  52 | 236 | 302 | 101 |  708 |
| dunnock          |     |     |  50 | 140 | 260 | 236 | 228 |  914 |
| goldfinch        |     |     |  60 | 103 | 220 | 392 | 164 |  939 |
| great tit        |     |  35 |  42 |  71 | 234 | 384 | 201 |  967 |
| mouse            |  40 |  29 |  35 |  50 |  87 | 142 |     |  383 |
| robin            |     |  43 |  44 |  97 | 175 | 207 |  52 |  618 |
| sparrow          |     |  31 |  51 |  75 | 278 | 475 | 220 | 1130 |
| starling         |     |  19 |  28 |  39 |  97 | 227 |  73 |  483 |
| wood pigeon      |     |     |  10 |  34 |  82 | 265 | 560 |  951 |
|                  |     |     |     |     |     |     |     | 8871 |