读研期间主要做机器学习方向,现在转做图像处理和计算机视觉算法,工作一段时间了,把自己的认识和感悟总结下来,为后续的发展指明方向。如果对别人的学习也有帮助,那最好不过了。主要包括基础理论,应用开发,开发工具三个部分。
一. 基础理论
1. 数字信号
[1]通信原理 [2]信号与系统 [3]数字信号处理。
2. 图形学
[1]图形学[OpenGL,DirectX]。
3. 图像处理
[1]图像处理 [2]模式识别
4. 机器视觉
[1]机器视觉 [2]计算机视觉[OpenCV]
5. 机器学习[MLAPP,PRML]
[1]深度学习[Caffe,TensorFlow] [2]强化学习[RL]
6. 数据结构与算法
[1]数据结构 [2]算法[算法导论]
7. 数学
[1]数学 [2]概率统计 [3]几何[计算几何,微分几何]
8. 论文
[1]CVPR [2]ICCV [3]ICML [4]NIPS
可能这样的划分不太合理,但是也没有关系,主要是要把基础算法和开源代码相结合,提高理论和工程的能力。
二. 应用开发
1. 编程
[1]C++ [2]Python [3]C# [4]QT
2. 高性能计算
[1]并行计算[MPI,OpenMP] [2]异构计算[CUDA]
3. 三维建模和三维重建
[1]3ds Max [2]PCL [3]Kinect [4]OpenNI
4. 虚拟现实
[1]Unity3D [2]HTC Vive
5. 即时定位与地图构建[SLAM][Cartographer]
[1]机器人[ROS] [2]无人机 [3]自动驾驶
6. 音频和视频
[1]FFmpeg
貌似很多的样子,其实主要是能够理解这些基础算法,C++编程能力要好。做算法时间长了,感觉对产品几乎没什么概念,以后除了专注于图像处理和计算机视觉算法之外,学习下VR内容开发。
三. 开发工具
[1]CMake和VS 2013:C++,C#。
[2]PyCharm和Spyder:Python。
[3]Git:尝试参与开源项目,贡献代码。
[4]Docker:开发、测试、部署。
[5]Blog:日记文章,专题文章,系列文章。
[6]Enterprise Architect:UML建模。
参考文献:
[1] Deep Learning
[2] Machine Learning:A Probabilistic Perspective
[3] Multiple View Geometry in Computer Vision (2nd Edition)
[4] Probabilistic Robotics
[5] Reinforcement Learning:An Introduction
[6] Pattern Recognition and Machine Learning