深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程

2023-05-16

目录

1 什么是深度学习算法

2 算法训练

2.1 训练的原理

2.2 名词解释

3 算法C++部署

3.1 嵌入式终端板子部署

3.3.1 tpu  npu推理

3.3.2 cpu推理

3.2 服务器部署

3.2.1 智能推理

3.2.2 CPU推理


1 什么是深度学习算法

这里不去写复杂的概念,就用通俗的话说一下现在常用的分类和检测这种深度学习算法是怎么一回事,现在常用的分类和检测算法其实就用的卷积神经网络,神经网络的原理可以看这篇文章,我当初就是看了这篇文章:CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络_v_JULY_v的博客-CSDN博客

其实我的理解深度学习算法就和教小孩认字一样,一个孩子你老是给他写1 2 3 4 5,然后跟他说这是1,这是2,这样孩子就学会1 2 3 4 5了,同样,比如一个猫狗分类的算法网络模型,你不断的用猫和狗的图片数据去训练,然后算法模型也就知道什么是猫,什么是狗了,这是简单理解。

然后初学者想知道深度学习的流程,其实流程可以分为

  • 算法训练
  • 算法部署

2 算法训练

算法训练就是用图片数据和深度学习框架在有显卡的服务器上进行训练,得到算法模型。下面解释下这句话。

2.1 训练的原理

这里也用通俗易懂的语言解释,不整学术名词,其实我们的算法模型不就是神经网络吗,那神经网络里面含有很多神经元,其实一个神经元就是一个方程

那么我们的算法模型是由很多个神经元组成的,一个神经元是一个方程,那其实我们的算法模型就是一个方程组,我们训练的过程其实就是用图片数据去求方程组的系数,求出系数后,你给模型一张图片,模型方程组根据系数就能算出来模型输出也就是图片推理结果,比如一张图片,带入到方程组中,计算发现,奥,这张图片是猫。

2.2 名词解释

图片数据:这个如果是在公司里面会有专门的数据人员,负责图片的采集和标注工作,然后如果采集不到数据集,那么你可以自己用puthon去网上自己下载一些图片用作训练。比如这个python脚本:利用python批量下载百度图片_陈 洪 伟的博客-CSDN博客

深度学习框架:这个有pytorch,TensorFlow,paddle,caffe,darknet等这些框架,训练的时候需要用这些框架去训练,首先要在电脑上安装相应框架需要的环境,然后才能去训练。

显卡:我们训练要在有显卡的服务器上进行训练,至于显卡的性能要求,那当然是性能越高越好,这样训练算法越快,那么没有显卡行不行,也行,那就是用CPU训练,但是很慢。当然还有一个选择,那就是现在网上出现了一些出租算力的,可以花钱租用算力用于训练自己的算法。

python:算法训练都是用python脚本去做的,所以需要先学习python,但是初学者如果你想快速入门你不用再从零学python,因为python语法很简单,初学者基本上也是修改python脚本,甚至不用自己写脚本,所以这时候先不学也行,会修改脚本,后面有时间再学。

其实初学者像更快的入门,那直接找一个算法训练的步骤文章,然后一步步的跟着跑一遍,也就更容易理解了,可以去github上搜yolov5然后跟着步骤做一遍,也可以看我的文章:https://cumtchw.blog.csdn.net/article/details/115064641

3 算法C++部署

前面我们得到了算法模型,那么我们要把模型部署到机器上,然后用他来做推理,完成工作,工程部署一般都是用C++做部署,那么部署分为服务器部署和嵌入式终端板子部署。

3.1 嵌入式终端板子部署

3.3.1 tpu  npu推理

嵌入式板子有很多厂家,比如瑞芯微的,比特大陆的(BM1684),寒武纪的(思元220),华为的(HISI3559,Atlas系列),英伟达的(xavier),那么我们首先要把我们前面训练得到的模型转换成不同厂家的模型,这时候,每个厂家都会提供相应的转换工具或转换脚本,把我们的训练模型转成不同厂家格式的模型,然后再利用不同厂家提供的推理demo完成算法模型的C++推理。

比如我们以瑞芯微的为例吧,我们训练得到了算法模型,然后我们先在电脑上安装瑞芯微的模型转换工具toolkit,然后用python脚本把我们的模型转成xxxx.rnkk格式的模型,然后厂家还会提供C++demo,然后再用C++demo完成模型的推理。其他的比特大陆/寒武纪/华为/英伟达都一个道理,只不过转换和推理的工具包不一样。

例如瑞芯微的推理部署:https://blog.csdn.net/u013171226/category_11410227.html

例如英伟达xavier的推理:https://cumtchw.blog.csdn.net/article/details/118788059

3.3.2 cpu推理

