日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 *
  • 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
  • 1
  • 2
  • 3
  • 4

另外,在訓練時glog輸出如下的錯誤 ,也是同樣的原因 :

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

版權聲明:本文為博主原創文章,轉載請注明源地址。 https://blog.csdn.net/10km/article/details/70160645

總結

以上是生活随笔為你收集整理的SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。