手把手教你入门AIOT(人工智能+物联网)如今的Python技术风口

文章目录

前言

一、什么是AIoT

二、学习路线 && 学习目标 && AIoT职业方向

1.学习路线图

2.目标

3.AIoT职业方向

三、AIoT知识内容

四、AIoT项目实战

五、AIoT具体学习内容一览

1.Python 基础与科学计算

1.1 Python 基础语法

1.2 科学计算模块 Numpy

1.3 数据处理分析模块 Pandas

1.4 数据可视化模块

2.算法数学基础

2.1 微积分基础

2.2 线性代数基础

2.3 多元函数微分学

2.4 线性代数高级

2.5 概率论

2.6 最优化

3.线性回归算法

3.1 多元线性回归

3.2 梯度下降法

3.3 归一化

3.4 正则化

3.5 Lasso 回归、Ridge 回归、多项式回归

4.线性分类算法

4.1 逻辑回归

4.2 Softmax 回归

4.3 SVM 支持向量机

4.4 SMO 优化算法

5.无监督学习算法

5.1 聚类系列算法

5.2 PCA 降维算法

5.3 EM 算法

5.4 GMM 算法

6.决策树系列算法

6.1 决策树算法

6.2 随机森林算法

6.3 Adaboost 算法

6.4 GBDT 算法

6.5 XGBoost 算法

7.Kaggle 实战

7.1 CTR 广告预估项目

7.2 药店销量预测案例

7.3 活动推荐预测案例

7.4 银行贷款风控案例

8.概率图模型算法

8.1 贝叶斯分类

8.2 HMM 算法

8.3 最大熵模型

8.4 CRF 算法

9.深度学习课程大纲

9.1 机器视觉

9.1.1 基本操作

9.1.2 人脸检测

9.1.3 高级应用

9.2 TensorFlow 深度学习框架

9.2.1 TensorFlow 简介与环境搭建

9.2.2 TensorFlow 入门

9.2.3 TensorFlow dataset 与 estimator 使用

9.2.4 全连接神经网络

9.2.5 模型优化

9.2.6 CNN 卷积神经网络

9.2.7 RNN 循环神经网络

9.2.8 TensorFlow 分布式

9.2.9 TensorFlow 模型保存与部署

9.2.10 BP 反向传播算法

9.3 PyTorch 深度学习框架

9.3.1 PyTorch 简介与环境搭建

9.3.2 PyTorch 框架基本使用

9.3.3 PyTorch 搭建神经网络

9.3.4 PyTorch 计算机视觉与卷积神经网络

9.3.5 PyTorch 实战计算机视觉任务-Cifar-10 图像分类

9.3.6 Pytorch 实战计算机视觉任务-Pascal VOC 目标

9.3.7 PyTorch 实战计算机视觉任务-COCO 目标分割问题

9.3.8 PyTorch 搭建 GAN 网络实战图像风格迁移

9.4 深度学习-目标检测经典模型实战

9.4.1 目标检测 RCNN 模型

9.4.2 目标检测 Fast R-CNN 模型

9.4.3 目标检测 Faster R-CNN 模型

9.4.4 目标检测 mask R-CNN 模型

9.4.5 目标检测 RFCN 模型

9.4.6 目标检测 Cascade R-CNN 模型

9.5 深度学习-目标检测 YOLO 实战

9.5.1 深度学习经典检测方法概述

9.5.2 YOLO-V1 整体思想与网络架构

9.5.3 YOLO-V2 进化详解

9.5.4 YOLO-V3 网络模型介绍

9.5.5 项目实战-基于 YOLO-V3 并进行源码解读

9.5.6 基于 YOLO-V3 的自定义目标检测

9.5.7 YOLO-V4 网络模型介绍

9.5.8 YOLO-V5 网络模型介绍

9.5.9 Resnet 网络框架结合迁移学习

9.5.10 目标检测算法 SSD

9.5.11 目标检测算法 RetinaNet

10.图像识别综合案例

10.1 交通标志识别

10.2 车道线检测

10.3 汽车车牌识别

10.4 手势识别系统

10.5 驾驶员表情识别

11.Linux 基础

12.C 语言高级编程

12.1 C 语言开篇

12.2 数据类型

12.3 C 语言输入输出

12.4 运算符和表达式

12.5 流程控制

12.6 数组

12.7 函数

12.8 C 语言预处理

12.9 综合练习:五子棋游戏开发

12.10 指针

12.11 结构体

12.12 C 语言编程高阶

13.数据结构及算法

13.1 数据结构基础

13.2 数据结构进阶

13.3 综合练习:带字符界面的计算器开发

13.4 算法基础

13.5 算法进阶

13.6 综合练习:物流仓储管理系统 WMS 开发

14.Linux 高级程序设计

14.1 shell 编程

14.2 Linux 文件 I/O

14.3 Linux 并发编程

14.4 项目 4:多媒体播放器开发

15.Linux 网络编程

15.1 Linux 网络编程预备知识

15.2 socket 编程

16.Linux 数据库编程

16.1 MySQL

16.2 Sqlite3

16.3 综合练习:天天鲜花电商平台数据库设计

17.C++应用软件开发

17.1 C++编程基础

17.2 综合练习:回合制游戏“冲出冒险岛”开发

17.3 C++高阶编程

17.4 综合练习:基于 TCP 的聊天室项目开发

17.5 QT 应用软件开发

17.5.1 QT 编程基础

17.5.2 综合练习:网络调试助手开发

18.嵌入式传感器编程

18.1 Linux 串口编程

18.2 GPIO 编程

19.音视频编程

19.1 音视频原理

19.2 音视频网络传输

19.3 RTMP 直播

19.4 科大讯飞语音识别

20.5G 物联网应用开发

20.1 ARM 体系结构与编程

20.2 STM32 应用开发

20.3 嵌入式操作系统 UCOS

20.4 嵌入式操作系统 FreeRTOS

20.5 项目 2:基于 STM32 的智能小车

20.6 物联网高级应用开发

20.6.1 ZigBee 应用开发

20.6.2 蓝牙 Mesh

20.6.3 NB-IoT

20.6.4 项目 3:智能温室大棚控制系统

21.嵌入式 Linux 系统移植及驱动开发

21.1 嵌入式平台软硬件框架分析

21.2 设备驱动开发

22.物联网综合项目实施方案

22.1 智能停车场管理系统

22.2 基于 STM32 的智能小车

22.3 智能温室大棚控制系统

23.AIoT 企业级项目开发

23.1 基于 ZigBee 的智能物流仓储系统

23.2 人工智能工业分拣系统

23.3 智能家居控制系统

23.4 智慧教室终端

23.5 智能无人小车

23.6 基于 NB-IoT 的共享单车

前言

本文算是本人AIoT(人工智能+物联网) 学习的过程总结。

适合学习人群:0基础小白,以及有一定编程基础的同学~

在这里我把AIoT(人工智能+物联网) 的学习主要分为两个大阶段:

1.知识内容的学习

2.项目实战

强烈建议收藏哦~

大家有任何疑问都可在评论区提出,本人会尽己所能为大家答疑解惑,如有错误还希望大家海涵并指正!!!

这是一个长时间的鏖战学习历程,将会持续更新 约2022.01开始正式更新,预计于2023.04结束更新 ,本文为本人在马士兵中学到的知识总结,博主的目的为做出2 ~ 3个项目作为研究生复试中的项目经历,本文中所涉及的项目实战也可以作为各位找工作时面试时的项目经历。

一、什么是AIoT

下文来自 百度百科:

AIoT(人工智能物联网)=AI(人工智能)+IoT(物联网)。AIoT融合AI技术和IoT技术,通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端,再通过大数据分析,以及更高形式的人工智能,实现万物数据化、万物智联化。物联网技术与人工智能相融合,最终追求的是形成一个智能化生态体系,在该体系内,实现了不同智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通,万物互融。除了在技术上需要不断革新外,与AIoT相关的技术标准、测试标准的研发、相关技术的落地与典型案例的推广和规模应用也是现阶段物联网与人工智能领域亟待突破的重要问题。

二、学习路线 && 学习目标 && AIoT职业方向

1.学习路线图

手把手教你入门AIOT(人工智能+物联网)如今的Python技术风口

由于图片较大,可能会模糊,看不清的同学可以评论出来,我会私发给大家


2.目标

熟练掌握 C/C++编程语言,掌握面向对象程序设计方法。

熟练掌握常用数据结构和算法。

熟练掌握 MySQL、sqlite3 基础语法及 C/C++编程接口。

熟练掌握 Linux 应用软件编程方法,熟练使用多线程、多进程编程、socket 编程 等进行应用软件开发。

熟练掌握嵌入式 Linux 高级编程技术,如传感器编程、串口编程、V4L2 编程、音 视频处理、opencv、科大讯飞语音识别等。

熟练掌握 QT 编程方法。

熟练掌握 ARM 体系结构。

掌握 STM32 开发工具及设计流程。

掌握 STM32 的外围接口使用,如:GPIO、中断、定时器、ADC、UART、看门狗等。

掌握现场总线设计与应用,如:I2C 总线、SPI 总线、CAN 总线、RS485 总线等。

