雨哦很成功 2023-06-01 19:22 采纳率: 0%
浏览 41
已结题

关于有关使用cv2加载caffe模型的问题!

有关使用cv2加载caffe模型的问题:
caffe模型的prototxt文件的第一个层为imagedata层,它的具体结构如下:

name: "AlexNet"
layers {
  name: "data"
  type: IMAGE_DATA
  top: "data"
  top: "label"
  transform_param {
    mirror: false
    crop_size: 227
  }
  image_data_param {
    source: "BS/databases06/pipa_features/ffaceregion_feat/train_shuffle.txt"
    batch_size: 1
    new_height: 227
    new_width: 227
  }
}

我想使用cv2加载该模型进行推理,已经有这个模型的prototx文件对应的caffemodel文件,可以成功加载。但根据imagedata层预处理图片,输入之后进行推理时仍然报错,请问应该怎么解决呢?代码为:

import cv2
import numpy as np

prototxt = 'model/alexnet_extraction.prototxt'
caffemodel = 'model/face.caffemodel'
imagelist = '1.jpg'
label_file = 'BS/databases06/pipa_features/ffaceregion_feat/train_shuffle.txt'

# 加载模型
net = cv2.dnn.readNetFromCaffe(prototxt, caffemodel)

# 读取图像和标签数据
with open(label_file, 'r') as f:
    lines = f.readlines()

for line in lines:
    line = line.strip().split(' ')
    image_path = line[0]
    label = int(line[1])

    # 读取图像
    image = cv2.imread('1.jpg')

    # 将图像像素值归一化到 [0, 1] 范围并减去均值
    image = image.astype(np.float32) / 255.0
    mean = np.array([104, 117, 123], dtype=np.float32)
    image -= mean

    # 构建 blob 对象
    blob = cv2.dnn.blobFromImage(image, scalefactor=1.0, size=(227, 227), mean=(104, 117, 123), swapRB=True, crop=False)
    # 设置输入 blob 到网络中
    net.setInput(blob)

    # 运行模型进行推理
    output = net.forward()

    # 处理输出结果
    # TODO: 根据实际需要进行后续处理

报错:

[ERROR:0@1.218] global net_impl.cpp:1164 cv::dnn::dnn4_v20221220::Net::Impl::getLayerShapesRecursively OPENCV/DNN: []:(_input): getMemoryShapes() throws exception. inputs=1 outputs=0/0 blobs=0
[ERROR:0@1.221] global net_impl.cpp:1167 cv::dnn::dnn4_v20221220::Net::Impl::getLayerShapesRecursively     input[0] = [ 1 3 227 227 ]
[ERROR:0@1.221] global net_impl.cpp:1177 cv::dnn::dnn4_v20221220::Net::Impl::getLayerShapesRecursively Exception message: OpenCV(4.7.0) d:\a\opencv-python\opencv-python\opencv\modules\dnn\src\layer_internals.hpp:309: error: (-215:Assertion failed) inputs.size() == requiredOutputs in function 'cv::dnn::dnn4_v20221220::detail::DataLayer::getMemoryShapes'

Traceback (most recent call last):
  File "E:/person_recognition/person_recogintion_personal_photo/main.py", line 36, in <module>
    output = net.forward()
cv2.error: OpenCV(4.7.0) d:\a\opencv-python\opencv-python\opencv\modules\dnn\src\layer_internals.hpp:309: error: (-215:Assertion failed) inputs.size() == requiredOutputs in function 'cv::dnn::dnn4_v20221220::detail::DataLayer::getMemoryShapes'


  • 写回答

5条回答 默认 最新

  • 还有头发的程序员- 2023-06-01 19:39
    关注
    获得0.60元问题酬金

    python调用caffe模型_使用caffe模型测试图片
    可以借鉴下
    https://blog.csdn.net/weixin_35875219/article/details/113517688

    评论

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 创建了问题 6月1日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件