大家好啊,我是董董灿。
在 CSDN 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。
90%的问题我都回复了,但有时确实因为太忙,没顾得过来。
在这个过程中,我发现很多小伙伴问的问题都类似:比如如何入门计算机视觉,某某算法是做什么的,有什么作用。
之前写的文章由于过于分散,不成体系,很多知识点没有串联起来。
于是我做了个合集,计划系统的从传统计算机视觉,到基于深度学习的计算机视觉走一遍。
然后依托Resnet50这一经典图像分类网络,将涉及到的算法都剖析和实现一遍,最后亲自完成该神经网络的搭建,并带你完成任意图像的识别。
专栏计划更新目录大纲为(高亮部分是已经写完的)
我所理解的计算机视觉
基础背景知识
-
图片和像素
-
灰度图
-
彩色 RGB 以及通道
-
彩色YUV
-
OpenCV 介绍、环境搭建及一个实战完成YUV的分量提取
传统计算机视觉初探
-
传统CV之均值滤波
-
传统CV之高斯滤波
-
传统CV之高斯滤波实战
-
传统CV之边缘检测
-
传统CV之图像分割(大津算法)
-
传统CV之利用大津算法实战完成图像分割
深度学习基础
-
机器学习和深度学习的关系
-
深度学习之神经网络
-
深度学习之训练和推理
-
深度学习之正向传播和反向传播
-
深度学习之损失函数
-
推理的性能,那些框架存在的意义
-
深度学习实战——完成一个模型的训练和推理
图片分类模型 - Resnet50
-
什么是 Resnet50 神经网络?
-
Resnet 神经网络为什么这么重要?
-
Resnet 中共包含哪些算法?
-
卷积 - 为什么是卷积?
-
卷积 - 什么是卷积的 Feature Map?
-
卷积 - 到底什么是感受野?
-
卷积 - 矩阵乘法的本质
-
卷积 - 实际上是一个特征提取器
-
卷积 - 卷积特征的可视化和一个神奇的网站
-
卷积 - 卷积的基础公式
-
卷积参数 - padding 的作用
-
卷积参数 - stride 的作用
-
卷积参数 - dilation 的作用以及什么是空洞卷积
-
卷积参数 - 长宽方向的公式推导
-
变种卷积 - 分组卷积
-
实战 - 手写一个基础卷积算法
-
卷积 - 算法总结
-
池化 - 什么是池化算法
-
池化 - 池化与卷积的区别
-
池化 - 池化的特征不变性
-
池化 - 平均池化和全局平均池化
-
实战 - 手写一个最大池化函数
-
BatchNorm - 什么是批归一化以及它解决了什么问题
-
BatchNorm - 经典面试题:训练和推理中的批归一化有什么不一样
-
实战 - 手写一个BatchNorm 算法
-
BatchNorm 为什么可以和卷积融合?
-
激活函数 - 非线性的重要性
-
激活函数 - relu
-
激活函数 - sigmoid
-
激活函数 - 梯度消失和梯度爆炸
-
Resnet - 残差结构和它的作用
-
实战 - 利用 conv + bn + relu + add 手写一个残差结构
-
全连接 - 特征的全局融合
-
全连接 - 特征与样本空间的对应关系
-
实战 - 手写一个全连接算法
-
Softmax 分类器以及它的底层原理
-
损失函数和softmax
-
Resnet 中的下采样
模型实战
-
python 环境搭建
-
resnet50 模型下载
-
resnet50 权值和参数保存
-
resnet50 权值和参数加载
-
python - 手写卷积、bn、池化、全连接、激活、ResBlock
-
python - 全手写搭建 resnet50 神经网络
-
图片预处理:Resize and Crop
-
图片预处理:Normalize
-
python - 利用手写的网络,成功预测一张图片
-
python - 代码仓库介绍
-
AI 模型性能评估指标:吞吐和延时
-
python - 第一版手写代码性能评估
-
python - 利用向量内积来优化卷积运算
-
C++ 环境搭建和一些库的安装
-
C++ 代码格式规范的一个工具使用
-
C++ 仓库目录结构介绍
-
C++ 编译,运行介绍
-
C++ - 手写卷积、池化、bn、全连接、relu等算法
-
C++ - 手写 BottleNeck 结构,搭建resnet50 神经网络
-
C++ - 预测图片数据集介绍
-
C++ - 图片预处理介绍
-
C++ - 完成一张图片的推理,top1和 top5 的准确度验证
-
C++ - 性能评估:Latency 和 FPS 介绍
模型性能优化1 - AVX2 向量指令集
-
什么是计算向量化
-
avx2 向量指令集介绍
-
avx2 向量寄存器介绍
-
avx2 数据 load/store 向量化操作介绍
-
avx2 向量实现乘累加
-
利用 avx2 向量指令集优化卷积运算
-
评估优化前后的性能差距
模型性能优化2 - 权值预加载
-
计算机基础 - 计算数据流加载(IO)
-
为什么要做权值预加载
-
手写的模型如何模拟权值预加载
-
权值预加载实现,评估优化前后的性能差距
模型性能优化3 - 内存操作的移除
-
操作系统:内存的申请机制介绍
-
系统负载:频繁申请内存的影响
-
如何移除推理 routie 上的内存操作
-
移除内存操作前后的性能评估
模型性能优化4 - 代码生成
-
什么是代码生成
-
代码生成一般都是怎么做的
-
代码生成有什么好处,为什么性能会更好
-
手写的模型如何模拟代码生成
-
将所有算子替换成代码生成逻辑
-
JIT 编译介绍
-
如何在代码中加载动态库
-
如何从动态库中获取到函数符号
-
利用代码生成的逻辑优化手写的神经网络性能
-
优化前后性能评估
我自从转行来做AI,有不少启发,可以查看:我是如何转行 AI 并且实现薪资翻倍的。
上面的内容适合想入门计算机视觉同学,或者已经有一些基础但是想提高自己的同学,还有就是想学习神经网络性能优化的同学。
上面的知识点我都全程答疑,并且可深度链接作者,咨询算法问题。
所有代码我会亲自编写,确保可以完全实操起来,并且理解为什么可以这么做。
做这个文章和代码实战合集,其实也是对我的一种锻炼和知识积累,如果你想入门学习AI视觉,想提高自己的同学,欢迎一起学习,我们一起冲吧。