SSD训练自己的数据 OpenCV Error

SSD错误:

OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor, file /home/ubuntu/opencv-3.3.0/modules/imgproc/src/color.cpp, line 10705
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/ubuntu/opencv-3.3.0/modules/imgproc/src/color.cpp:10705: error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) in function cvtColor

*** Aborted at 1530001582 (unix time) try "date -d @1530001582" if you are using GNU date ***
PC: @     0x7f7cf52d3428 gsignal
*** SIGABRT (@0x3e80000390c) received by PID 14604 (TID 0x7f7cbd239700) from PID 14604; stack trace: ***
    @     0x7f7cf52d34b0 (unknown)
    @     0x7f7cf52d3428 gsignal
    @     0x7f7cf52d502a abort
    @     0x7f7cf5f38b39 __gnu_cxx::__verbose_terminate_handler()
    @     0x7f7cf5f371fb __cxxabiv1::__terminate()
    @     0x7f7cf5f37234 std::terminate()
    @     0x7f7cf5f37416 __cxa_throw
    @     0x7f7cebf5eca2 cv::error()
    @     0x7f7cebf5ee33 cv::error()
    @     0x7f7ce7ff1605 cv::cvtColor()
    @     0x7f7cf6ff33c8 caffe::AdjustSaturation()
    @     0x7f7cf6ff84fb caffe::RandomSaturation()
    @     0x7f7cf6ff8c5f caffe::ApplyDistort()
    @     0x7f7cf7062812 caffe::DataTransformer<>::DistortImage()
    @     0x7f7cf70db3b6 caffe::AnnotatedDataLayer<>::load_batch()
    @     0x7f7cf710325f caffe::BasePrefetchingDataLayer<>::InternalThreadEntry()
    @     0x7f7cf72335a5 caffe::InternalThread::entry()
    @     0x7f7ce72955d5 (unknown)
    @     0x7f7cdd5e16ba start_thread
    @     0x7f7cf53a541d clone
    @                0x0 (unknown)
Aborted (core dumped)

根据我的百度说这个错误信息跟数据集的通道数有关,所有用一下的代码来检测数据集中是否有1通道或者4通道的图像

import os
import os.path
import xml.dom.minidom

#获得文件夹中所有文件
FindPath = '/home/ubuntu/data/VOCdevkit/mydataset/Annotations'
FileNames = os.listdir(FindPath)
s = []
# xml_path = '/home/ubuntu/Desktop/new/'
for file_name in FileNames:
    # if not os.path.isdir(file_name):  # 判断是否是文件夹,不是文件夹才打开
    #     print file_name
    #
    #读取xml文件
    dom = xml.dom.minidom.parse(os.path.join(FindPath,file_name))

    root = dom.documentElement

    # 获取标签对name之间的值
    name = root.getElementsByTagName('depth')
    for i in range(len(name)):
        if name[i].firstChild.data == '1':
            print file_name
        if name[i].firstChild.data == '4':
            print file_name

果然发现有一些depth为1的图像(也就是灰度图像)在里面。删除这些图像的xml文件。然后重新生成ImageSets/Main中的文件。之后重新执行create_list.sh,create_data.sh生成lmdb,再开始训练 。
另外,在训练时glog输出如下的错误 ,也是同样的原因 :

annotated_data_layer.cpp:205
CHECK(std::equal(top_shape.begin() + 1, top_shape.begin() + 4,
              shape.begin() + 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值