我正在训练SSD模型,方法是遵循wiki上指定的步骤到使用自定义数据集对SSD进行培训。我有大约60k图像与背景作为标签,以消除假阳性。(请注意,我没有任何只有背景标签的图像。)创建用于培训和测试的lmdb文件,没有任何问题。当我开始培训时,我会得到以下错误:
bbox_util.cpp:1066] Check failed: background_label_id != label (0 vs. 0) Found background label in the dataset.
*** Check failure stack trace: ***
@ 0x7f00cfcef5cd google::LogMessage::Fail()
@ 0x7f00cfcf1433 google::LogMessage::SendToLog()
@ 0x7f00cfcef15b google::LogMessage::Flush()
@ 0x7f00cfcf1e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x7f00d057ed71 caffe::GetGroundTruth<>()
@ 0x7f00d03f5f7e caffe::MultiBoxLossLayer<>::Forward_cpu()
@ 0x7f00d0541537 caffe::Net<>::ForwardFromTo()
@ 0x7f00d05418a7 caffe::Net<>::Forward()
@ 0x7f00d05db510 caffe::Solver<>::Step()
@ 0x7f00d05dbf9e caffe::Solver<>::Solve()
@ 0x40bcf4 train()
@ 0x4077c8 main
@ 0x7f00ce486830 __libc_start_main
@ 0x408099 _start
@ (nil) 我搜索了关于git回购的同样问题,但所提供的解决方案都没有奏效。
这是我用于培训的脚本:ssd.py,生成错误的文件:util.cpp
指向源文件的链接:src/首席执行官e
如何在没有任何问题的情况下启动数据集中有标记背景的培训(以消除假阳性)?
发布于 2019-01-14 07:31:30
首先,在当前的Caffe实现中,类id等于0是不可能的,因为它是为后台保留的。从技术上讲,您可能会为它使用另一个类id,但是它将是不一样的。
我与SSD工作了很多,从来没有听说过明确的标签背景。此外,我认为这没有任何意义,因为背景的概念从根本上不同于显著的物体(例如,在非最大抑制)。
消除假阳性是训练目标的一部分(减少假阳性、提高真阳性率、减少假阴性等)。因此,只要在目标数据集上对模型进行适当的培训,就可以帮助您完成这一任务。
如果您的动机是从没有注释类对象的图像中抽取背景样本:您可能会引入一个辅助类来实现这一点,然后删除它/忽略它的检测。然而,通常SSD对阴性样本的数量没有问题。实际上,存在一个限制负样本比的超参数,以不抑制阳性对象样本。默认值为3:1 (neg/pos),但您可以使其更大,以查看这是否有助于您完成任务。
https://stackoverflow.com/questions/54126612
复制相似问题