掌握 ZigBee 应用软件开发。

掌握蓝牙 Mesh 组网及应用软件开发。

掌握 NB-IoT 应用软件开发方法,掌握 CoAP、MQTT 协议。

熟悉嵌入式 Linux 内核移植、uboot 移植及 rootfs 制作。

深刻理解嵌入式 Linux 设备驱动开发。

对嵌入式 Linux 系统在视频监控、网络通信、多媒体处理及智能控制领域有深入 理解。

熟悉嵌入式人工智能项目的部署与移植开发应用

3.AIoT职业方向

C/C++软件开发工程师

Qt 开发工程师

桌面应用软件开发工程师

Linux 后台开发工程师

网游后端开发工程师

嵌入式 Linux 应用开发工程师

音视频开发工程师

物联网应用开发工程师

嵌入式 Linux 驱动开发工程师

嵌入式 Linux 系统移植与裁剪工程师

嵌入式 Linux 多媒体研发工程师

ARM 开发工程师

STM32 应用软件开发工程师

嵌入式 FreeRTOS 开发工程师

嵌入式 ucOS 开发工程师

现场总线控制、现场总线通信应用开发工程师

Python 开发工程师

人工智能开发工程师

三、AIoT知识内容

由于内容较多,建议大家收藏本文,以后可通过此文访问以下任何知识点

阶段 名称 主题

阶段一(上)Python的进阶之道(上)

阶段一(下) 数据分析三剑客(下) 掌握 Python 基础语法, 具备基础的编程能力;完成 小游戏开发;数据科学常用库开发:NumPy、 Pandas、Matplotlib 常用 Python 数据分析库的使用

阶段二 算法数学基础 掌握高等数学,概率,离散数学;以及常见面试题解析

阶段三 线性回归算法 掌握线性回归,各种优化等算法,Ridge、Lasso 回归,掌握正则化算法。

阶段四 线性回归分类算法 掌握逻辑回归、Softmax、SVM 支持向量机算法, 掌握 SMO 优化算法。

阶段五 无监督学习算法 掌握聚类算法、掌握 PCA 降维原理与推到,掌握 EM 算法,掌握 GMM 算法应用与原理。

阶段六 决策树系列算法 掌握决策树算法原理,掌握随机森林、Adaboost 提升算法、GBDT 提升树算法,XGBoost 算法。

阶段七 Kaggle 实战 通过实战,提升对基础算法的理解和应用。

阶段八 概率图模型算法 掌握贝叶斯算法、HMM 算法、最大熵模型、CRF 算法

阶段九 深度学习课程大纲 OpenCV 机器视觉开发; TensorFlow 深度学习框架; PyTorch 深度学习框架; 目标检测经典模型算法; 目标检测 YOLO 算法

阶段十 C 语言高级编程 数据类型、运算符和表达式、输入和输出、流程控制、数组、函数、预处理、指针、结构体、C 语言编程高阶

阶段十一 数据结构和算法 链表、栈和队列、二叉树、图、排序算法、查找算法

阶段十二 Linux 高级程序设计 shell 编程、Linux 文件 IO、Linux 并发编程

阶段十三 Linux 网络编程 网络编程预备知识、TCP 编程、UDP 编程、多播

阶段十四 Linux 数据库编程 Mysql、Sqlite、Mysql C 语言编程接口、Sqlite3 C 语言编程接口

阶段十五 C++应用软件开发 类和对象、封装、继承、多态、泛型编程、STL、算法、QT 应用软件开发

阶段十六 嵌入式传感器编程 RS232、RS485、Linux 串口编程、GPIO 编程、烟雾传感器、温湿度传感器、继电器等

阶段十七 音视频编程 音视频编程原理、H264、FMpeg、音视频网络传输、 RTMP 直播、科大讯飞语音识别

阶段十八 5G 物联网应用开发 ARM 体系结构、STM32 应用开发、UCOS、 FreeRTOS、蓝牙、zigbee、NB-IoT

阶段十九 嵌入式 Linux 系 统移植及驱动开发 Uboot、Linux 内核、Linux 文件系统、MMU、内存管理、字符设备驱动、块设备驱动、平台驱动。

四、AIoT项目实战

阶段 名称 涉及知识点

项目一 从OCR到STR 文本检测与识别 掌握文本识别项目的特点和整体流程, 模型部署,传统CV的文本检测 算法, 端到端的文本检测识别模型介绍

项目二 智能聊天机器人 掌握智能聊天机器人概述和业界进展, 文本类匹配,句子相似度匹配, 异质文本相似度匹配,多轮对话技术进展

项目三 计算机视觉医疗系统 掌握数字图像处理,图像认知、表示 ,计算机视觉经典任务,深度学习框架分析,经典网络设计,图像分割技术应用等

项目四 计算机视觉与电商 掌握图像预处理,图像特征,神经网络与深度学习,图像分类,目标检测

项目五 智能交通地理信息系统 掌握城市街道车辆多目标追踪项目实战,大规模地标图像检索,特征模型, 搜索与排序方法,城市街道车辆多目标追踪项目实战

项目六 乳腺癌医学影像检测 掌握迁移学习,图像几何学基础知识, Densnet201在医学检测上的应用

项目七 交通标志识别 掌握,YOLO网络框架,掌握卷积神经网络

项目八 车道线检测 掌握,OpenCV机器视觉框架,了解图片处理方法

项目九 汽车车牌识别 掌握,YOLO目标检测项目,掌握 TensoFlow文字识别原理。

项目十 手势识别 掌握OpenCV图片采集技术,掌握 TesorFlow图片识别卷积神经网络

项目十一 驾驶员表情识别 掌握,OpenCV机器视觉框架,了解图片处理方法。TesorFlow图片识别卷积神经网络

项目十二 智能停车场管理系统 掌握面向对象程序设计、opencv图像处理、传感器编程、TCP编程、udp编程、 STL容器、MySQL数据库、Sqlite3数据库、文件IO

项目十三 基于STM32的智能小车 掌握STM32编程、FreeRTOS、红外传感器编程、超声波测距编程、直流电机编程、蓝牙编程、红外遥控、LC1602A显示编程

项目十四 智能温室大棚控制系统 掌握STM32编程、FreeRTOS操作系统 、ZigBee编程、传感器编程、RFID编程、 NB-IoT

项目十五 基于ZigBee的智能物流仓储系统 掌握STM32、FreeRTOS、ZigBee组网技术、RFID、传感器编程、NB-IoT

项目十六 人工智能工业分拣系统 掌握嵌入式LinuxPython编程、Qt编程、 STM32开发、机械臂开发、TensorFlow 开发、AI语音识别技术、AR开发

项目十七 智能家居控制系统 掌握嵌入式Linux开发、QT编程、传感器开发、数据库开发、音视频开发、语音识别、蓝牙Mesh组网

项目十八 智慧教室终端 掌握嵌入式Linux开发、并发编程、 socket编程、QT开发、传感器编程、 Sqlite3数据库、语音识别、人脸识别

项目十九 智能无人小车 掌握嵌入式Linux、Python编程、PyQt 编程、ROS操作系统、Opencv、Slam、 TensorFlow开发、AI语音识别技术

项目二十 基于NB-IoT的共享单车 掌握STM32开发、传感器编程、NB-IoT模块编程、NB-IoT通信

五、AIoT具体学习内容一览

1.Python 基础与科学计算

1.1 Python 基础语法

循环控制

切片操作

数据类型

集合操作

常用内建函数

函数式编程

类与对象

继承

装饰器

生成器

1.2 科学计算模块 Numpy

Numpy ndarray 对象

Numpy 数据类型

Numpy 数组属性

Numpy 创建数组

Numpy 切片和索引

Numpy 高级索引

Numpy 广播

Numpy 数组操作

Numpy 数学和统计函数

Numpy 排序、条件过滤函数

Numpy 线性代数

1.3 数据处理分析模块 Pandas

Pandas IO 文件操作

Pandas 索引和数据选择器

Pandas 合并、连接

Pandas 缺失值数据处理

Pandas 数据离散化

Pandas 统计计算

1.4 数据可视化模块

Matplotlib 散点图、线图、核密度图

Matplotlib 饼图、直方图、盒图

Matplotlib 等高线图

Matplotlib 可视化剖析逻辑回归损失函数

Seaborn 单变量、多变量的图形绘制

Seaborn Style 和 Color

Seaborn facetgrid

2.算法数学基础

2.1 微积分基础

导数的定义

左导数、右导数、可导函数

导数几何意义、物理意义

基本函数求导公式

四则运算法则

复合函数求导法则

神经网络激活函数的导函数求解

高阶导数

导数与函数单调性

极值定理

导数与函数凹凸性

一元函数泰勒展开

2.2 线性代数基础

向量与其运算

行向量和列向量

向量加减、数乘、内积、转置

向量范数

特殊向量

矩阵与其运算

方阵、对称阵、单位阵、对角阵

矩阵加减、数乘、矩阵乘法、转置

逆矩阵

行列式

2.3 多元函数微分学

偏导数

高阶偏导数

梯度

雅可比矩阵

Hessian 矩阵

极值判别法则

2.4 线性代数高级

二次型

特征值和特征向量

特征值分解

