Check failed: ‘anno‘ Must be non NULL的问题解决

前言

在用caffe框架训练SSD模型时,需要先将VOC格式数据集转换成LMDB格式。在运行create_data.sh脚本时会遇到下面的问题

F0801 12:18:53.032622 21270 io.cpp:328] Check failed: 'anno' Must be non NULL
*** Check failure stack trace: ***
    @     0x7fc12a1d20cd  google::LogMessage::Fail()
    @     0x7fc12a1d3f33  google::LogMessage::SendToLog()
    @     0x7fc12a1d1c28  google::LogMessage::Flush()
    @     0x7fc12a1d4999  google::LogMessageFatal::~LogMessageFatal()
    @     0x7fc12a80e2c5  google::CheckNotNull<>()
    @     0x7fc12a80b69f  caffe::ReadXMLToAnnotatedDatum()
    @     0x7fc12a80d48e  caffe::ReadRichImageToAnnotatedDatum()
    @     0x5651cc1cd351  (unknown)
    @     0x7fc128db0b97  __libc_start_main
    @     0x5651cc1cde0a  (unknown)

定位 

网上说这个是xml格式的问题,但是没有具体是哪方面的问题。所以只能在src/caffe/util/io.cpp添加打印信息来看具体原因。

Check failed: ‘anno‘ Must be non NULL的问题解决_第1张图片

添加上面贴图中的打印信息,如红框所示,来看是哪个xml标注文件引起anno is NULL。

找到有问题的xml后,用vi将该它打开后是下面这个样子。

显然里面内面格式(空格,换行以及缩进等) 全部都错了。貌似也没有什么好办法来更正该格式(dos2unix试过了,没有作用)。只能去掉这些有问题的样本或重新编辑。

 重新sudo sh create_data.sh就可以正确的将voc格式数据转换成lmdb了,如下图所示。

Check failed: ‘anno‘ Must be non NULL的问题解决_第2张图片

 

 

你可能感兴趣的:(深度学习)