gpt4 book ai didi

python - TensorFlow 对象检测 API 奇怪的行为

转载 作者:IT老高 更新时间:2023-10-28 21:13:05 24 4
gpt4 key购买 nike

我在玩 TensorFlow 的全新 Object Detection API并决定在其他一些公开可用的数据集上对其进行训练。

我偶然发现了this杂货数据集,包括超市货架上各种品牌香烟盒的图像以及一个文本文件,其中列出了每个图像中每个香烟盒的边界框。数据集中有 10 个主要品牌被标记,所有其他品牌都属于第 11 个“杂项”类别。

我关注了他们的tutorial并设法在这个数据集上训练模型。由于处理能力的限制,我只使用了三分之一的数据集,并对训练和测试数据进行了 70:30 的拆分。我使用了 faster_rcnn_resnet101 模型。我的配置文件中的所有参数都和TF提供的默认参数一样。

在 16491 个全局步骤之后,我在一些图像上测试了模型,但我对结果不太满意 -

无法在顶级货架中检测到 Camel ,而在其他图像中检测到产品

为什么检测不到最上面一排的万宝路?

我遇到的另一个问题是模型从未检测到除标签 1 之外的任何其他标签

未从训练数据中检测到产品的裁剪实例

即使在负面图像中,它也能以 99% 的置信度检测烟盒!

有人可以帮我解决问题吗?我可以做些什么来提高准确性?为什么它检测到所有产品都属于类别 1,尽管我提到了总共有 11 个类别?

编辑添加了我的标签图:

item {
id: 1
name: '1'
}

item {
id: 2
name: '2'
}

item {
id: 3
name: '3'
}

item {
id: 4
name: '4'
}

item {
id: 5
name: '5'
}

item {
id: 6
name: '6'
}

item {
id: 7
name: '7'
}

item {
id: 8
name: '8'
}

item {
id: 9
name: '9'
}

item {
id: 10
name: '10'
}

item {
id: 11
name: '11'
}

最佳答案

所以我想我知道发生了什么。我对数据集进行了一些分析,发现它偏向于类别 1。

这是从 1 到 11 的每个类别的频率分布(基于 0 的索引)

0 10440
1 304
2 998
3 67
4 412
5 114
6 190
7 311
8 195
9 78
10 75

我猜该模型正在达到局部最小值,只需将所有内容标记为类别 1 就足够了。

关于某些盒子检测不到的问题:我又尝试训练了,但是这次没有区分品牌。相反,我试图教模型什么是烟盒。它仍然没有检测到所有的盒子。

然后我决定裁剪输入图像并将其作为输入提供。只是看看结果是否有所改善!

事实证明,输入图像的尺寸远大于模型接受的 600 x 1024。因此,它将这些图像缩小到 600 x 1024,这意味着烟盒正在丢失它们的细节 :)

所以,我决定测试原始模型,该模型在所有类别的裁剪图像上进行了训练,它的工作原理就像一个魅力 :)

Original image

这是模型在原图上的输出

Top left corner cropped from original image

这是我裁剪左上角四分之一并将其作为输入提供时模型的输出。

感谢所有帮助过的人!并祝贺 TensorFlow 团队在 API 方面的出色工作 :) 现在每个人都可以训练对象检测模型了!

关于python - TensorFlow 对象检测 API 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com