多元函数的泰勒展开

矩阵和向量的求导公式

奇异值分解

奇异值分解计算方式

奇异值分解性质

SVD 用于数据压缩

SVD 用于 PCA 降维

SVD 用于协同过滤

SVD 用于矩阵求逆

2.5 概率论

随机事件和随机事件概率

条件概率和贝叶斯公式

随机事件的独立性

随机变量

数学期望和方差

常用随机变量服从的分布

随机向量

随机变量独立性

协方差与协方差矩阵

随机向量的常见分布

最大似然估计

2.6 最优化

局部最小和全局最小

迭代法求解

梯度下降法推导

牛顿法推导

坐标下降法

数值优化算法的问题

凸集

凸函数

凸优化问题

拉格朗日乘数法

拉格朗日对偶

KKT 条件

3.线性回归算法

3.1 多元线性回归

简单线性回归

最优解与最小二乘法

多元线性回归判别式

多元线性回归的数学假设

利用 MLE 推导出目标函数

对数似然推导出 MSE 损失函数

MSE 求偏导得到参数解析解

多元线性回归的 python 代码实现

多元线性回归的 sklearn 代码实战

3.2 梯度下降法

梯度下降法原理与公式

学习率设置的学问

GD 应用于多元线性回归的流程

全量梯度下降的原理与代码实现

随机梯度下降的原理与代码实现

Mini-Batch 梯度下降的原理与代码实现

代码实现增加 MBGD 数据的随机性

代码实现动态调整学习率

3.3 归一化

归一化目的与量纲

归一化提高模型精度

最大值最小值归一化与缺点

方差归一化与好处

均值归一化与好处

标准归一化的代码实战与技巧

3.4 正则化

提高泛化能力与防止过拟合

正则化用于损失函数

L1 与 L2 正则项与范数的关系

结合 GD 讲解 L1L2 的几何意义

透过导函数讲解 L1 的稀疏性

透过导函数讲解 L2 的平滑性

3.5 Lasso 回归、Ridge 回归、多项式回归

Lasso 回归原理与代码实战

Ridge 回归原理与代码实战

ElasticNet 回归原理与代码实战

升维的意义

多项式回归进行升维原理

多项式升维代码实战

4.线性分类算法

4.1 逻辑回归

Sigmoid 函数特点

广义线性回归与逻辑回归的数学假设

证明伯努利二项分布属于指数族分布

推导出逻辑回归判别式

推导出逻辑回归损失函数 log loss

推导出损失函数导函数用于最优化

逻辑回归解决多分类问题 OVR

逻辑回归代码实战–鸢尾花数据集分类

4.2 Softmax 回归

Softmax 函数特点

广义线性回归与 Softmax 回归的数学假设

证明多项式分布属于指数族分布

推导出 Softmax 回归判别式

推导出 Softmax 回归损失函数 cross-entropy

证明逻辑回归是 Softmax 的特例

剖析逻辑回归多分类和 Softmax 多分类的本质区别

Softmax 回归代码实战–音乐曲风分类

4.3 SVM 支持向量机

SVM 与感知机关系

几何距离和函数距离

SVM 支持向量机算法原理

SVM 的损失函数

硬间隔 SVM 的优化步骤

软间隔 SVM

非线性 SVM 与核函数

SVM 在 sklearn 模块中参数详解

SVM 人脸识别案例

SVM 的概率化输出

SVM 的 OVO 多分类

SVM 的 hinge loss

4.4 SMO 优化算法

SMO 优化算法的子二次规划问题思路

SMO 把目标函数从二元函数变一元函数

SMO 推导出新的α和旧的α关系

SMO 对α进行剪裁

SMO 优化 SVM 算法代码实现

5.无监督学习算法

5.1 聚类系列算法

相似度测量方法

K-means 算法原理

K-means 图像应用案例

K-medoids 算法

K-means++算法

Mini-batch K-means 算法

Canopy 聚类算法

Agnes 层次聚类算法

Diana 层次聚类算法

DBSCAN 密度聚类算法

Spectral 谱聚类

微博用户聚类分析案例

5.2 PCA 降维算法

特征选择与特征映射

最大投影方差原理与推导

最小投影距离原理与推导

PCA 过程的中心化

Kernelized PCA

SVD 奇异值分解用于 PCA

5.3 EM 算法

Jensen 不等式

EM 算法的 E-step

EM 算法的 M-step

EM 在 GMM 公式推导中应用

5.4 GMM 算法

单一高斯分布的参数估计

混合高斯分布的似然函数

GMM 的计算流程

GMM 之图片前景背景分离代码实战

GMM 之根据声音判别性别代码实战

GMM 之根据声音判别用户代码实战

6.决策树系列算法

6.1 决策树算法

决策树的算法原理与数学表达

分裂指标 Gini 系数、信息增益、信息增益率

前剪枝与后剪枝

决策树 ID3、C4.5 和 CART

决策树算法优略比较

决策树之鸢尾花数据集分类案例

通过 graphvis 绘制决策树模型

6.2 随机森林算法

集成学习算法思想 Bagging、Boosting、Stacking

用户画像集成学习方法案例

OOB 数据集验证随机森林算法

随机森林副产品之特征选择

6.3 Adaboost 算法

Adaboost 算法原理

数据的权重与权重错误率

权重错误率调整到 0.5 训练下一个弱分类器

计算每个样本的权重 Un

应用 Adaboost 算法做人脸识别

6.4 GBDT 算法

函数空间的梯度下降与负梯度

推导 GBDT 回归是拟合残差

Shrinkage 衰减系数的作用

推导 GBDT 分类亦是拟合残差

GBDT 二分类模型训练和使用

GBDT 多分类模型训练和使用

GBDT 副产品之特征组合用于降维

实现 GBDT+LR 架构代码实战

6.5 XGBoost 算法

XGBoost 算法与决策树集成学习关系

XGBoost 目标函数与正则项

XGBoost 目标函数用二阶泰勒展开

推导简化 XGBoost 目标函数引入 g h

XGBoost 目标函数加入树的复杂度

推导出 XGBoost 目标函数最终形式和叶子节 点表达式

详解 XGBoost 算法参数与交叉验证

XGBoost 算法调用 GPU 显卡资源加速

7.Kaggle 实战

7.1 CTR 广告预估项目

7.2 药店销量预测案例

7.3 活动推荐预测案例

7.4 银行贷款风控案例

8.概率图模型算法

8.1 贝叶斯分类

朴素贝叶斯分类器

拉普拉斯估计

代码实战垃圾邮件分类

8.2 HMM 算法

马尔可夫过程

初始概率、转移概率、发射概率

隐含马尔可夫模型原理

维特比算法

8.3 最大熵模型

熵、条件熵、相对熵、互信息

最大熵模型算法原理

有约束条件的函数最优化问题

最大熵和最大似然估计关系

IIS 算法

8.4 CRF 算法

条件随机场的性质

条件随机场的判别函数

条件随机场的学习

条件随机场的推断

CRF 与 HMM 关系

9.深度学习课程大纲

9.1 机器视觉

9.1.1 基本操作

图像读写

像素操作

图像缩放

图像旋转

图像融合

图像灰度化

图像颜色翻转

图像仿射变换

RGB 与 HSV 空间变换

9.1.2 人脸检测

图像阈值

人脸检测

人脸马赛克

人脸毛玻璃效果

图像的浮雕

直方图均衡化

亮度增强

视频处理

读取摄像头

人脸追踪

9.1.3 高级应用

图像滤波与卷积

霍夫圆

边缘轮廓

腐蚀膨胀

开闭操作

背景消除

识别雪糕筒

物体追踪

车道线检测

车牌识别

9.2 TensorFlow 深度学习框架

9.2.1 TensorFlow 简介与环境搭建

TensorFlow 简介

TensorFlow 版本变迁与 TensorFlow1.0 框架

TensorFlow2.0 框架

TensorFlow 与 PyTorch 比较

TensorFlow 环境配置

CPU-TensorFlow 版安装

GPU-TensorFlow 版安装

9.2.2 TensorFlow 入门

tf 基础 API 引入

tf.constant 常量使用方式

tf.strings 与 ragged tensor

稀松 tensor 与变量 tf.Variable

自定损失函数

DenseLayer 层

张量

随机数

科学计算

统计方法

自动求导机制

tf.function 函数转换

函数签名与图结构

tf.GradientTape 基本使用方法

案例:数据加载

案例:梯度下贱算法的实现

9.2.3 TensorFlow dataset 与 estimator 使用

data_API 导入

tf.data 基础 API 使用

生成 csv 文件

tf.io.decode_csv 使用

tf.data 读取 csv 文件并

tf.data 与 tf.keras 结合使用

tfrecord 基础 API 使用

生成 tfrecords 文件

tf.data 读取 tfrecord 文件

泰坦尼克数据介绍

feature_column 使用

keras_to_estimator

预定义 estimator 使用

交叉特征实战

9.2.4 全连接神经网络

从生物神经元到人工神经元

全连接神经网络介绍

输入层

隐含层

输出层

激活函数

搭建网络模型

模型训练和测试

模型存储和加载

准确度 acc 和损失 loss 的可视化

案例:MNIST 手写数字识别

