深度学习算法训练和部署流程介绍--让初学者一篇文章彻底理解算法训练和部署流程
目录
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,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
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
以上介绍的东西基本都能在我的博客文章里面找到具体的介绍或操作步骤。
相关文章:
深度学习算法训练和部署流程介绍--让初学者一篇文章彻底理解算法训练和部署流程
目录 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 什么是深度学习算法 这里不去写复杂的概念,就用通俗的话说…...
计算机网络整理
TCP与UDP 介绍 HTTP:(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。 TCP:(Transmission Contro…...
闲人闲谈PS之三十八——混合制生产下WBS-BOM价格发布增强
惯例闲话:最近中《三体》的毒很深,可能是电视剧版确实给闲人这种原著粉带来太多的感动,又一次引发了怀旧的热潮,《我的三体-罗辑传》是每天睡前必刷的视频,结尾BGM太燃了。闲人对其中一句台词感触很深——人类不感谢罗…...
Java 根类 Object
java.lang.Object 是 Java 类层次结构中的根类,所有类都直接或间接实现了此类的方法。 Object API 源码 package java.lang;public class Object {private static native void registerNatives();static {registerNatives();}public final native Class<?>…...
04_Apache Pulsar的可视化监控管理、Apache Pulsar的可视化监控部署
1.4.Apache Pulsar的可视化监控管理 1.4.1.Apache Pulsar的可视化监控部署 1.4.Apache Pulsar的可视化监控管理 1.4.1.Apache Pulsar的可视化监控部署 第一步:下载Pulsar-Manager https://archive.apache.org/dist/pulsar/pulsar-manager/pulsar-manager-0.2.0/…...
【算法】期末复盘,酒店住宿问题——勿向思想僵化前进
文章目录前言题目描述卡在哪里代码(C)前言 省流:一个人也可以住双人间,如果便宜的话。 害!尚正值青春年华,黄金岁月,小脑瓜子就已经不灵光咯。好在我在考试的最后一分钟还是成功通过了这题&am…...
Java中的Comparator 与 Comparable详解
Comparator VS Comparable1. Comparator1.1 对一维数组进行排序1.2 对二维数组进行排序1.3 对对象数组进行排序2. Comparable3. 二者区别1. Comparator 通过源码发现Comparator是一个接口。 根据compare方法中的注释可以发现方法返回三种类型的值,正数、零、负数&a…...
计算机科学导论笔记(二)
三、数据存储 3.1 数据类型 计算机行业中使用术语“多媒体”来定义包含数字、文本、音频、图像和视频的信息。 位:bit,binary digit的缩写,是存储在计算机中的最小单位,它是0或1. 位模式:为了表示数据的不同类型&a…...
GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音
GEC6818开发板JPG图像显示 | 开发板实现录音一.GEC6818开发板JPG图像显示1.jpg图片特性2.如何解压缩jpg图片1.对jpegsrc.v8c.tar.gz进行arm移植2.进入~/jpeg-8c对jpeg库进行配置3.编译4.安装,将动态库存放到 /home/gec/armJPegLib5.清空编译记录6.自己查看下 /home/…...
如何判断树莓派通过GPIO与5G模块成功连接?
如果想要判断自己是否成功连接了树莓派与5G模块,可以通过以下方式进行判断: 查看设备连接状态:可以通过在树莓派终端中执行lsusb命令来查看USB设备的连接状态,如果5G模块被识别到,则会显示相关的设备信息。如果提示lsu…...
Java——包装类和List及ArrayList
目录 包装类(Wrapped Class) 包装类的使用---装箱和拆箱 自动装箱和自动拆箱 Integer的易错题 javap反编译工具 List接口的使用 方法 ArrayList 使用 打印 区别 扩容机制 ArrayList练习 字符集合 杨辉三角 编辑 包装类(Wrapped Class) Object 引用可…...
matlab - 程序流程控制、函数文件、特殊函数、调试与优化
学习视频MATLAB代码的两种执行方式:命令行、程序执行。1.程序流程控制1.1.m文件matlab中m文件分为两种:脚本文件&函数文件。脚本文件:实际上是一个命令的集合,可认为是命令行的改良版,方便我们去编写命令函数文件&…...
Toponogov 比较定理及其应用
1. Toponogov 比较定理的背景来源 Victor Andreevich Toponogov(1930-2004) 是苏联数学家,Toponogov 比较定理是他的博士论文题目,在1958年答辩。他证明这个定理是为了用于证明截面曲率假设下的分裂定理和最大直径定理࿰…...
力扣sql简单篇练习(二十二)
力扣sql简单篇练习(二十二) 1 上月播放的儿童适宜电影 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # Write your MySQL query statement belowSELECT titleFROM ContentWHERE kids_contentY AND content_typeMoviesAND c…...
【开源硬件】STM32F030R8T6系统板
【开源硬件】STM32F030R8T6系统板✅STM32F030R8T6系统板兼容极海APM32F030R8T6 🔰支持stm32cubemx工程配置成STM32F030R8T6生成的MDK工程,经过Keil编译后可以直接使用ST-Link v2烧录器上传到极海APM32F030R8T6芯片当中,完全做到平替使用&…...
ES之DSL查询文档基础查询
分类 query查询分类 总体规律就是逻辑性的,从外层的你干嘛,到下一层的查询类型,再到下一层的查询字段(如果需要的话)和然后是查询内容 查询所有 语法 get /索引库名/_serarch {"query":{"查询条件…...
数据结构与算法之堆排序
目录堆排序概述代码实现时间复杂度堆排序概述 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点…...
Vue3 中的模板语法
目录前言一、什么是模板语法?二、内容渲染指令1. v-text2. {{ }} 插值表达式3. v-html三、双向绑定指令1. v-model2. v-model的修饰符四、属性绑定指令1. 动态绑定多个属性值2. 绑定class和style属性五、条件渲染指令1. v-if、v-else-if、v-else2. v-show3. v-if和v…...
Redis十大类型——Hash常见操作
Redis十大类型——Hash常见操作命令操作简列存放及获取获取健值对长度元素查找列出健值对对数字进行操作赋值hsetnx很明显咯它也是以健值对方式存在的,只不过value也就是值,在这里也变成了一组简直对。 🍊个🌰: 想必多…...
Python采集本地二手房,一键知晓上万房源信息
前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 所以今天教大家用Python来采集本地房源数据,帮助大家筛选好房。 话不多说,让我们开始愉快的旅程吧~ 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 本文涉及知识点 采集基本流程 requests 发送…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
