Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR

用KolektorSDD数据集跑caffe的unet没什么问题,虽然结果检测不到缺陷
遂用C1数据集尝试。但是训练时候报了如题的错误。

别人的说法:
1.Check failed: status == CUBLAS_STATUS_SUCCESS (11 vs. 0) CUBLAS_STATUS_MAPPING_ERROR - thesby的专栏 https://blog.csdn.net/thesby/article/details/51734199

我是做图像分割时出现这个问题的,caffe用opencv读取图像时,是读取的0–255,这样读取的label也是如此。这下就明白了,caffe如果读到了255,它就认为是有0–255的标签,但是我们最后的输出比这个维度小,这样就不对了,所以需要在输入图片是指定 scale

transform_param {
scale: 0.00390625
}
总结: 制作标签时一定要注意从0开始一个个地往后排,不能弄错

2.https://github.com/alexgkendall/caffe-segnet/issues/101

FIXED: Turns out you have to change the range of the pixel values as well as the actual number of pixel values. Segnet gets confused if you have 256 possible pixel values (0-255) and don’t have class weightings for each of them. So I changed all of my PNG label images from 255 and 0 as the pixel possibilities to 1 and 0 as the pixel possibilities. Here’s my python script for doing so:

修正:结果原来是:你必须改变像素值的范围以及像素值的实际数量。如果您有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)

关于查看像素值:

import numpy as np
from PIL import Image

img=Image.open('/home/zzn/Projects/tensorflow-models2018/c1data/SegmentationClassRaw/0595.png')
img=np.array(img)
np.unique(img)

改了标签像素后,可以训练了:

#coding=utf-8
import os
import cv2

#
# im=cv2.imread('F:\\Qin\\KolektorSDD\\SegmentationClassRaw\\0101Part5.png')
# cv2.imshow('hao',im)
# cv2.waitKey(0)

# import numpy as np
# from PIL import Image
#
# img=Image.open('F:\\Qin\\KolektorSDD\\label.png')
# img=np.array(img)
# print np.unique(img)

# 改256的像素值为1
import os
import cv2
import numpy as np
for file in os.listdir('F:\\Qin\\c1\\labels'):
    img = cv2.imread('F:\\Qin\\c1\\labels\\'+file, 0)
    a_img = np.array(img, np.double)
    normalized = cv2.normalize(img, a_img, 1.0, 0.0, cv2.NORM_MINMAX)
    cv2.imwrite('F:\\Qin\\c1\\labels2\\'+file, normalized)

print 'complete'

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值