9.2.5 模型优化

模型优化概述

改变模型复杂度

优化损失函数和学习率

a) Optimizer 优化器

b) SGD 和 SGDM 优化器

c) AdaGrad 优化器

d) RMSProp 优化器

Adam 优化器

优化 MNIST 手写数字识别

图片数据发生器

图片数据增强功能实现

Dropout 解决过拟合问题

正则化实现模型优化

梯度消失与梯度爆炸介绍

Relu 激活函数优化

Xavier Glorot 初始化

Data Augmentation 数据增强

Batch Normalization 归一化

9.2.6 CNN 卷积神经网络

CNN 概述

卷积操作

感受野

权值共享

填充(Padding)

步长(Stride)

池化(Pooling)

卷积和池化输出尺寸计算

CNN 总结

LeNet5 卷积神经网络

案例:LeNet5 实现 MNIST 手写数字类

Alex 卷积神经网络

VGGNet 卷积神经网络

InceptionNet 卷积神经网络

ResNet 卷积神经网络

DenseNet 神经网络

MobileNet 神经网络

案例:不同网络实现 Cifar-10 图像分类

9.2.7 RNN 循环神经网络

RNN 循环神经网络原理

RNN 实现股票预测

a) 数据集处理

b) RNN 模型定义

c) 预测和绘图

d) RNN 评价指标

LSTM 长短期记忆神经网络概述

LSTM 门结构

LSTM 实现股票预测

GRU 门控制循环单元

GRU 实现股票预测

9.2.8 TensorFlow 分布式

分布式介绍与 GPU 设置

GPU 默认设置

内存增长和虚拟设备实战

GPU 手动设置

分布式策略

Keras 分布式实现

Estimator 分布式实现

自定义流程实现

分布式自定义流程实现

9.2.9 TensorFlow 模型保存与部署

tflite 介绍

保存模型结构加参数与保存参数实战

Keras 模型转化为 SavedModel

签名函数转化为 SavedModel

签名函数,SavedModel 和 Keras 模型 到 具体函数转换

tflite 保存与解释与量化

tensorflowjs 转换模型

tensorflowjs 搭建服务器载入模型实战

Android 部署模型实战

模型保存与部署总结

9.2.10 BP 反向传播算法

BP 反向传播目的

链式求导法则

反向传播推导

反向传播-权值更新

反向传播-阈值更新

隐层到隐层参数更新

不同激活函数在反向传播应用

不同损失函数在反向传播应用

Python 实现反向传播神经网络案例

9.3 PyTorch 深度学习框架

9.3.1 PyTorch 简介与环境搭建

选择 PyTorch 理由

PyTorch 简介

a) 发展历史

b) 框架优点

c) 框架企业应用

PyTorch-CPU 环境搭建

PyTorch-GPU 搭建

9.3.2 PyTorch 框架基本使用

Tensor 基本定义

Tensor 与机器学习关系

Tensor 创建编程实例

Tensor 属性

稀松张量

Tensor 算术运算

Tensor 算术运算编程实例

in-place 的概念和广播机制

取模-取整运算

比较运算、排序、数据合法性比较

三角函数

其他数学运算

PyTorch 统计方法应用

PyTorch 的分布函数

PyTorch 随机抽样

PyTorch 线性代数运算

PyTorch 矩阵分解-PCA

PyTorch 矩阵分解-SVD-LDA

PyTorch 张量裁剪应用

PyTorch 张量索引与数据筛选

PyTorch 张量数据合并

PyTorch 张量切片

PyTorch 张量变形

PyTorch 张量填充与傅里叶变换

PyTorch 编程技巧实战

PyTorch 自动求导 autograd-导数-方向导数-偏导数-梯度

PyTorch 自动求导 autograd-梯度下降与机器学习最优解

PyTorch 自动求导 autograd-Variable 与 tensor 应用

PyTorch 自动求导 autograd-梯度计算

PyTorch 自动求导 autograd 重要概念 variable-grad-grad_fn

PyTorch 神经网络库 nn

PyTorch 与 visdom

PyTorch 与 tensorboardX

PyTorch 与 torchvision

9.3.3 PyTorch 搭建神经网络

机器学习基本概念

神经网络的基本概念

神经网络回归问题

神经网络梯度下降

神经网络损失函数最小二乘法

PyTorch 优化算法

PyTorch 实现线性回归实战

神经网络分类问题

神经网络损失函数交叉熵介绍

PyTorch 实现数字分类实战

9.3.4 PyTorch 计算机视觉与卷积神经网络

计算机视觉基本概念

图像处理常见概念

特征工程

卷积神经网络

填充(Padding)

步长(Stride)

池化(Pooling)

卷积和池化输出尺寸计算

卷积构造

激活层-BN 层-FC 层-损失层

经典卷积神经网络结构

轻量型网络结构

多分支网络结构

Attention 网络结构

学习率

优化器

卷积神经网络正则化

9.3.5 PyTorch 实战计算机视觉任务-Cifar-10 图像分类

图像分类网络模型框架介绍

Cifar10 数据读取与处理

PyTorch 自定义数据加载-加载 Cifar10 数据

PyTorch 搭建 VGG 模型实现图像分类

PyTorch 搭建 Cifar10 图像训练脚本配合 tensorboard 记录日志

PyTorch 搭建 Cifar10 训练脚本-ResNet 模型

PyTorch 搭建 Cifar10 训练脚本-Mobilenet 模型

PyTorch 搭建 Cifar10 训练脚本-Inception 结构

PyTorch 搭建 cifar10 训练脚本搭建-调用 Pytorch 标准网络 ResNet18 等

PyTorch 搭建 cifar10 推理测试脚本搭建

分类问题优化思路

分类问题最新研究进展和方向

9.3.6 Pytorch 实战计算机视觉任务-Pascal VOC 目标

目标检测概念介绍

Passcal VOC 数据集介绍

MMdetection 框架介绍-安装说明

MMdetection 框架使用说明

MMdetection 框架原理剖析

MMdetection 训练 Passcal VOC 目标检测任务

MMdetection 模型脚本测试

MMdetection LOG 日志分析

MMdetection 调优

9.3.7 PyTorch 实战计算机视觉任务-COCO 目标分割问题

图像分割基本概念

图像分割方法介绍

图像分割评价指标以及面临的挑战

COCO 数据集介绍

detectron 框架介绍和使用说明

COCO 数据集标注文件解析

detectron 框架源码解析

detectron 模型训练

detectron 测试脚本

9.3.8 PyTorch 搭建 GAN 网络实战图像风格迁移

GAN 的基础概念

GAN 典型模型介绍

图像风格转换数据下载

自定义 dataset 数据集

CycleGAN 模型搭建

CycleGAN 模型训练

CycleGAN 模型测试

9.4 深度学习-目标检测经典模型实战

9.4.1 目标检测 RCNN 模型

RCNN 模型介绍

模型网络结构 AlexNet 介绍

模型训练步骤

准备 region proposal

准备正负样本

预训练

目标分类

回归训练器

RCNN 优缺点

9.4.2 目标检测 Fast R-CNN 模型

Fast R-CNN 模型介绍

模型网络结构 VGG16 介绍

ROI 池化

特征提取方式

联合候选框回归与目标分类的全连接层

Fast R-CNN 创新点

Fast R-CNN 训练

Fast R-CNN 目标检测测试

9.4.3 目标检测 Faster R-CNN 模型

Faster R-CNN 模型介绍

网络模型介绍

RPN 生成建议窗口

产生建议窗口的 CNN 和目标检测的 CNN 共享

Softmax-loss

Faster R-CNN 创新点

Faster R-CNN 训练

Faster R-CNN 目标检测测试

9.4.4 目标检测 mask R-CNN 模型

mask R-CNN 模型介绍

网络模型介绍

RoIAlign

Mask R-CNN 与 Faster R-CNN 对比

损失函数

mask R-CNN 创新点

mask R-CNN 训练

mask R-CNN 目标检测测试

9.4.5 目标检测 RFCN 模型

RFCN 模型介绍

特征提取模型介绍

RFCN 目标检测计算流程

RFCN 创新点

RFCN 训练

RFCN 目标检测测试

9.4.6 目标检测 Cascade R-CNN 模型

Cascade R-CNN 模型介绍

特征提取模型介绍

IOU 阈值设置

级联结构

Cascade 结构介绍

损失函数

Cascade R-CNN 创新点

Cascade R-CNN 训练

Cascade R-CNN 目标检测测试

9.5 深度学习-目标检测 YOLO 实战

9.5.1 深度学习经典检测方法概述

目标检测简介

目标检测原理

图像金字塔

古典目标检测架构

ROI、IOU、FPS、NMS、mAP

IOU 代码实现

NMS 代码实现

特征金字塔

SPP net 10) ROI 池化

9.5.2 YOLO-V1 整体思想与网络架构

YOLO 算法整体思路解读

检测算法对应结果

整体网络架构解读

位置损失计算

置信度误差与优缺点剖析

9.5.3 YOLO-V2 进化详解

版本升级概述

网络结构特点

网络结构细节解读

基于聚类来选择先验框尺寸

偏移量计算方法

坐标映射与还原

感受野作用

