SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常

今天在开始做SSD训练的时候,报了一个错误 导致训练无法 进行下去:

OpenCV Error: Assertion failed ((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) in cvtColor, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp, line 3959 terminate called after throwing an instance of ‘cv::Exception’ what(): /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp:3959: error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) in function cvtColor * Aborted at 1492071248 (unix time) try “date -d @1492071248” if you are using GNU date * PC: @ 0x7f1497764428 gsignal * SIGABRT (@0x3e800000985) received by PID 2437 (TID 0x7f1455438700) from PID 2437; stack trace: * @ 0x7f14977644b0 (unknown) @ 0x7f1497764428 gsignal @ 0x7f149776602a abort @ 0x7f1497d9d84d __gnu_cxx::__verbose_terminate_handler() @ 0x7f1497d9b6b6 (unknown) @ 0x7f1497d9b701 std::terminate() @ 0x7f1497d9b919 __cxa_throw @ 0x7f1487838c66 cv::error() @ 0x7f1489de2f91 cv::cvtColor() @ 0x7f149967b817 caffe::AdjustSaturation() @ 0x7f149967fc0b caffe::RandomSaturation() @ 0x7f14996802ef caffe::ApplyDistort() @ 0x7f149982f743 caffe::DataTransformer<>::DistortImage() @ 0x7f14997a5096 caffe::AnnotatedDataLayer<>::load_batch() @ 0x7f14997fbecb caffe::BasePrefetchingDataLayer<>::InternalThreadEntry() @ 0x7f1499685d45 caffe::InternalThread::entry() @ 0x7f149751a5d5 (unknown) @ 0x7f1496dd36ba start_thread @ 0x7f149783582d clone @ 0x0 (unknown) Aborted (core dumped)

看这个错误信息只知道是opencv的一个断言错误 ,因为 没glog输出信息,无从知道是从哪个源文件抛出的。但是看到这个assert表达式(scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) 感觉可能与数据集的图像通道数有关,记得faster rcnn ,ssd这多数的模型都要求是3通道RGB的图像,会不会我生成的数据集中有1通道或4通道的图像呢? 于是在数据集Annotations文件夹下执行grep搜索

guyadong@gyd-u16:~/data/VOCdevkit/VOC2007/Annotations$ grep \<depth\>1 *

果然发现有一些depth为1的图像(也就是灰度图像)在里面。重新修改了数据集生成代码(我们自己有一个图像数据标注及训练数据生成系统,java代码),只提取depth为3的图像生成VOC2007数据集,再执重新执行create_list.sh,create_data.sh生成lmdb,再开始训练 ,则问题解决 :

cd caffe-ssd
./data/VOC2007/create_list.sh
./data/VOC2007/create_data.sh
python ./examples/ssd/ssd_pascal.py 

另外,在训练时glog输出如下的错误 ,也是同样的原因 :

annotated_data_layer.cpp:205
CHECK(std::equal(top_shape.begin() + 1, top_shape.begin() + 4,
              shape.begin() + 1)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

1512 转向游戏

1512 转向游戏 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题目描述 Description 小明自认为...

2686
来自专栏利炳根的专栏

学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵

线性代数,面向连续数学,非离散数学。《The Matrix Cookbook》,Petersen and Pedersen,2006。Shilov(1977)。

3030
来自专栏云霄雨霁

加权有向图----多源最短路径问题(Floyd算法)

1260
来自专栏C/C++基础

维诺图(Voronoi Diagram)分析与实现

又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。

1011
来自专栏章鱼的慢慢技术路

《算法图解》第七章笔记_迪杰斯特拉算法

1464
来自专栏xingoo, 一个梦想做发明家的程序员

动态规划

基本思想:将待求解问题分解成若干子问题,先求解子问题,然后从子问题的解中得到原问题的解。 与分治不同的是,经分解得到的子问题往往不是互相独立的。 若用分治法来解...

1765
来自专栏专知

计算机视觉的不同任务

【导读】 在计算机视觉领域,有许多不同的任务:图像分类、目标定位、目标检测、语义分割、实例分割、图像字幕等。

722
来自专栏Pulsar-V

OpenCV图像哈希计算及汉明距离的计算

OpenCV均值哈希与感知哈希计算,比对图像相似度,当计算出来的汉明距离越大,图像的相似度越小,汉明距离越小,图像的相似度越大,这种没有基于特征点的图像比对用在...

3134
来自专栏灯塔大数据

每周学点大数据 | No.45 基于路径的图算法

No.45期 基于路径的图算法 Mr. 王:接下来我们看一类具体的问题,这类问题叫作基于路径的图算法。这类算法的目标是计算节点间关于路径的信息。在这类问题中,图...

3155
来自专栏数据处理

ECC非对称加密算法

2024

扫码关注云+社区