ssd训练错误

来源:互联网 发布:网络销售的工作总结 编辑:程序博客网 时间:2024/06/05 00:21

今天,填充数据重新训练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)


观察错误大致是因为图像通道不一致,查询资料只SSD只支持3、4通道的数据,不支持单通道的图,因此解决方法就是写个脚本将灰度图从数据集里剔除。重新运行就可。

如何查询灰度图:可以用下面的表达来查找xml中所有depth!=3的图像
grep \<depth\>[^3]

 

然后用脚本将对应xml与jpg删除

原创粉丝点击