特征融合改进

9.5.4 YOLO-V3 网络模型介绍

版本升级概述

多 scale 方法改进与特征融合

经典变换方法对比分析

残差连接方法解读

整体网络模型结构分析

先验框设计优化

Softmax 层优化

9.5.5 项目实战-基于 YOLO-V3 并进行源码解读

数据与环境配置

训练参数设置

数据读取与处理

Debug 模式介绍

构建网络模型

路由层与 shortcut 层说明

YOLO 层定义剖析

预测结果计算

网络偏移计算

模型损失函数概述

标签样式设计

坐标相对位置计算

损失函数整合

模型训练与总结

目标检测效果展示

9.5.6 基于 YOLO-V3 的自定义目标检测

标注工具 Labelme 工具介绍与安装

数据标注

完成标签制作

生成模型所需配置文件

数据格式转换

数据输入数据预处理

训练代码与参数校验

训练模型并预测效果

9.5.7 YOLO-V4 网络模型介绍

版本升级概述

数据增强策略分析

DropBlock 与标签平滑处理

损失函数局限性

CIOU 损失函数定义

NMS 细节优化

SPP 与 CSP 网络结构

SAM 注意力机制模块

PAN 模块解读

激活函数与整体框架

9.5.8 YOLO-V5 网络模型介绍

版本升级概述

数据源 Debug 流程解读

图像数据源配置

加载标签数据

数据增强方法:Mosaic

数据合并

Getltem 构建 batch

网络框架图可视化介绍

YOLO5 配置文件解读

Focus 模块流程讲解

配置文件解析

前向传播计算

BottleneckCSP 层计算

Head 层流程解析

SPP 层计算解析

上采样与拼接

结果输出解析

超参数解析

命令行参数解析

训练流程总结

训练策略概述

模型迭代过程介绍

9.5.9 Resnet 网络框架结合迁移学习

迁移学习目标

迁移学习策略

Resnet 原理

Resnet 网络介绍

Resnet 处理操作

shortcut 模块

加载训练好的权重

模型训练

迁移学习结果对比

9.5.10 目标检测算法 SSD

SSD 概述

SSD 骨干网络

default box 生成与规则

损失函数定义

网络细节介绍

与 YOLO 对比

9.5.11 目标检测算法 RetinaNet

RetinaNet 概述

类不均衡问题

平衡交叉熵

Focal Loss 定义

特征金字塔主干网络

Anchors

分类自网络

边框回归自网络

模型训练

模型优化过程

模型对比与总结

10.图像识别综合案例

10.1 交通标志识别

OpenCV 图片加载

OpenCV 图片预处理

交通标志数据集处理

TensorFlow

卷积神经网络构建

TensorFlow 模型优化

Keras 应用

YOLO 使用

模型保存与加载

Darknet 介绍与安装

10.2 车道线检测

OpenCV 图片读写操作

OpenCV 视频读写操作

OpenCV 图片融合

OpenCV 像素操作

图片灰度化处理

边缘轮廓

腐蚀膨胀

开闭操作

背景消除

物体追踪

10.3 汽车车牌识别

批量数据处理

TensorFlow

YOLO

卷积神经网络

图片裁剪

TensorFlow 模型优化

Keras 应用

模型保存与加载

数据增强

10.4 手势识别系统

OpenCV 批量数据采集

图像灰度化

图像缩放

图像亮度改变

图像旋转

图像裁剪

TensorFlow 构建 CNN 网络

CNN 网络调优训练

模型保存

模型加载

10.5 驾驶员表情识别

OpenCV 摄像头视频操作

图像灰度化

图像缩放

图像亮度改变

图像旋转

图像裁剪

YOLO 框架加载

YOLO 框架调参

YOLO 框架训练

TensorFlow 构建 CNN 网络用于识别表情

CNN 网络调优训练

模型保存

模型加载

11.Linux 基础

Linux 的介绍,Linux 的安装

a) VMware Workstation 虚拟软件安装过程、Ubuntu 虚拟机安装过程

Linux 系统启动过程介绍

a) 内核引导

b) init 进程

c) 系统初始化

d) 建立终端

e) 用户登录系统

Linux 系统目录结构

a) Linux 文件系统的层次结构

b) Linux 文件系统的作用

c) Linux 绝对路径和相对路径

d) Linux 文件/目录的命名规则

e) Linux 命令如何识别文件类型

Linux 常用 shell 命令

a) 文件管理命令

b) 文档编辑命令

c) 文件传输命令

d) 磁盘管理命令

e) 网络通讯命令

f) 系统管理命令

g) 系统设置命令

h) 备份压缩命令

i) 设备管理命令

Linux 系统密码管理

a) Linux 系统密码配置文件

b) Linux 系统修改密码方式

Vim 文本编辑器

Linux 远程登录

a) telnet 登录

b) ssh 登录

c) xshell 软件的使用

Linux 用户和组管理

a) Linux 系统用户账号的管理

b) Linux 系统用户组的管理

c) 用户账号相关的配置文件

Linux 权限管理

a) Linux 权限管理的重要性

b) Linux 权限位

c) Linux umask 详解

Linux 文件系统管理

a) 磁盘结构

b) Linux 常用文件系统介绍

c) 硬盘设备和磁盘分区的识别

d) df 命令

e) du 命令

f) mount 命令

g) fdisk 命令

h) mkfs 命令

i) mke2fs 命令

j) Linux 交换分区的作用

Linux 常用服务搭建

a) ftp 服务搭建

b) samba 服务搭建

c) ssh 搭建

d) telnet 搭建

e) Nginx 服务搭建

Linux 系统服务管理

a) Linux 系统服务及其分类

b) Linux 端口及查询方法详解

c) Linux 基于 xinetd 服务的管理方法详解

d) 影响 Linux 系统性能因素分析

e) 系统性能分析:sar 命令

f) cpu 运行状态查看

g) 内存使用状态查看

Linux 系统日志管理

a) Linux rsyslogd 服务及启动方法(详解版)

b) Linux 日志文件(常见)及其功能

c) Linux 日志文件格式分析

d) rsyslogd 配置文件格式及其内容详解

e) Linux 日志服务器设置过程

f) Linux 日志轮替(日志转储)及 logrotate 配置文件分析

g) Linux logrotate 命令用法详解:进行日志转储(轮替)

h) Linux 日志分析工具(logwatch)安装及使用

Linux 软件包管理

Linux 备份与恢复

a) Linux 备份的重要性

b) Linux 中的哪些数据需要备份?

c) Linux 数据备份介质的选择

d) Linux 备份策略(完全备份、增量备份和差异备份)详解

e) Linux tar 命令备份数据

f) Linux dump 命令用法详解:备份分区、文件或目录

g) Linux restore 命令:还原 dump 操作备份下的文件、目录或分区

h) Linux dd 命令详解:数据备份,并在备份过程中进行格式转换

i) Linux rsync 命令用法详解

SELinux 管理

a) SELinux 是什么

b) SELinux 的主要作用

c) SELinux 的工作模式(Disabled、Permissive 和 Enforcing)

d) SELinux 配置文件(/etc/selinux/config)

e) SELinux 工作模式设置(getenforce、setenforce 和 sestatus 命令)

f) SELinux 安全上下文查看方法(超详细)

g) SELinux 安全上下文的修改和设置(chcon 和 restorecon 命令)

h) SELinux 默认安全上下文的查询和修改(semanage 命令)

i) SELinux auditd 日志系统的安装与启动

j) SELinux auditd 日志使用方法详解

k) SELinux Targeted、MLS 和 Minimum 策略

l) SELinux 策略规则查看方法(seinfo 和 sesearch)详解

m) SELinux 策略规则的开启和关闭(详解版)

12.C 语言高级编程

12.1 C 语言开篇

C 语言发展历史及特点

C 语言应用及就业场景

手把手教你搭建 C 语言开发环境

第一个 C 语言程序

程序的编译及运行

单行注释和多行注释

文档注释

12.2 数据类型

标识符

关键字

变量的定义、声明、赋值和使用

整型及整型数据的表示(进制问题)

浮点型

字符型常量

数据在内存中的存储

由 printf(“%d ”,10/3);所引发的思考

那些年我们遇到的变态笔试题

局部变量和全局变量

揭开 sizeof 的神秘面纱

ASCII 表

12.3 C 语言输入输出

printf 的高级用法

scanf 读取冲键盘输入的数据

走进缓冲区的世界(理解且掌握)

输入输出疑难杂症

12.4 运算符和表达式

赋值运算符

算术运算符

关系运算符

逻辑运算符

位运算符

你会用位运算控制灯光的开和关吗

常见笔试题分析

逗号运算符

条件运算符

其他运算符

预算符的优先级关系

12.5 流程控制

分支结构

a) if 分支

b) if 分支的嵌套

c) switch 分支

d) if 分支和 switch 分支综合应用

e) 作业:员工奖金计算

循环结构

a) while 循环

b) do~while 循环

c) for 循环

12.6 数组

数组的基本概念

一维数组

a) 一维数组的使用

b) 一维数组的内存空间布局

c) 一维数组元素的逆置

d) 如何删除数组中重复的元素

二维数组

a) 二维数组的使用