其实上面说的tpu  npu情况是说我们用了现在的一些智能芯片,这些芯片内部都有专门的做深度学习推理的npu/tpu,那么如果是我们一块普通的ARM板子能跑深度学习算法吗,也是可以的,那就是用cpu推理,只不过慢而已,cpu推理的流程就和上面不一样了,这时候我们需要利用onnx/mnn/ncnn框架,我们先把训练得到的算法模型转换成onnx/mnn/ncnn模型,然后利用onnx库区做推理。例如:https://cumtchw.blog.csdn.net/article/details/128249155

又或者在一个普通的安卓手机上,你可以用ncnn框架去部署有关算法。 

3.2 服务器部署

3.2.1 智能推理

这里说的智能推理我是指,我们的服务器安装了相应的智能卡,这时候服务器部署的流程就和上面板子的tpu  npu推理流程一样,比如你服务器上安装了英伟达的显卡,那么我们一般就用tensorRT(TensorRT 是由英伟达公司推出的一款用于高性能深度学习模型推理的软件开发工具包)做推理,这时候我们先把训练得到的模型转成TensorRT要求的模型格式,然后再用tensorRT做算法推理。其他厂家的比如比特大陆和寒武纪还有华为,他们也有针对服务器的板卡,把它插到服务器上,然后这些厂家也会提供一些推理的工具包,然后就可以做算法的推理部署。

3.2.2 CPU推理

同样的道理,我们就一个普通电脑,没有显卡,那么这时候我们想做算法推理怎么弄,可以用onnx,也是把模型转成onnx模型,然后利用onnx库做推理。例如:https://cumtchw.blog.csdn.net/article/details/128220318

