代码先锋网 代码片段及技术文章聚合

opencv调用caffe模型

我的环境配置是python 3.6.2 + opencv 3.4.5。

下面是crowd counting计算人群密度图的代码。

# coding:utf-8

from __future__ import print_function

import numpy as np
import pylab
import matplotlib.pyplot as plt
import cv2
from cv2 import dnn
import time


cm_path = 'C:\\Users\\admin\\Desktop\\'



if __name__ == "__main__":

    fn = r'C:\Users\admin\Desktop\ShanghaiTech_Crowd_Counting_Dataset\part_B_final\test_data\images\IMG_191.jpg'

    im_ori = cv2.imread(fn)
    plt.figure(1)
    plt.imshow(im_ori)
    plt.axis('off')
    pylab.show()


    blob = dnn.blobFromImage(im_ori, 1, (1024, 768), (0, 0, 0), True)

    print("Input:", blob.shape, blob.dtype)

    net = dnn.readNetFromCaffe(cm_path + 'B_testdemo.prototxt', cm_path + 'B2_iter_93000.caffemodel')

    t = time.time()
    net.setInput(blob)
    density = net.forward()
    elapsed = time.time() - t

    print('inference image: %.4f seconds.' % elapsed)

    density = density/1000.0

    print("Output:", density.shape, density.dtype)

    person_num = np.sum(density[:])
    print("number: ",person_num)

    plt.figure(1)
    plt.imshow(density[0, 0, :, :])
    plt.axis('off')
    pylab.show()

dnn.blobFromImage(input_img,scalefactor, (width, height), mean, swapRB)

mean和scalefactor是用来对图像做标准化的,先减均值,再乘以一个系数。images -= mean;images *= scalefactor

swapRB是选择是否交换R与B颜色通道,opencv默认读取的图片是BGR格式,而训练模型时,往往是转换成RGB输入,所以这里通常设置为True,调换R与B通道。

dnn.readNetFromCaffe(modelTxt, caffe_modelBin)

输入的两个参数分别是网络结构.prototxt文件和模型文件。

 

【参考资料】

1、使用OpenCV_python中的DNN调用CaffeModel识别图像

2、https://github.com/linzhirui1992/Crowd-Counting

 

版权声明:本文为u011285477原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011285477/article/details/89030957

智能推荐

Caffe模型MobileNet与opencv的结合

所需原料:opencv-python + yourmobilenet.caffemodel + yourdeploy.prototxt 利用opencv3.3.1之后推出的dnn模块,支持很多模型的导入.这次我选择Caffe的Mobilenet模型. 第二个参数是scale,第三个是送入网络的尺寸,然后是每个通道的均值....

opencv_DNN模块加载caffe模型

caffe_GoogLeNet_opencv_DNN.zip-嵌入式文档类资源-CSDN下载 Windows DNN模块需要opencv版本是3.3以上。配置VS环境加入opencv路径。 代码逻辑: 预设文件加载路径; 加载图片; 读取标签文件类别名称,存储到vector变量中。 API调用caffe模型; 输入图片数据需要格式转换; 前向推理模型,得到结果; 对结果数据进行reshape,找到...

OpenCV 加载caffe 模型进行推理

参考链接 百度云盘 提取码:egom 模型链接 ####### 代码目录...

【Python】【Caffe】四、classification检测模型《python调用caffe模块》

GitHub代码地址:https://github.com/HandsomeHans/Use-Python-to-call-Caffe-module 前言 mnist训练集是单通道的,所以有两个版本。有一些细节不同,但功能相同。思路是将图片丢进网络进行一次前向传播,通过最后softmax层得到对应每一类别的概率,取最大概率类。 caffe/python/classify.py 是调用caffe模块...

猜你喜欢

opencv调用pb模型报错

项目场景: 当利用opencv4.2调用EAST的pb模型出错的解决方案 问题描述 解决方案: 需要在model.py里修改三处...

opencv3.3调用 caffe mnist 模型进行手写数字的分类(该博主的博客有很多关于OpenCV DNN模块的文章)

转载链接:https://blog.csdn.net/hust_bochu_xuchao/article/details/78931972 上一篇博文,正确跑通了mnist数据集,得到了lenet_iter_5000.caffemodel  lenet_iter_5000.solverstate  lenet_iter_10000.caffemodel  lenet_...

tensorflow模型转化为caffe模型并调用预测

tensorflow模型转化为caffe模型并调用预测 本文一共分为三个部分首先根据tensorflow的网络结构代码写caffe的deploy.prototxt,再用python代码写XXXX.caffemodel文件,最后调用caffe模型进行预测. 根据tensorflow的网络结构代码写caffe的deploy.prototxt 写完之后可以将代码输入到这里(工具)检测写法是否正确: 验证...

从 OpenCV dnn 导出模型训练参数(按caffe格式)

先从Torch、tensorflow 等导入模型: 然后读出各层名称: 按名称得到id,: 按id得到各层训练参数: 然后按caffe格式保存。 完整cpp:  ...

基于OpenCV和caffe的字母识别模型训练

概述 系统环境: Ubuntu 14.04 软件环境: OpenCV 3.1+opencv_contrib ,caffe,code::blocks 整体思路是:用已知字母数据集为训练样本,利用caffe内的改进LeNet模型训练得到一个caffemodel;然后利用OpenCV的dnn模块(在opencv_contrib包内)加载model和网络文件,再进行预测结果的输出。 训练 选择网络 选Le...