b) 二维数组和一维数组的关系

c) 二维数组的内存空间布局

字符串

a) 字符串的概念

b) 字符串和字符数组

12.7 函数

函数的基本使用

a) 函数的定义

b) 函数的形参和实参

c) 函数的调用

d) 函数的返回值

e) 程序运行的秘密

f) 再论全局变量和局部变量

g) 函数的栈空间

递归函数

a) 递归函数的定义

b) 递归函数的运行原理

c) 递归求阶乘

d) 中间递归函数

e) 多层递归函数

f) 递归时间和内存开销探索

g) 递归的优化

12.8 C 语言预处理

什么是预处理命令

#include头文件的包含

#include“”和#include<>的区别

头文件的搜索规则

C语言条件编译

C语言宏定义

宏定义的基本使用

带参数的宏定义

宏定义和函数的区别

宏参数的字符串化和宏参数的连接

12.9 综合练习:五子棋游戏开发

12.10 指针

指针的基本使用

a)指针的概念

b)指针变量的定义和使用

c)指针变量的运算

d)指针所占用的内存空间

e)练习:通过指针交换两个整型变量的值

f)不同类型的指针之间的区别

g)空指针NULL和void指针

指针和一维数组

a)数组指针

b)练习:通过指针删除数组中重复的元素c)字符串指针

d)思考:为什么将一串字符串赋值给指针,却不能通过指针修改字符串的内容

e)指针变量作为函数形参

f)指针作为函数返回值

g)malloc和free

h)再论指针的本质

i)堆和栈的区别

j)指针带来的内存泄漏问题

k)野指针和悬空指针

指针数组

a)指针数组和字符串数组

b)指针数组的灵活应用

c)main函数的命令行参数

函数指针

a)函数指针的基本使用

b)回调函数

c)练习:通过不同函数指针调用不同类型的函数

d)经典程序讲解:多个函数的随机调用

二级指针和多级指针

a)二级指针的定义及使用

b)一级指针、二级指针和函数的恩怨情仇

c)多级指针的定义及使用

指针和二维数组

字符串专题

a)常用字符串处理函数的使用

i.strlen

ii.strcpystrncpy

iii.strcmpstrncmp

iv.strcatstrncat

v.strstr

vi.strtokstrtok_r

b)实际应用举例:统计某个班级中姓“李”的同学的个数

c)实际应用举例:将“流浪地球”演员表按照字母表先后顺序显示d)实际应用举例:http协议解析

e)字符串处理函数的实现

f)常见笔试题分析

12.11 结构体

结构体定义

a) typedef 的使用

b) 结构体的初始化

c) 结构体数组

d) 指针和结构体

e) 练习:封装一个结构体保存学生的相关信息,并且计算多个学生中年龄 最大值、最小值和平均值

共用体/联合体

a) 共用体的定义和使用

b) 共用体的内存空间布局

c) 共用体和结构体的区别

d) 大端模式和小端模式

e) 共用体的妙用:判断大小端模式

f) 经典习题讲解:通过共用体分解一个 int 类型的数据

g) 经典习题讲解:通过共用体将四个字符组合成整型数据

枚举

a) 枚举的定义和使用

b) 通过枚举提升代码可读性实例代码

c) 练习:通过枚举获取某天是星期几

d) 实际应用举例:英雄联盟“多杀”音效输出

12.12 C 语言编程高阶

C 程序的组成

a) C 程序项目目录结构

b) static 关键字的使用

c) const 关键字的使用

d) Makefile 文件的编写

e) C 程序的编译步骤

f) 动态库的使用

g) 静态库的使用

h) 练习:将实现交换两个整数的函数编译成动态库和静态库

C 语言调试方法及技巧

a) GDB 的下载和安装

b) gdb run(r)命令:启动程序

c) GDB break(b):设置断点

d) GDB watch 命令:监控变量值的变化

e) GDB watch 命令:监控变量值的变化

f) GDB catch 命令:建立捕捉断点

g) GDB 条件断点(condition 命令)详解

h) GDB 单步调试程序

i) 如何使用 GDB 进行断点调试?

j) GDB print 和 display 命令:查看变量的值

k) GDB print 命令更高级的用法

走进 C 语言内存管理世界

a) 程序在计算机中到底是如何运行的

b) 我们在程序中看到的地址为什么是假的?

c) 虚拟地址和物理地址

d) 虚拟地址空间及编译模式

e) 结构体的字节对齐

f) 什么是栈溢出

g) 函数在栈上到底是怎样的?

h) 函数进栈和出栈的过程

i) 栈溢出攻击的原理

j) 实际应用举例:网站密码破解

13.数据结构及算法

13.1 数据结构基础

线性结构

a) 数组

b) 链表

i. 单向链表

ii. 单向链表的逆置

iii. 单向链表的环

iv. 单向循环链表

v. 双向链表

vi. 双向循环链表

c) 栈

i. 数组实现的栈

ii. 链表实现的栈

iii. 实际应用举例:函数形参的入栈和出栈顺序

d) 队列

i. 实际应用举例:银行取号机功能实现

非线性结构

a) 二叉树

b) 完全二叉树

c) 满二叉树

d) 二分查找树

e) 平衡二叉树

f) 图

13.2 数据结构进阶

二叉树的遍历

a) 通过栈实现二叉树的按深度遍历

b) 通过队列实现二叉树的按层次遍历

c) 判断两棵二叉树是否相同

哈希表

a) 哈希表的实现

b) 哈希冲突及解决方案

c) 实际应用举例:统计一篇文章中单词的个数

B 树

a) B 树的概念及实现原理

b) B 树的实际应用:磁盘搜索原理

B+树

a) B+树的概念及实现原理

b) B+树的实际应用:数据库索引的实现

c) B 树和 B+树的区别

哈弗曼树

a) 哈弗曼树的特点

b) 通过 C 语言实现哈弗曼树

c) 实际应用举例:通过哈夫曼编码实现数据的加密传输

红黑树

a) 红黑树的概念及使用

b) 红黑树的旋转

c) 红黑树和普通平衡二叉树的比较

13.3 综合练习:带字符界面的计算器开发

13.4 算法基础

排序算法

a) 冒泡排序

b) 插入排序

c) 快速排序

查找算法

a) 顺序查找

b) 二分查找

c) 插值查找

13.5 算法进阶

时间复杂度计算

空间复杂度的计算

排序算法

a) 快排法的“Bug”及解决办法

b) 堆排序

c) 希尔排序

d) 归并排序

e) 桶排序

f) 排序算法的稳定性

查找算法

a) Top K 问题

b) 大数据中查找前 n 大数的解决办法

回溯法

a) 八皇后问题

6)动态规划

贪心算法

背包问题

13.6 综合练习:物流仓储管理系统 WMS 开发

14.Linux 高级程序设计

14.1 shell 编程

shell 变量

shell 位置参数(命令行参数)

shell 特殊变量

a) $#

b) $*

c) $@

d) $?

e) $

练习:将指定目录下的所有的.c 文件进行压缩

实际应用举例:使用 shell 脚本对软件开发项目进行定时备份,并且实现自动覆盖

14.2 Linux 文件 I/O

标准 IO

a) 什么是标准 IO?

b) 为什么需要标准 IO?

c) 文件的基本操作

i. fopen 函数

ii. fread 函数

iii. fwrite 函数

iv. fclose 函数

v. fseek 函数

vi. fstat 函数

d) 练习:使用标准 IO 拷贝文件

e) 标准 IO 的缓冲区

i. 行缓冲

ii. 全缓冲

iii. 无缓冲

f) sprintf 的使用

i. sprintf 语法

ii. 实际应用举例:学生信息远程传输数据包封装

系统 IO

a) 什么是系统 IO?

b) 为什么需要系统 IO

c) Linux 系统中文件的描述

d) 文件的基本操作

i. open 函数

ii. read 函数

iii. write 函数

iv. close 函数

v. lseek 函数

vi. stat 函数

e) Linux 目录的操作方法

f) 标准 IO 和系统 IO 比较

i. 从实现原理上理解标准 IO 的作用和系统 IO 的作用

ii. 分析标准 IO 和系统 IO 的使用场景

iii. 标准 IO 系统 IO 性能分析

iv. 时间和日期编程实例

1. 当前时间年月日时分秒获取

2. 练习:你知道你活了多少天,活了多少秒了吗?

3. 实际应用举例:计算你的“英雄联盟”游戏的“L 龄”

14.3 Linux 并发编程

并发和并行的概念

进程

a) 进程的基本概念

b) 进程的状态

i. 进程在 Linux 操作系统中的描述

ii. 进程在 Linux 下的相关系统文件

iii. 进程的三态/五态

iv. 进程之间的切换

v. 进程的上下文

c) 多进程编程

i. 父进程、子进程

ii. 进程控制函数 fork、getpid、getppid、wait、waipid、kill

iii. 子进程的“前世今生”

iv. 关于 fork 函数的经典笔试题讲解

v. 僵尸进程

vi. 孤儿进程

d) 进程间通信(IPC)

i. 管道

1. 有名管道

2. 无名管道

ii. 信号

iii. System IPC 和 Posix IPC

3. 消息队列

4. 共享内存

