【问题标题】:SegNet - CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERRORSegNet - CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR
【发布时间】:2017-08-29 14:26:39
【问题描述】:

我试图在 SegNet(使用 caffe)上训练我自己的数据集,我准备了与 segnet tutorial 相同的数据集。当我尝试运行火车时,它显示了这个错误:

I0915 08:33:50.851986 49060 net.cpp:482] Collecting Learning Rate and Weight Decay.
I0915 08:33:50.852017 49060 net.cpp:247] Network initialization done.
I0915 08:33:50.852030 49060 net.cpp:248] Memory required for data: 1064448016
I0915 08:33:50.852730 49060 solver.cpp:42] Solver scaffolding done.
I0915 08:33:50.853065 49060 solver.cpp:250] Solving VGG_ILSVRC_16_layer
I0915 08:33:50.853080 49060 solver.cpp:251] Learning Rate Policy: step
F0915 08:33:51.324506 49060 math_functions.cu:123] Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0)  CUBLAS_STATUS_MAPPING_ERROR
*** Check failure stack trace: ***
    @     0x7fa27a0d3daa  (unknown)
    @     0x7fa27a0d3ce4  (unknown)
    @     0x7fa27a0d36e6  (unknown)
    @     0x7fa27a0d6687  (unknown)
    @     0x7fa27a56946e  caffe::caffe_gpu_asum<>()
    @     0x7fa27a54b264  caffe::SoftmaxWithLossLayer<>::Forward_gpu()
    @     0x7fa27a440b29  caffe::Net<>::ForwardFromTo()
    @     0x7fa27a440f57  caffe::Net<>::ForwardPrefilled()
    @     0x7fa27a436745  caffe::Solver<>::Step()
    @     0x7fa27a43707f  caffe::Solver<>::Solve()
    @           0x406676  train()
    @           0x404bb1  main
    @     0x7fa2795e5f45  (unknown)
    @           0x40515d  (unknown)
    @              (nil)  (unknown)

我的数据集是 .jpg (train) .png (labels gray-scale images) 和 .txt file as in the tutorial。可能是什么问题?感谢您的帮助

【问题讨论】:

  • 当我把loss_param: { weight_by_label_freqs: true ignore_label: 2 class_weighting: 99 class_weighting: 1 }中的loss_param: { weight_by_label_freqs: true ignore_label: 2 class_weighting: 99 class_weighting: 1 }改成loss layer问题改成:math_functions.cu:123] Check failed: status == CUBLAS_STATUS_SUCCESS (13 vs. 0) CUBLAS_STATUS_EXECUTION_FAILED`
  • 我解决了。问题是我的 GT 图像带有 alpha 层。那是错的。代码行示例:img = Image.open(filename).convert('L')(而不是 (LA))
  • 嗨,我也有同样的问题。能给个正确的答案吗?而不是在 cmets 中回答您的问题?
  • @thigi 您的地面实况图像必须是 1 个通道(没有 alpha 通道)。所以我将它们从RGB 转换为L 图像。
  • Ok :) 并且您将图像存储在 png 中,其值可能为 0-255,但您仅使用值:例如 0,1,2?

标签: neural-network caffe


【解决方案1】:

ground-truth 图像应该是没有 alpha 层的 1 通道 0-255 图像,因此 NN 会识别类之间的差异。

img = Image.open(filename).convert('L') # Not 'LA' (A - alpha)

【讨论】:

    【解决方案2】:

    感谢isn4,解决方法如下: 事实证明,您必须更改像素值的范围以及像素值的实际数量。如果您有 256 个可能的像素值 (0-255) 并且没有每个像素值的类权重,Segnet 就会感到困惑。因此,我将所有 PNG 标签图像从 255 和 0 作为像素可能性更改为 1 和 0 作为像素可能性。 这是我的python脚本:

    import os
    import cv2
    import numpy as np
    img = cv2.imread('/usr/local/project/old_png_labels/label.png, 0)
    a_img = np.array(img, np.double)
    normalized = cv2.normalize(img, a_img, 1.0, 0.0, cv2.NORM_MINMAX)
    cv2.imwrite('/usr/local//project/png_labels/label.png, normalized)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多