前言
计算机视觉 (CV) 作为人工智能 (AI) 的子方向,近年来十分火热,广泛应用于各大领域,如人脸识别、无人驾驶、智慧交通、智慧医疗和机器人等。其网络模型和算法也是层出不穷,涉及的理论基础也十分广泛。本文将列举计算机视觉工程师的知识结构,后期也将持续更新相关技术分享博客及B站讲解视频。目的在于巩固拓展自身所学,与大家互相交流,共同进步。
1 计算机基础
虽然面试基础四大件在 CV 日后工作中可能用处不是很大,但这些往往能决定一名码农的上限(咱也是听前辈说的,还没那体会)。但实际一点来说,计算机基础在面试中所占比例不容忽视。
- 数据结构与算法
- 计算机网络
- 操作系统
- 设计模式
2 编程语言
随着 AI 的兴起,Python 这门脚本语言最近特别火。不可否认的是,Python 代码简单易学,操作方便,尤其体现在深度学习 (DL) 网络模型实现上;但企业级开发中,只会 Python 是不够的,算法的落地应用更多还是依赖 C++,很多 CV 库和 DL 框架都是用 C/C++ 写的。当然,还有 Shell 批处理语言也是不能不会的,企业级开发多在Linux系统下进行,掌握 Shell 是基石。
- Python
- C++
- Shell
3 数学基础
CV 的数学门槛没有 SLAM、立体视觉、三维重建那么高,但数学理论的高低也决定了一名算法狗的上线。比如机器学习 (ML) 算法实质就是统计学,对一组数据进行特征工程,分类,回归,聚类,降维;RGB 图像可以表示为矩阵的形式;DL 网络训练技巧中的优化算法本质也是最优化方法。
- 微积分
- 矩阵论
- 统计学
- 最优化方法
4 图像处理与OpenCV
CV 处理的对象是图片或视频,因为 RGB 图像可以表示为矩阵形式,所以对图像处理也就可以理解为对矩阵进行数学运算,比如卷积;但仅仅掌握数字图像处理的理论是不够的,如何才能运用到工程上,这就离不开 CV 库的帮助了。目前常用的就是 OpenCV 了,感兴趣的朋友可以研究源码,对于理论的理解会有很大帮助。
- 数字图像处理
- OpenCV
5 机器学习与Scikit-learn
ML 是包含 DL 的,图像/视频本质上仍然是数据的一种,谈到数据分析,首选当然是 ML 算法,ML 算法可分为四大类:分类、回归、聚类、降维。同样地,为了能把理论运用到工程上,离不开 ML 库的帮助。目前常用的是 Scikit-learn,感兴趣的朋友可以研究源码,对于理论的理解会有很大帮助。
- 机器学习
- Scikit-learn
6 深度学习与框架
DL 算法是由感知机逐步演化而来,神经网络 (NN) 的训练技巧也是不断发展。不同激活函数、损失函数、优化算法对优化目标都有着不同的影响。LeNet-5 打开了 DL 算法落地的大门,卷积神经网络 (CNN) 走入人们的视野,卷积层、非线性激活、池化层、归一化、全连接层让特征提取由人工选择转为自动学习。循环神经网络 (RNN) 的出现极大促进了自然语言处理 (NLP) 的发展。生成对抗网络 (GAN) 也是 DL 算法比较有趣的一个分支,常用于图像生成。为了更高效地运用到工程上,很多框架应运而生。目前常用的有 Caffe、TensorFlow、PyTorch、Keras、MXNet。
- 深度学习
- TensorFlow/PyTorch/Caffe
7 CV子方向
CV 的子方向十分广泛,应用领域也很广。不过大多算法都是相通的,无非是以上知识的结晶。对于大多朋友来说,往往只需专精一个子方向即可,紧跟顶会顶刊大牛组算法即可,如 CVPR、ICCV、PAMI、AAAI。
- 图像分类
- 目标检测
- 图像分割
- 目标跟踪
- 图像增强
- 风格化
- 人脸识别
- GAN
- 图像检索
小结
CV 工程师的长征路大致如此,感兴趣的朋友可以持续关注,我将定期分享以上知识点的思考总结博客以及B站讲解视频,期待与你的交流切磋。谢谢观看。