5. 信号量

e) system 函数

f) exec 函数簇

g) system 函数和 exec 函数簇的区别

h) 练习:程序创建子进程并令其挂起 100s,令父进程每秒监测子进程状态, 若子进程死亡则打印“子进程死亡”,否则打印“Hello World!”

i) Linux 守护进程的设计

多线程

a) 线程的基本概念

b) 线程和进程的关系

c) 多线程编程

i. 线程控制函数 pthread_create pthread_join pthread_self pthread_cancel pthread_detach

ii. PV 操作

iii. 线程的同步

1. 互斥锁

2. 读写锁

3. 条件变量

4. 信号量

5. 线程安全

i. 生产者消费者模型

ii. 银行家算法

iii. 哲学家就餐问题

iv. 线程池

14.4 项目 4:多媒体播放器开发

15.Linux 网络编程

15.1 Linux 网络编程预备知识

OSI 网络模型

TCP/IP 模型

a) TCP/IP 四层模型介绍

i. 应用层介绍

ii. 传输层介绍

1. TCP 传输协议头部

2. UDP 传输协议头部

iii. 端口号

iv. 子网掩码

v. 网络层介绍

1. IP 地址

2.子网掩码

4. ICMP 协议

5. ARP 协议、ARP 攻击

6. 路由器工作原理

vi. 数据链路层介绍

1. 交换机的工作原理

2. 路由器和交换机的比较

b) TCP 三次握手

i. TCP 三次握手流程

ii. SYN 洪泛攻击

c) TCP 四次挥手

d) TCP 可靠稳定实现原理

e) 流量控制和滑动窗口

f) UDP 传输协议分析

网络工具 wireshark 用法

上网流程分析

a) DNS 服务器

b) HTTP 协议和 HTTPS 协议

c) Nginx

d) 负载均衡

NAT 网络地址转换协议

15.2 socket 编程

网络字节序和主机字节序

TCP 编程

a) TCP 服务端编程流程

b) TCP 客户端编程流程

UDP 编程

a) UDP 服务端编程流程

b) UDP 客户端编程流程

c) 广播和组播

IO 模型分析

IO 复用

a) select

b) poll

c) Epoll 练习:网络日志服务器开发 练习:C 语言实现 Linux 网络嗅探器:通过原生套接字的方式,监听所有本地主机收发的 数据链路层帧结构,然后解析数据包的类型,并记录到日志文件。实现一个轻量级的网络嗅 探器

TCP 带外数据编程

TCP 粘包处理

Unix domain 编程

16.Linux 数据库编程

16.1 MySQL

MySQL 数据库的安装

a) windows 下 MySQL 的安装

b) ubuntu 下 MySQL 的安装

c) sqlyog 的安装

MySQL 数据库的基本操作

a) sql 语句书写规则

b) MySQL 查看数据库

c) MySQL 创建数据库

d) MySQL 修改数据库

e) MySQL 删除数据库

f) MySQL 选择数据库

g) MySQL 注释

h) MySQL 中 SQL 语句的大小写规则

MySQL 数据类型和存储引擎

a) MySQL 数据类型简介

b) MySQL 整数类型

c) MySQL 小数类型

d) MySQL 日期和时间类型

e) MySQL 字符串类型

f) MySQL 二进制类型

g) MySQL 数据类型的选择

h) MySQL 转义字符的使用

i) MySQL 系统变量

j) MySQL 存储引擎:InnoDB、MyISAM

MySQL 数据表的基本操作

a) MySQL 创建数据表

b) MySQL 修改数据表

c) MySQL 修改/删除字段

d) MySQL 删除数据表

e) MySQL 删除被其它表关联的主表

f) MySQL 查看表结构

g) MySQL 数据表添加字段

MySQL 约束、函数和运算符

a) MySQL 约束概述

b) MySQL 主键

c) MySQL 主键自增长

d) MySQL 外键约束

e) MySQL 唯一约束

f) MySQL 检查约束

g) MySQL 默认值

h) MySQL 非空约束

i) MySQL 常用运算符

j) MySQL 算术运算符

k) MySQL 逻辑运算符

l) MySQL 比较运算符

m) MySQL 位运算符

n) MySQL 运算符优先级

o) MySQL IN 和 NOT IN

p) MySQL 函数

MySQL 操作表中数据

a) MySQL 插入数据

b) MySQL 去重

c) MySQL 设置别名

d) MySQL 限制查询结果的条数

e) MySQL 对查询结果排序

f) MySQL 条件查询

g) MySQL 使用 LIKE 模糊查询

h) MySQL 范围查询

i) MySQL 空值查询

j) MySQL 分组查询

k) MySQL 过滤分组

l) MySQL 交叉连接

m) MySQL 内连接

n) MySQL 外连接

o) MySQL 子查询

p) MySQL 更新数据

q) MySQL 删除数据 练习:学生信息管理系统数据库设计

MySQL 视图、索引

a) MySQL 视图是什么?

b) MySQL 创建视图

c) MySQL 查看视图

d) MySQL 修改视图

e) MySQL 删除视图

f) MySQL 索引

g) MySQL 索引可以分为哪些类型?

h) MySQL 创建索引

i) MySQL 查看索引

j) MySQL 修改和删除索引

k) 索引在什么情况下不会被使用?

l) 怎么提升索引的使用效率,设计出更高效的索引

数据库的设计

a) ER 模型

b) 数据库三范式

c) 作业:校园网数据库设计

MySQL 事务

a) 事务的概念和特性

b) MySQL 执行事务的语法和流程 MySQL 设置事务自动提交(开启和关闭)

c) 从实例出发,搞懂高并发下的数据库事务隔离级别

d) MySQL 查看和修改事务隔离级别

e) MySQL 表锁、行锁和页锁

f) MySQL InnoDB 的 3 种行锁定方式

g) Mysql 并发时常见的死锁及解决方法

MySQL 性能优化

MySQL C 语言编程接口

16.2 Sqlite3

ubuntu sqlite3 的安装

sqlitestudio 的使用

Sqlite3 数据库结构

Sqlite3 库的操作

Sqlite3 C 语言编程接口

16.3 综合练习:天天鲜花电商平台数据库设计

17.C++应用软件开发

17.1 C++编程基础

C++开篇

a) 从 C 到 C++

b) 面向对象编程和面向过程编程

类和对象

a) 类的定义

b) 类的封装

c) 对象的构造和析构

d) 拷贝构造函数

e) 深拷贝和浅拷贝

f) 多个对象的构造和析构

g) 构造函数和析构函数的调用顺序

h) 对象的动态建立和释放

C++面向对象模型初探

a) 基础知识

b) 编译器对属性和方法的处理机制

继承

a) 继承关系举例

b) 继承相关概念

c) 派生类的访问控制

d) 多继承

e) 菱形继承/环形继承

f) 虚继承

g) C++虚继承下的内存模型

多态

a) 多态的基本概念

b) 函数重载

c) 运算符重载

d) 友元函数

e) 友元类

f) 函数的重定义

g) Mystring 类的实现

h) 虚函数

i. 虚函数的定义

ii. 虚函数表详解

iii. 多态的构成条件

iv. 虚析构函数

v. 纯虚函数

vi. 抽象类/接口

i) RTTI 机制精讲

j) RTTI 机制下的对象内存模型

C++泛型编程

a) C++函数模板

i. 函数模板基础入门

ii. 函数模板的重载

iii. 函数模板实参推断

iv. 函数模板显示具体化

v. 函数模板的实例化

b) C++类模板

i. 类模板基础入门

ii. 类模板的显示实例化

iii. 类模板与继承

iv. 类模板与友元

17.2 综合练习:回合制游戏“冲出冒险岛”开发

17.3 C++高阶编程

笔试面试热门考点

a) struct 和 class 的区别

b) const 详解

c) 内联函数

d) extern “C”

异常

a) 异常的基本概念

b) 异常的抛出

c) 异常的捕获

d) C++标准异常

e) 自定义异常

C++强制类型转换

a) const_cast

b) static_cast

c) dynamic_cast

d) reinterpret_cast

输入输出流

a) cout 格式化输出

b) 输入输出重定向

c) 输出缓冲区的管理

STL

a) 序列式容器

i. vector

ii. deque

iii. stack

iv. queue

v. list

b) 关联式容器

i. set 和 multiset

ii. map 和 multimap

c) 算法

i. 排序算法

ii. 查找算法

C++ 11 新特性

a) nullptr

b) using 取代 typedef

c) auto

d) final

e) lambda

f) 智能指针

g) C++多线程

h) C++线程池

17.4 综合练习:基于 TCP 的聊天室项目开发

17.5 QT 应用软件开发

17.5.1 QT 编程基础

QT 基础知识

a) windows 系统下 QT 的安装

b) Linux 系统下 QT 的安装

c) QT 项目管理文件(.pro)

d) QT 界面文件(.ui)

e) QT 项目中的 main 函数

f) QTCreator 的使用

QT 控件

a) QT 常用控件介绍

b) QT 帮助手册查询方法

QT 界面布局管理

a) 水平布局

b) 垂直布局

c) 网状布局

QT 信号和槽

a) 信号和槽机制

b) 槽函数的定义

