推广 热搜: csgo  vue  2023  angelababy  gps  信用卡  新车  htc  落地  控制 

opencv:DNN模块加载机器学习模型

   2023-08-21 网络整理佚名2040
核心提示:DNN模块3开始,dnn模块加入到主仓库中,目前支持Caffe、、Torch、等深度学习框架。,是开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。是一种灵活高效的独立于语言平台的结构化数据表示方法,类似json/xml。加载网络模型图像转换为模型输入(图像缩放/裁剪/改变通道等,结果是4维的矩阵)image:输入的图像,可以是的mat数据类型。其它方式加载模型

深度神经网络模块

从3.3开始,主仓库中添加了dnn模块,目前支持Caffe、Torch等深度学习框架。

,是针对网络通信过程中的数据存储和协议编解码而开发的一套工具库。 它是一种灵活高效的独立于语言平台的结构化数据表示方法,类似于json/xml。

模型

1. 模型文件
	a. 二进制的protobuf格式描述文件:.pb
	b. protobuf格式文本文件:.pbtxt
2. 加载训练好的模型:readNetFromTensorflow
dnn::Net net = cv::dnn::readNetFromTensorflow("xxx.pb");
3. 读取图像,并把图像转换
Mat img = imread("1.jpg", 1);
Mat inputBlob = dnn::blobFromImage(img, 0.00390625f, Size(256, 256), Scalar(), false,false); 
4. 把图像作为模型输入
net.setInput(inputBlob, "data");     
5. 前向传播(预测)
Mat pred = net.forward("fc2/prob");
6. 取出预测值最大

咖啡模型

1. 模型文件
	a. 模型文件.caffemodel
	b. 描述文件.prototxt
2. 加载模型:readNetFromCaffe

其余过程与

负载网络模型

Net w(const &model, const & = ());

模型:.pb 文件

:.pbtxt 文件

净(常量&,常量&=())

:。文档

:。文档

图像转换为模型输入(图像缩放/裁剪/改变通道等,结果是4维矩阵)

Mat ( image, =1.0, const Size& size = Size(), const &mean = (), bool =true, =true);

image:输入图像,可以是mat数据类型。

:如果训练归一化到0-1之间,那么这个参数应该为0.(1/256),否则为1.0

size:训练时应与输入图像大小一致

mean:这个主要用在caffe中,caffe中经常使用训练数据的均值

:是否交换图像第一通道和最后通道的顺序

crop:如果为true,则为裁剪图像,如果为false,则为按比例缩放图像

进入

void ( blob, const &name = "", = 1.0, const &mean = ())

blob:输入数据

name:输入层的名称

: 飞涨

mean:均值(像素值减去该均值)

输出

Mat(const &=());

:输出层的名称

其他加载模型的方法

Ptr cv::dnn::rter(const &model)

模型:.pb 文件

Ptr cv::dnn::(const &, const &=())

:。文档

:。文档

例子

Ptr<dnn::importer> importer;
try
{
	importer = dnn::createCaffeimporter("xxx.prototxt", ".caffemodel");
}
catch (const cv::Exception &err) {
	cerr << err.msg << endl;
}
// 初始化
dnn::Net net;
importer->populateNet(net);
importer.release();

 
标签: dnn const
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON