首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mAP随着训练tensorflow目标检测固态硬盘的减少而降低

mAP随着训练tensorflow目标检测固态硬盘的减少而降低
EN

Stack Overflow用户
提问于 2018-02-03 15:59:49
回答 1查看 3.3K关注 0票数 8

我正在尝试训练一个SSD移动网络探测器来检测显微图像中的细胞核。我在Ubuntu 16.04上使用tensorflow对象检测API和tensorflow (1.4版)的GPU实现。我的输入图像是带有注释的细胞核的256x256 RGB jpg瓦片。

当我开始训练时,我看到mAP有了很好的增加,在大约6k全局步长(批量大小为12)时,我可以检测到大多数细胞核,但也有一些多次检测到相同的细胞核。

奇怪的是,在这一点之后,mAP开始下降,即使TotalLoss继续下降,模型检测到的细胞核也越来越少。在100k步,几乎没有检测到原子核。

我对SSD使用标准的配置文件,只是我降低了匹配/不匹配的边界。如果我不使用这个修改,这个模型就很难检测到任何细胞核,因为它们是小物体,并且有太少的盒子与它们重叠。

代码语言:javascript
复制
matcher {
  argmax_matcher {
    matched_threshold: 0.3
    unmatched_threshold: 0.3
    ignore_thresholds: false
    negatives_lower_than_unmatched: true
    force_match_for_each_row: true
  }

为什么在TotalLoss提高的情况下,mAP和检测精度会随着时间的推移而下降?我对结果的直觉是,检测模型变得越来越准确(从来没有假阳性),但敏感度越来越低(大量假阴性)。

非常感谢您的任何建议!

(这里有一些来自tensorboard的示例图像)

0 steps

1241 steps

53024 steps

92176 steps

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-18 06:20:57

好的,在对配置文件进行了一些实验(=盲目猜测)之后,我想我找到了问题的答案--我把它放在这里,希望其他人能从中受益。

首先,mAP下降的原因可能是设置:

代码语言:javascript
复制
matched_threshold: 0.3
unmatched_threshold: 0.3

从我的实验来看,将这个设置降低到0.5以下(就像我做的那样)似乎会破坏模型的稳定性,并使其在训练过程中崩溃(随着时间的推移,mAP会逐渐减少)。

其次,当试图在显微图像中检测细胞核时(这可能也适用于其他已知大小的小物体),SSD似乎对锚生成器中的最小/最大设置非常敏感。

代码语言:javascript
复制
anchor_generator {
  ssd_anchor_generator {
    num_layers: 6
    min_scale: 0.2
    max_scale: 0.95

当我刚开始的时候(经常失败),我对这个设置使用了大致的估计,当我尝试不同的图像大小等等时,突然之间,128x128像素的模型变得非常好,mAP 0.9或多或少可以检测到每个细胞。当我试图弄清楚为什么它突然起作用时,我在图像中注释对象的相对大小上打印了直方图,我意识到我幸运地使用了128x128型号的配置文件,并精确地命中了范围。

然后我回到所有其他模型和大小,当使用特定图像大小的细胞核大小的精确范围时,该模型表现完美,即使在更大的图像大小(例如512px)中,细胞核仅占图像宽度的3-15%。即使在1024px,下采样到512,原子核只覆盖图像宽度的1-7%,只要精确指定大小范围,该模型也可以执行。

对于我的应用程序来说,这实际上不是一个问题,因为我预先知道应该使用什么大小的功能,但对于更普遍的问题,我猜这是一个弱点。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48595240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档