我制作了以下 python 层并将其添加到 LeNet 架构中。但是在构建模型时会出错。我将使用 Numpy 应用我的 Python 层,但是当我使用 OpenCV 时会出现错误。下面我从日志文件中添加我的代码和相应的错误。
导入简历2 进口咖啡 随机导入def doEqualizeHist(img): img = img.astype(np.uint8) img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) 返回 cv2.equalizeHist(img)
类 EqualizeLayer(caffe.Layer): def 设置(自我,底部,顶部): assert len(bottom) == 1, '需要一个 layer.bottom' assert bottom[0].data.ndim >= 3, '需要图像数据' 断言 len(top) == 1, '需要一个 layer.top'
def reshape(self, bottom, top): # Copy shape from bottom top[0].reshape(*bottom[0].data.shape) def forward(self, bottom, top): # Copy all of the data top[0].data[...] = bottom[0].data[...] for ii in xrange(0, top[0].data.shape[0]): imin = top[0].data[ii, :, :, :].transpose(1, 2, 0) top[0].data[ii, :, :, :] = doEqualizeHist(imin).transpose(2, 0, 1) def backward(self, top, propagate_down, bottom): pass
错误消息:0812 06:41:53.452097 14355 net.cpp:723] 忽略源层训练数据 OpenCV 错误:在 cvtColor、文件 /build/opencv-SviWsf/ 中断言失败 (scn == 3 || scn == 4) opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp,第 3737 行 Traceback(最近一次调用最后):文件“/var/lib/digits/jobs/20170812-064148-f44d/digits_python_layers.py”,第 27 行,向前 top[0].data[ii, :, :, :] = doEqualizeHist(imin).transpose(2, 0, 1) 文件“/var/lib/digits/jobs/20170812-064148-f44d /digits_python_layers.py”,第 8 行,在 doEqualizeHist img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cv2.error: /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color。 cpp:3737: 错误: (-215) scn == 3 || 函数 cvtColor 中的 scn == 4