以上介绍的东西基本都能在我的博客文章里面找到具体的介绍或操作步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程 的相关文章

  • MySQL提升课程 全面讲解MySQL架构设计

    var 课程地址 61 34 http icourse8 com mysqlguanli html 34 let 全选地址右键前往 61 34 http icourse8 com mysqlguanli html 34 目录 第1章 实例和
  • CUDA之nvidia-smi命令详解

    nvidia smi是用来查看GPU使用情况的 我常用这个命令判断哪几块GPU空闲 xff0c 但是最近的GPU使用状态让我很困惑 xff0c 于是把nvidia smi命令显示的GPU使用表中各个内容的具体含义解释一下 这是服务器上特斯拉
  • NMS和softnms代码

    NMS的python代码 import numpy as np def py cpu nms dets thresh 34 34 34 Pure Python NMS baseline 34 34 34 x1 61 dets 0 y1 61
  • Android Webview 大型H5 秒开方案探讨+VasSonic实现h5首页加速

    前言 现在许多app都嵌入了H5页面 然而WebView加载速度慢这个问题却一直影响着用户的体验 所以本文就如何提高H5页面的加载速度展开讨论 问题原因 首先我们需要知道为什么WebView的加载速度那么慢 H5页面的渲染速度其实主要取决于
  • C#学习记录——统一窗体中控件的字体设置

    实例说明 当窗体上有很多控件时 xff0c 如果逐个设置字体属性 xff0c 会非常繁琐 xff0c 这时 xff0c 可以将字体属性设置一致的控件选中进行统一设置 xff0c 这样可以大大节省开发程序的时间 实例运行效果如图1所示 设计过
  • C#学习记录——Visual Studio为项目添加DLL文件引用

    实例说明 DLL文件引用就是在当前项目中引用别的DLL文件 xff0c 可以是用C 编写的类库 xff0c 也可以是别的语言编写的类库 xff0c 这样主要是为了提高程序的开发效率 xff0c 将DLL文件中的一些已有功能直接进行使用 xf
  • C#学习记录——C#编写串口程序

    因为电气自动化专业出差太多 xff0c 考虑学点其他的看能不能实现转行 xff0c 也没太清晰的路线 xff0c 看网上好多推荐电气自动化转C 上位机开发的 xff0c 也抽时间学习了解下C xff0c 因为非软件专业 xff0c 对计算机
  • C#项目实战——【实战】图书馆管理系统

    参考 零基础学C 3 0 学习实现 本篇练习记录一个开发图书馆管理系统示例 1 实现功能简介 图书管理系统利用VS2019集成开发环境进行程序的编程和调试 数据库采用SQL Server 2008 图书管理系统框图如图 普通用户模块具有以下
  • C#项目实战——Windows计算器的制作【实例】

    参考 C 从入门到项目实践 边学习 边练习实现 Windows计算器的制作 此次练习的计算器应用软件在Visual Studio 2019编程环境中开发 是一个简单的窗体应用程序 实现简单的计算器功能 1 系统功能描述 Windows计算器
  • 【触摸屏功能测试】昆仑通态MCGS——物联网功能测试

    测试触摸屏 xff1a 型号 xff1a TPC7022Ni 测试内容 xff1a 物联网产品设备的无线通信和远程调试功能 物联网 1 功能概述 物联网产品设备可通过无线通讯的方式 xff0c 进行远程调试和操作 物联网产品设备支持以下功能
  • 【KingSCADA】如何建立硬件系统及相关变量

    小伙伴们大家好 xff0c 我是雷工 xff01 本篇学习了解KingSCADA3 8如何建立硬件系统及相关变量 xff0c 以下为学习过程和操作记录 一 前言 本篇主要讲解如何定义设备 xff0c 如何定义变量 KingSCADA3 8的
  • 解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 等一系列问题

    一 xff0e 简介 Windows下的 Eclipse上调试Hadoop2代码 xff0c 所以我们在windows下的Eclipse配置hadoop eclipse plugin 2 6 0 jar插件 xff0c 并在运行Hadoop
  • July 16th 模拟赛C T4 奶牛排队 Solution

    空降题目处 点我点我点我 Description 奶牛在熊大妈的带领下排成了一条直队 显然 xff0c 不同的奶牛身高不一定相同 现在 xff0c 奶牛们想知道 xff0c 如果找出一些连续的奶牛 xff0c 要求最左边的奶牛A是最矮的 x
  • AI 工具合辑盘点(十三)持续更新 之 面向宠物爱好者的 AI 工具和面向电影爱好者的 AI 工具

    亲爱的宠物爱好者 xff0c 这个部分是专门为你准备的 x1f43e 不论你是爱狗人士还是铲屎官 xff0c AI 都能满足你 访问地址 xff1a This Cat Does Not Exist 猫咪生成器 你知道喜欢猫的爱好有个专门的名
  • 【KingSCADA】什么是精灵图以及如何创建精灵图

    大家好 xff0c 我是雷工 xff01 本篇学习精灵图的制作 xff0c 以下为学习内容及相关笔记 一 什么是精灵图 精灵图是一种在外观上类似组合图 xff0c 但内部嵌入了比较丰富的动画链接与逻辑控制 xff0c 工程开发人员只要将其从
  • 【数据库】SQL Server2022安装教程

    大家好 xff0c 我是雷工 xff01 最近需要安装SQLServer数据库 xff0c 此次安装的是sql server 2022 developer版本 xff0c 以下记录安装及配置过程 大家可以参考指正 一 安装SQL Serve
  • 网络ip段计算,网络地址计算,广播地址计算,主机号计算规则

    ip网段格式 一个ip段的范围通常是从网络地址 广播地址 xff0c 一般去除网络地址和广播地址后的范围就是一个可用的ip段 xff0c 也就是网络地址 43 1 至 广播地址 1 怎么计算ip的网络地址 xff1f 计算规则 使用ip的二
  • Windows使用Media Foundation采集摄像头数据

    文章目录 前言一 头文件二 MF对象三 示例总结 前言 在Windows上采集摄像头的数据的方法有几种 xff0c vfw directshow mf vfw过于老旧 xff0c directshow使用比较复杂 xff0c mf就是今天要
  • 第一篇:践履实录2006-2013

    2006年研究生毕业 xff0c 应聘到一家创办一年半左右的IC Startup公司从事Windows驱动软件的开发工作 xff0e 我们驱动组 xff08 我和我的师傅两个人 xff09 所面对的是一个全新项目 xff0c Microso

