在OpenCV中使用Caffe模型

问题描述 投票:1回答:1

我正在尝试在OpenCV中使用yahoo nsfw模型。这是我尝试过的。我只是从存储库复制了deploy.prototxtresnet_50_1by2_nsfw.caffemodel

import cv2 as cv
cvNet = cv.dnn.readNetFromCaffe('deploy.prototxt','resnet_50_1by2_nsfw.caffemodel')
image_path = 'adult.jpg'
image = cv.imread(image_path)
blob = cv.dnn.blobFromImage(image, 1, (224,224), (0,0,0), True, crop=False)
cvNet.setInput(blob)
detections = cvNet.forward()
print(detections)

无论我输入什么图像,都会得到像[[0.9855554 0.01444463]]这样的输出,第一个值始终较大。我选择了图像尺寸(224, 224),因为在deploy.prototxt中找到了以下内容:

name: "ResNet_50_1by2_nsfw"
layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 1 dim: 3 dim: 224 dim: 224 } }
}

我做错了什么?

python opencv deep-learning caffe
1个回答
1
投票

我不确定您是否已经设法解决了这个问题,并且我不是专家,但是我发现很奇怪,在创建Blob时您没有执行均值减法(均值设置为(0, 0,0)。查看您链接的Github存储库,作者确实在https://github.com/yahoo/open_nsfw/blob/master/classify_nsfw.py第114行中执行了均值减法:

caffe_transformer.set_mean('data', np.array([104, 117, 123]))

如果对网络进行分类,可能会产生影响。我建议在您的OpenCV实现中使用它们的参数。

© www.soinside.com 2019 - 2024. All rights reserved.