深度神经网络与脉冲神经网络_深度神经网络模型及应用

本文介绍了如何使用C++和OpenCV的DNN模块加载深度神经网络模型,包括读取模型、设置输入、执行前向传播等步骤,并展示了目标识别、风格迁移和人脸识别的应用示例。
摘要由CSDN通过智能技术生成

 此篇介绍如何使用C++加载OpenCV DNN模块库来调用深度神经网络模型以及一些应用

目前,深度神经网络广泛应用于用于图像处理的各个领域,OpenCV4丰富了DNN模块,增加了与深度神经网络相关的函数及比较前沿的算法,以下就此展开描述:

>注意:此篇不对如何训练深度神经网络模型做出概述!后续会单独出文说明。

以下,围绕对深度神经网络模型的应用。

软硬件环境:


  • Ubuntu20.04

  • OpenCV4.5.1

  • Cmake3.18.5

01

加载深度神经网络模型

1、函数说明

读取深度学习模型函数:


Net cv::dnn::readNet(const String & model,const String & config="",const String & framework="")

model:模型文件名;

config:配置文件名;

framework:框架种类;

框架种类 模型文件格式 配置文件格式
Caffe *.caffemodel *.prototxt
TensorFlow *.pb *.pbtxt
Torch *.t7  |   *.net --
Darknet *.weights *.cfg
DLDT *.bin *.xml

深度学习模型参数:


empty():判断模型是否为空,不需要输入参数,模型为空返回true,否则false;

getLayerNames():得到每层网络的名称,不需要输入参数,返回值为vector类型变量;

getLayerId():得到每层网络的ID,输入参数为网络名称,返回值为int类型变量;

getLayer():得到指向指定ID或名称的网络层的指针,输入参数为网络层ID,返回值为Ptr类型变量;

forward():执行前向传输,输入参数为需要输出的网络层的名称,返回值为Mat类型数据;

setInput():设置网络新的输入数据;

向网络层中添加数据:

void cv::dnn::Net::setInput(InputArray blob,const String & name="",double scalefactor=1.0,const Scalar & mean=Scalar())

blob:新的输入数据,类型为CV_32F或CV_8U;

name:输入网络层的名称;

scalefactor:可选的标准化比例;

mean:可选的减数数值;

2、编写代码

1、编写main.cpp:

#include #include using namespace cv;using namespace std;using namespace cv::dnn;int main(){
         string model="/home/zja/Downloads/bvlc_googlenet.caffemodel";    string config="/home/zja/Downloads/bvlc_googlenet.prototxt";    Net net=dnn::readNet(model,config);    if(net.empty())    {
             cout<<"请确认输入了模型文件"<<endl;        return -1;    }    //获取各层信息    vector layerNames=net.getLayerNames();    for(unsigned long i=0;i    {
             //读取每层网络的ID        int ID=net.getLayerId(layerNames[i]);        //读取每层网络信息        Ptr layer=net.getLayer(ID);        //输出网络信息        cout<<"网络层数:"<"网络名称:"&l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值