c) 父子窗口通信

QT 鼠标事件的处理

a) QT 鼠标事件的获取

b) QT 鼠标事件处理函数重写

c) 捕获 QLabel 标签点击事件

QString 类

a) QString 类的基本使用

b) QString 和 String、char *、数字之间的转换

QT 定时器

a) QTimer 类的使用

b) QObject 类提供的定时器 作业:圆形钟表设计

QT 对话框

a) QT 的 5 种标准对话

b) QT 自定义窗口 c) QT 的多窗口

QT 界面美化

a) 隐藏窗口标题栏

b) QT 样式表

c) 为按钮添加背景图片

d) 为界面添加背景图片

e) 制作不规则 Button

QT 多进程编程

QT 多线程编程

17.5.2 综合练习:网络调试助手开发

18.嵌入式传感器编程

18.1 Linux 串口编程

RS232 RS485 介绍

串口初始化及属性配置

modbus 协议分析及编程

常用模块编程

a) wifi 模块编程

b) 蓝牙模块编程

c) GPRS 模块编程

d) GPS 模块编程

e) RFID 编程

常用串口传感器编程

a) GY39 气象传感器

b) ZQ-M1 烟雾传感器

c) 超声波测距传感器

d) 指纹传感器

e) 重力压力传感器

18.2 GPIO 编程

GPIO 理论基础知识

GPIO 编程接口

常用传感器编程

a) 继电器

b) 土壤湿度传感器

c) 人体红外传感器

d) 直流电机

e) 声光报警器

19.音视频编程

19.1 音视频原理

音频的原理

视频的原理

视频编码原理

H.264 编码压缩算法原理

19.2 音视频网络传输

视频编解码网络传输概览

流媒体服务器架构

P2P 点对点介绍

FFMpeg 音视频开发实战

19.3 RTMP 直播

RTMP 直播介绍

Linux 服务器配置

流媒体推流

流媒体转发与接收

19.4 科大讯飞语音识别

20.5G 物联网应用开发

20.1 ARM 体系结构与编程

ARM 概述和分类

a) ARM 的简介

b) ARM 的分类

c) ARM 的命名规则

d) 基于 ARM 的嵌入式系统概述

ARM 体系结构与存储系统

a) 存储

b) 流水线

c) 模式

d) 寄存器

ARM 指令集和汇编程序设计

a) ARM 处理器寻址

b) ARM 指令集

c) ARM 汇编程序设计

ARM 中断和异常处理

a) 异常简介

b) 异常向量表

c) 异常优先级

d) 异常进入和退出

20.2 STM32 应用开发

STM32 应用开发导入

a) STM32 系列介绍

b) Cortex-M4 体系结构

c) 开发环境搭建

基本 I/O 端口控制

a) 寄存器法操作代码分析

b) 时钟配置

c) I/O 端口配置

d) 库函数操作流水灯

e) 库函数控数码管

f) 简单按键输入

中断

a) STM32 中断异常

b) STM32 中断相关的基本概念

i. 优先级

ii. 中断控制器 NVIC

iii. NVIC 的优先级组

c) 外部中断

串口通信

a) 串口通信基础

b) STM32 串口操作

i. 寄存器方式操作串口

ii. 库函数方式操作串口

直接寄存器访问

a) DMA 基础知识

b) STM32 的 DMA 操作

i. 寄存器方式操作 DMA

ii. 库函数方式操作 DMA

iii. DMA 操作实例

模拟/数字转换器

a) ADC 基础知识

i. ADC 主要特性

ii. ADC 框图及引脚分布

iii. 通道选择

iv. ADC 转换模式

v. ADC 寄存器和固件库函数列表

b) STM32 ADC 操作

i. 寄存器方式操作 ADC

ii. 库函数方式操作 ADC

iii. ADC 操作实例

定时器

a) 定时器基础知识

i. 高级定时器

ii. 基本定时器

iii. 通用定时器

b) STM32 定时器操作

i. 寄存器方式操作定时器

ii. 库函数方式操作定时器

iii. 定时器操作实例

CAN 总线设计

a) CAN 总线基本工作原理

b) CAN 协议的特点

c) CAN 协议通信过程

d) CAN 的报文格式

e) 同步

f) CAN 总线拓扑结构

g) CAN 通信的软件设计

h) CAN 通信实例

20.3 嵌入式操作系统 UCOS

uC/OS-III 操作系统原理

uC/OS-III 在 Cortex-M4 平台上的移植

uC/OS-III 多任务编程

uC/OS-III 多任务间通信

uC/OS-III 同步与互斥

uC/OS-III 中断处理

20.4 嵌入式操作系统 FreeRTOS

初识 FreeRTOS

移植 FreeRTOS 到 STM32

FreeRTOS 启动流程

任务管理

消息队列

信号量

互斥量

事件

软件定时器

任务通知

内存管理

中断管理

CPU 使用率统计

20.5 项目 2:基于 STM32 的智能小车

20.6 物联网高级应用开发

20.6.1 ZigBee 应用开发

ZigBee 基本概念

a) 设备类型

b) 协议栈规范

c) 路由

Z-Stack 协议栈总体设计

a) 任务初始化

b) 任务调度

c) 时间管理

d) 原语通信

cc2530 编程

a) 开发环境搭建

b) cc2530 GPIO 控制

c) cc2530 中断

d) cc2530 定时器

e) cc2530 串口通信

f) cc2530 组网

20.6.2 蓝牙 Mesh

Mesh 概述

Mesh 网络基本概念

设备管理

BLE 设备

20.6.3 NB-IoT

NB-IoT 物联网行业解决方案

NB-IoT 硬件平台介绍及使用

AT 指令

CoAP 通信

MQTT 88

电信云平台对接及使用

华为云平台对接及使用

20.6.4 项目 3:智能温室大棚控制系统

21.嵌入式 Linux 系统移植及驱动开发

21.1 嵌入式平台软硬件框架分析

硬件平台分析

a) 马士兵硬件平台的架构

b) 马士兵平台启动过程概述

u-boot

a) u-boot 原理与工作过程

b) u-boot 编译与使用方法

c) u-boot 源码修改与分析

d) 启动 logo 修改

Linux 内核

a) Linux-4.x/5.x 内核源码架构

b) 嵌入式 Linux-内核编译方法

c) 嵌入式 Linux-内核裁剪过程

根文件系统

a) 嵌入式 Linux 根文件系统工作原理

b) 根文件系统的制作过程

c) uboot、内核映像、文件系统烧写

d) 开机自启动程序设置

ARM 体系结构

a) ARM 处理器的原理与架构

b) Cortex-A35 处理器架构

c) GPIO 控制方法

d) ARM 处理器 C 语言编程方法

e) ARM 处理器汇编编程方法

21.2 设备驱动开发

Linux 的内核模块

字符设备驱动模型

MMU 与 IO 内存映射

misc 设备驱动模型

内存管理与分配

Linux 内核中断驱动设计

内核同步机制—自旋锁、信号量、互斥锁与等待队列等

Linux 内核时间管理

设备驱动的 platform 模型

内核设备驱动管理—如何将设备驱动编译到内核。

Linux 输入子系统模型

Linux IIC 子系统

LED 灯、蜂鸣器、按键驱动设计实例

温湿度传感器、可燃气体传感器驱动设计实例

ADC 驱动设计实例

人体红外传感器设计实例

22.物联网综合项目实施方案

22.1 智能停车场管理系统

面向对象程序设计

opencv 图像处理

传感器编程

TCP 编程

udp 编程

STL 容器

MySQL 数据库

Sqlite3 数据库

文件 IO

22.2 基于 STM32 的智能小车

STM32 编程

FreeRTOS

红外传感器编程

超声波测距编程

直流电机编程

蓝牙编程

红外遥控

LC1602A 显示编程

22.3 智能温室大棚控制系统

STM32 编程

FreeRTOS 操作系统

ZigBee 编程

传感器编程

RFID 编程

NB-IoT

23.AIoT 企业级项目开发

23.1 基于 ZigBee 的智能物流仓储系统

STM32

FreeRTOS

ZigBee 组网技术

RFID

传感器编程

NB-IoT

23.2 人工智能工业分拣系统

嵌入式 Linux

Python 编程

Qt 编程

STM32 开发

机械臂开发

TensorFlow 开发

AI 语音识别技术

AR 开发(了解)

23.3 智能家居控制系统

嵌入式 Linux 开发

QT 编程

传感器开发

数据库开发

音视频开发

语音识别

蓝牙 Mesh 组网

23.4 智慧教室终端

嵌入式 Linux 开发

并发编程

socket 编程

QT 开发

传感器编程

Sqlite3 数据库

语音识别

人脸识别

23.5 智能无人小车

嵌入式 Linux

Python 编程

PyQt 编程

ROS 操作系统

Opencv

Slam

TensorFlow 开发

AI 语音识别技术

23.6 基于 NB-IoT 的共享单车

STM32 开发

GPS 编程

NB-IoT 模块编程

NB-IoT 通信

展开阅读全文

页面更新:2024-05-12

标签:卷积   神经网络   风口   人工智能   指针   算法   函数   实战   入门   模型   目标   项目   数据   技术

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top