我的环境配置是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
所需原料:opencv-python + yourmobilenet.caffemodel + yourdeploy.prototxt 利用opencv3.3.1之后推出的dnn模块,支持很多模型的导入.这次我选择Caffe的Mobilenet模型. 第二个参数是scale,第三个是送入网络的尺寸,然后是每个通道的均值....
caffe_GoogLeNet_opencv_DNN.zip-嵌入式文档类资源-CSDN下载 Windows DNN模块需要opencv版本是3.3以上。配置VS环境加入opencv路径。 代码逻辑: 预设文件加载路径; 加载图片; 读取标签文件类别名称,存储到vector变量中。 API调用caffe模型; 输入图片数据需要格式转换; 前向推理模型,得到结果; 对结果数据进行reshape,找到...
参考链接 百度云盘 提取码:egom 模型链接 ####### 代码目录...
GitHub代码地址:https://github.com/HandsomeHans/Use-Python-to-call-Caffe-module 前言 mnist训练集是单通道的,所以有两个版本。有一些细节不同,但功能相同。思路是将图片丢进网络进行一次前向传播,通过最后softmax层得到对应每一类别的概率,取最大概率类。 caffe/python/classify.py 是调用caffe模块...
项目场景: 当利用opencv4.2调用EAST的pb模型出错的解决方案 问题描述 解决方案: 需要在model.py里修改三处...
转载链接: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的deploy.prototxt,再用python代码写XXXX.caffemodel文件,最后调用caffe模型进行预测. 根据tensorflow的网络结构代码写caffe的deploy.prototxt 写完之后可以将代码输入到这里(工具)检测写法是否正确: 验证...
先从Torch、tensorflow 等导入模型: 然后读出各层名称: 按名称得到id,: 按id得到各层训练参数: 然后按caffe格式保存。 完整cpp: ...
概述 系统环境: Ubuntu 14.04 软件环境: OpenCV 3.1+opencv_contrib ,caffe,code::blocks 整体思路是:用已知字母数据集为训练样本,利用caffe内的改进LeNet模型训练得到一个caffemodel;然后利用OpenCV的dnn模块(在opencv_contrib包内)加载model和网络文件,再进行预测结果的输出。 训练 选择网络 选Le...