随机推荐

  • 51单片机DHT11温湿度传感器

    DHT11是一款有已校准数字信号输出的温湿度传感器 精度湿度 43 5 RH xff0c 温度 43 2 xff0c 量程湿度20 90 RH xff0c 温度0 50 一 电路连接分析 1 引脚图 2 接线图 DHT11 器件采用简化的单
  • 使用pytorch分布式进行训练的时候发生的错误

    在进行分布式训练的时候遇到这个错 xff0c 不知道怎么解决 xff0c 先记录一下 Traceback span class token punctuation span most recent call last span class
  • Linux驱动开发基础_在设备树中指定中断以及在代码中获得中断

    目录 1 设备树里中断节点的语法 1 1 设备树里的中断控制器 1 2 设备树里使用中断 2 设备树里中断节点的示例 3 在代码中获得中断 3 1 对于 platform device 3 2 对于 I2C 设备 SPI 设备 3 3 调用
  • Linux驱动开发基础__休眠与唤醒

    目录 1 适用场景 2 内核函数 2 1 休眠函数 2 2 唤醒函数 3 驱动框架 4 编程 4 1 gpio key drv c 4 2 button test c 4 3 Makefile 1 适用场景 在前面引入中断时 xff0c 我
  • Hive ddl语法使用详解

    一 前言 使用过关系型数据库mysql的同学对mysql的ddl语法应该不陌生 xff0c 使用ddl语言来创建数据库中的表 索引 视图 存储过程 触发器等 xff0c hive中也提供了类似ddl的语法 本篇将详细讲述hive中ddl的使
  • Linux驱动开发基础__POLL机制

    目录 1 适用场景 2 POLL机制的内核代码详解 2 1 sys poll 函数 2 2 do sys poll 函数 2 3 do poll函数 3 poll机制使用流程 4 驱动编程 5 应用编程 6 代码 6 1 gpio key
  • Linux驱动开发基础__异步通知

    目录 1 适用场景 2 使用流程 3 驱动编程 4 应用编程 5 代码 5 1 gpio key drv c 5 2 button test c 5 3 Makefile 6 异步通知机制内核代码详解 1 适用场景 在前面引入中断时 xff
  • Linux驱动开发基础__阻塞与非阻塞

    目录 1 引入 2 应用编程 3 驱动编程 4 代码 4 1 gpio key drv c 4 2 button test c 1 引入 所谓阻塞 xff0c 就是等待某件事情发生 比如调用 read 读取按键时 xff0c 如果没有按键数
  • Linux驱动开发基础__定时器

    目录 1 内核函数 2 定时器时间单位 3 使用定时器处理按键抖动 4 编程 4 1 gpio key drv c 4 2 button test c 4 3 Makefile 1 内核函数 所谓定时器 xff0c 就是闹钟 xff0c 时
  • Linux驱动开发基础__中断下半部tasklet

    目录 1 引入 2 内核函数 2 1 定义tasklet 2 2 使能 禁止 tasklet 2 3 调度tasklet 2 4 kill tasklet 3 tasklet 使用方法 4 tasklet 内部机制 5 代码 5 1 gpi
  • Linux驱动开发基础__工作队列

    目录 1 引入 2 内核函数 2 1 定义work 2 2 使用 work xff1a schedule work 2 3 其他函数 3 代码 3 1 gpio key drv c 3 2 button test c 4 内部机制 4 1
  • Linux驱动开发基础__中断的线程化处理

    目录 1 引入 2 内核机制 2 1 调用 request threaded irq 后内核的数据结构 2 2 request threaded irq 2 3 中断的执行过程 1 引入 复杂 耗时的事情 xff0c 尽量使用内核线程来处理
  • Linux驱动开发基础__mmap

    目录 1 引入 2 内存映射现象与数据结构 3 ARM 架构内存映射简介 3 1 一级页表映射过程 3 2 二级页表映射过程 4 怎么给 APP 新建一块内存映射 4 1 mmap 调用过程 编辑4 2 cache 和 buffer 4 3
  • 利用python批量下载百度图片

    某项目中需要训练高速火灾算法 但是手头没有数据集 因此需要利用python从网上下载图片 代码如下 coding utf8 import requests import json from urllib import parse impor
  • python将标注平台的数据格式转换成yolov5的txt格式

    标注平台得到的数据格式如下 annotation object bndbox xmax 1917 xmin 9 ymax 1037 ymin 474 groupid name 轻度雾气 size height 1080 width 1920
  • linux vnc常见命令

    linux vnc virtual network computing 1 新建一个vncserver xff1a 直接输入vncserver即可 xff0c 系统将从1开始计算桌面数 xff0c 当然也可以指定桌面的编号 xff0c 如
  • uboot,内核,根文件系统的启动过程

    复习了下uboot xff0c 内核 xff0c 根文件系统 xff0c 简单概括下三者的主要内容 1 uboot uboot的目的 xff1a 启动内核 uboot的功能可以分为两个阶段任务 1 2 1 uboot第一阶段 uboot第一
  • S3C2440开发环境搭建以及过程中遇到的问题

    拿出了之前的S3C2440开发板 xff0c 然后把移植uboot 移植内核 制作根文件系统 设备树编写驱动等几项再做一遍 xff0c 这篇文章先记录下环境搭建过程 xff0c 以及先把现成的uboot 内核 根文件系统下载进去 xff0c
  • S3C2440移植Linux4.19.275内核以及过程中遇到的问题

    目录 1 问题一 xff1a 内核移植时MTD分区问题 2 问题二 xff1a uboot的MTDPARTS DEFAULT定义的MTD分区 xff0c bootargs中的文件系统分区 xff0c 内核的mtd partition smd
  • 深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程

    目录 1 什么是深度学习算法 2 算法训练 2 1 训练的原理 2 2 名词解释 3 算法C 43 43 部署 3 1 嵌入式终端板子部署 3 3 1 tpu npu推理 3 3 2 cpu推理 3 2 服务器部署 3 2 1 智能推理 3