Tensorflow高假阳性率和非最大抑制问题

问题描述 投票:3回答:1

我正在使用faster_rcnn_inception_v2_coco作为预训练模型在Windows 10上训练Tensorflow对象检测。我在Windows 10上,在NVIDIA GeForce GTX 1080,CUDA 9.0和CUDNN 7.0上使用tensorflow-gpu 1.6。

我的数据集只包含一个对象,“手枪”和3000个图像(2700列车组,300个测试集)。图像的大小从~100x200到~800x600。

我训练这个模型进行了55k次迭代,其中mAP为0.8,而TotalLoss似乎收敛到0.001。但是,看到评估,在同一个检测到的对象上有很多多个边界框(例如thisthis),以及许多误报(house detected as a pistol)。例如,在我接受的this photo中(后来应用模糊滤镜),模型将人和车检测为手枪,以及正确的检测。

数据集上传了here,以及tfrecords和标签图。我使用了this config file,其中我改变的唯一内容是:num_classes为1,fine_tune_checkpoint,input_path和train_ref_的tag_map_path,以及num_examples。由于我认为多个框是非最大抑制问题,我将score_threshold(第73行)从0更改为0.01,将iou_threshold(第74行)从1更改为0.6。使用标准值,结果比这更糟糕。

我能做些什么来获得良好的检测?我应该改变什么?也许我想念参数调整......

谢谢

tensorflow object-detection false-positive object-detection-api non-maximum-suppression
1个回答
3
投票

我认为在深入参数调整之前(即上面提到的qazxsw poi),你必须检查你的数据集。

我没有检查你分享的整个数据集,但是从高级别的观点来看,我发现的主要问题是大多数图像都非常小并且具有高度可变的宽高比。

在我看来,这与您配置文件的这一部分冲突:

score_threshold

如果拍摄数据集中的一个图像并手动应用该变换,您将看到小图像的结果非常嘈杂,而对于许多具有不同宽高比的图像,结果非常变形。

我强烈建议您使用更多定义的图像重新构建数据集,并尝试使用填充,裁剪或其他策略对具有不寻常宽高比的图像进行预处理。

如果你想坚持使用小图像,你必须至少改变image_resizer { keep_aspect_ratio_resizer { min_dimension: 600 max_dimension: 1024 } } 的最小和最大尺寸,但根据我的经验,这里最大的问题是数据集,我会花时间试图解决这个问题。

钯。

如果我们认为它来自一个完全不同的数据集领域,我认为这个房子误报是个大问题。

您可以调整最小置信度,将检测视为真阳性并将其删除。

如果你拿着COCO的当前赢家并用奇怪的图像喂它,比如从卡通中你会看到它会产生很多误报。

因此,它更像是当前对象检测方法的一个问题,它对域更改不稳健。

© www.soinside.com 2019 - 2024. All rights reserved.