dar*_*ake 6 object-detection false-positive non-maximum-suppression tensorflow object-detection-api
我正在使用fast_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。但是,但是,看到评估,在同一个检测到的对象(例如this和this)上有很多多个边界框,并且有很多误报(房子被检测为手枪)。例如,在我拍摄的这张照片中(后来应用了模糊滤镜),模型将人和汽车检测为手枪,以及正确检测。
数据集与 tfrecords 和标签图一起上传到这里。我使用了这个配置文件,其中我唯一更改的内容是:num_classes为 1、fine_tune_checkpoint、train 和 eval 的input_path和label_map_path以及num_examples。 由于我认为多个框是非最大抑制问题,因此我将score_threshold(第 73 行)从 0 更改为 0.01,将iou_threshold(第 74 行)从 1 更改为 0.6。使用标准值,结果比这更糟糕。
我该怎么做才能获得良好的检测结果?我应该改变什么?也许我错过了一些关于参数调整的东西......
谢谢
我认为在深入研究参数调整(即提到的score_threshold)之前,您必须检查您的数据集。
我没有检查您共享的整个数据集,但从高级角度来看,我发现的主要问题是大多数图像非常小且纵横比变化很大。
在我看来,这与您的配置文件的这一部分发生冲突:
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600
max_dimension: 1024
}
}
Run Code Online (Sandbox Code Playgroud)
如果采用数据集的其中一张图像并手动应用该转换,您将看到小图像的结果非常嘈杂,而具有不同纵横比的许多图像的结果非常变形。
我强烈建议您使用更清晰的图像重新构建数据集,并尝试使用填充、裁剪或其他策略对具有不寻常纵横比的图像进行预处理。
如果你想坚持使用小图像,你至少必须改变最小和最大尺寸,image_resizer但根据我的经验,这里最大的问题是数据集,我会花时间试图解决这个问题。
钯。
如果我们认为它来自数据集的一个完全不同的域,我不认为房子误报是一个大问题。
您可能可以调整最小置信度以将检测视为真阳性并将其删除。
如果你把 COCO 的当前获胜者和像卡通一样的奇怪图像喂给它,你会发现它会产生很多误报。
因此,这更像是当前对象检测方法的一个问题,它对域更改不具有鲁棒性。
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |