【记录】一个深度学习算法工程师的成长之路(思考和方法以及计划)

article/2025/10/3 19:37:06

声明:

1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

文章目录

    • 声明:
    • 〇、写在前面
    • 一、编程能力
        • (1)熟练使用 linux
        • (2)熟练使用 python
        • (3)流畅使用 C++
        • (4)良好的算法基础
        • (5)良好的编程习惯
    • 二、深度学习理论
    • 三、g++, CMake和Makefile
    • 四、shell,vim 和 git
    • 五、python 爬虫
    • 六、数据可视化
    • 七、数学基础
    • 八、公众号
    • 九、彩蛋
    • 参考文章

〇、写在前面

在这里插入图片描述
讲道理,其实这个博客我是怀着一个很严肃的心情准备写的,但是吧,一谈到【找工作】这个问题,我就很焦虑。。。。。。看到这个省略号了嘛?这就是我的心情 😐,尤其是在就业一年比一年难的情况下。为什么这么说?

事实上19届秋招算法岗就有些【供过于求】了,头条甚至发了 算法劝退贴。而这很大程度上就是由于前几年算法就业形势太好了,导致一大批人转算法,这导致的大泡沫其实还没有消化掉,所以其实不是现在算法突然不好找工作了,而是之前太容易了。其实你说公司真的不缺算法工程师嘛?当然不是,公司也是有算法工程师的缺口的,那为什么出现这种情况?除了要劝退一部分盲目入行的同学;听到、遇到的好几个HR都说,收到几百份简历,但是没什么匹配的。所以说做算法的人多是真的,可是需要做算法的人也是真的,而主要的矛盾点在于 供需不匹配

所以在经历过好多次心态崩裂,也问过很多前辈和大佬之后,参考了很多大佬的文章之后,我决定来总结一下如果想成为一个【深度学习算法工程师】需要什么学习能力和知识储备。这个文章应该会是一个【记录】性质的文章,期望看看自己这一路走来 学了什么准备学什么需要学什么,希望和各位共勉。

一、编程能力

这真是个老生常谈的问题,为什么这么说呢,自然是因为这个【编程能力】我听过不下几百遍,听的脑瓜子都疼,可是没法子,这就是 必备技能,必备到什么程度?

这么说吧,假如你想写作文,如果你不会写字,组词,造句,我想你应该完全没法完成这个创作过程。很形象吧,但是也确实如此,仔细想一想,招你进去是要干活的,公司不会招聘一个只会 MATLAB 或者 python 都用不熟的人来做项目开发吧,做纯算法研究都不行。

  • MATLAB 大家都懂的,做实验室研究确实很棒,高效方便的矩阵和数组运算,画图方面也相当不错,但是工业应用还没听过谁说是用 MATLAB 实现的呢。
  • python 你可能想问为什么,可以这么说,如果连 python 这样比较简单的语言还用不熟,那真是无话可说。

那么 具体地说,编程能力需要哪些基本要求呢?

(1)熟练使用 linux

在这里插入图片描述
新手肯定都是用 Windows 起手的了,像我之前就是这样,但是在学习过程中发现在 Windows 上搞不定了,一般也会先忍几次,然后掉头就去学 linux 了,一定是这样的过程。哪些在 Windows 上真的搞不定呢?比如:最新论文中提出的视觉开源算法等等。

但是在条件上可能很多人都觉得不是太合适,比如实验室条件,电脑条件等等,不过对我们而言,linux 并不需要了解太深。装个 ubuntu 系统,常用的文件操作、程序编译等知道就OK了。剩下的完全是在使用的过程中现用现学,手边常备一本书 《鸟哥的linux私房菜》,神书,你可以百度或者Google一下自然就知道这个书的强大了。在或者现在的网络比较强大了,资源也是很多,实验楼 也是一个不错的选择,帮你搭配好的环境,直接使用就OK了。如果还是想自己搞一下,虚拟机也是一个不错的选择,不会影响你电脑本来的环境配置,但是还满足了要求。

个人计划

  • 《鸟哥的linux私房菜》
  • 实验楼

(2)熟练使用 python

在这里插入图片描述
网络如此发达的今天,如果你说你找不到资源我是不相信的,但是如果你说你眼花缭乱了,我是毫不质疑的。因为我当时就就是这样的,基础部分看廖雪峰的 python教程 就可以了,我个人有看一些,但是真正入门的是一本书——《Python编程:从入门到实践》,极其的基础,但是对小白来说非常友好。

有的同学会问是学 python2 还是 python3?这么说吧,python 核心团队计划2020年停止支持 python2,也就是说 python2 马上就要说再见了,肯定还是学 python3,遇到之前的 python2 的代码再查找区别即可。python 学起来其实很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如 python,numpy,pandas,matplot,scikit-learn等等。

python 的开发环境值得说一下,因为有太多选择,这里比较建议使用 pycharm 和 jupyter notebook 吧,具体可以参考这个博客——Windows10 下 Anaconda和 PyCharm 的详细的安装教程(图文并茂)。

个人计划

  • 《Python编程:从入门到实践》
  • 《疯狂Python讲义》

(3)流畅使用 C++

在这里插入图片描述
至于 C++,比较普遍的都是 《C++ primer》 或 《C++ primer plus》 这样的大块头书,如果是入门的话应该还可以,倒是不如 《王道程序员求职宝典》 这类书实用。大块头书优点在于全面,同时也往往导致了重点不突出。如果想看视频课程的话,推荐中国慕课上北大的《程序设计与算法》,第1门课程是 C 语言程序设计,第2门课程是算法基础,第3门课程是 C++ 程序设计。看视频课程一般比较慢,如果没什么基础或者特别想把基础学好的话,强烈推荐。

个人计划

  • 《C++ primer》
  • 《C++ primer plus》
  • 程序设计与算法课程(一)
  • 程序设计与算法课程(三)

(4)良好的算法基础

在这里插入图片描述
其实没做过检测或者分割或者其他的,是很正常的,快速跟进就是了,这是公司开发的常态。但是如果一些网络结构基础,图像的基础概念,卷积神经网络的基础——大话卷积神经网络CNN(干货满满),等等,这样很可能会犯很多低级错误,可能会出现很多问题。

这就要求开发能力必须过关,因为算法效率在实际生产中还是有要求的。工业界用的算法是滞后于学术界好几年的,不要对公司所做的算法有太多的幻想,现实数据比你想的质量差太多,现实用的算法也没有那么高端,大部分时间都不是用在建模。

个人计划

  • LeetCode
  • 牛客网
  • 《剑指offer》

python:

  • 《算法图解》
  • 《用Python解决数据结构与算法问题》
  • 《数据结构与算法 Python语言描述》

C++:

  • 《啊哈!算法》
  • 程序设计与算法课程(二)
  • 《算法导论中文第三版》(这是本神书。。。)

(5)良好的编程习惯

在这里插入图片描述
这里说的习惯有:多使用类,多利用函数封装,写好项目的目录结构,良好的变量或者函数命名,善用程序的注释功能,Python 编程语言需要遵循 PEP8 规范(杂谈——Python代码写得丑怎么办?autopep8来帮你)等等。这可以帮助你更好的和同事或者同行沟通,而且看着也舒服,就算好久不看程序了,依然可以做到很好的回溯记忆。

二、深度学习理论

在这里插入图片描述
基于深度学习的计算机视觉是计算机视觉的两大方向之一,另一个是 SLAM,机器学习包括深度学习里的大部分算法本质上都是用来做 分类 的。具体到计算机视觉领域一般就是 物体分类(Object Classification)目标检测(Object Detection)语义分割(Image Semantic Segmentation) 等,当然也有一些很酷又好玩的东西比如 edges2cats、deepart 等等。

我主要做一些【图像重建】或者【超分辨率】相关的东西。其实一般是看一看论文,复现复现网络结构,或者直接跑一跑别人的代码,做一做网络结构修改,调一调超参数。前期的图像数据集制作,还有预处理才是主要的工作。深度学习为什么这么强?它比传统的图像处理方法好吗?它主要解决了什么样的问题呢?

个人比较认同是以下三点:学习特征的能力很强,通用性强,开发优化维护成本低。存在的问题可能就是数据量,对 label 的精准性要求比较大。之前看过的一个文章写得不错,参见 为什么深度学习几乎成了计算机视觉研究的标配?。

关于这一部分理论的学习,漫天飞的各种资源。这里推荐一些:

  • 可以看一看李宏毅的一天搞懂深度学习课件;
  • 李飞飞的CS231n课程,网易云课堂有大数据文摘翻译的 中文字幕版课程,知乎专栏 智能单元 有CS231N课程翻译(非常好);
  • 吴恩达的 《DEEP LEARNING AI》,今年年底就要下线了,还有我个人依据课程写的 深度学习入门笔记系列。

个人计划

  • 《一天搞懂深度学习》
  • CS231N课程
  • Deep Learning AI课程
  • 《DeepLearning深度学习花书》
  • 《Tensorflow+实战Google深度学习框架》
  • 《图解神经网络与深度学习》
  • 《PyTorch深度学习实战》
  • 《Python 深度学习(Keras)》
  • 《深度学习之Pytorch》
  • 《深度学习框架PyTorch》
  • 《PaddlePaddle与深度学习应用实战》
  • 《动⼿学深度学习》
  • 《深度学习之PyTorch实战计算机视觉》
  • 经典深度学习论文

三、g++, CMake和Makefile

在这里插入图片描述
python 是脚本语言,而当前大量的 AI 算法都部署在移动端嵌入式平台,需要使用 c / c++ / java 语言,g++,CMake 和 Makefile 正是 Linux 下编译 C系代码 的工具,也是必备的基础。实际上一些python,matlab开源项目也需要预编译,更多的等到了工作岗位自然懂。

个人计划

  • g++
  • CMake
  • Makefile

四、shell,vim 和 git

在这里插入图片描述
Linux 下一个熟练的工程师,会比 Windows 下工作效率高很多,提高写代码效率可以从终端多任务管理,熟练使用 shell 命令,熟练使用 vim 等开发环境,熟练使用 git 命令等地方入手。

  • shell 命令是 Linux 的操作基础,也是学习使用 Linux 的开始,而慢慢熟悉高级的 shell 命令在将来的工作中会带来很大的效率提升。
  • vim 是 Linux 下最常用的编辑器,从小白到高手都可以使用,而它的列编辑,查找替换,自动补全等功能都是效率的保证,或许从visual studio等环境切换过来的同学刚开始会有些许不适应,但是时间久了就会越来越明白 vim 的好。
  • git 是程序员必备的素养,慢慢学会维护几个自己的代码库,等到将来出问题的时候就明白了。

个人计划

  • shell
  • vim
  • git

五、python 爬虫

在这里插入图片描述
深度学习项目开发中最重要的就是 数据!!!或许是一句戏言,但是有一句话是这么说的,深度学习在目前阶段可以认为是一个数据的游戏,你的数据更好,标记的更完美,你的运行结果就更棒。尤其是实际的项目经常没有足够多的数据,这个时候就需要自己去想办法获取了。除了公开的数据集之外,其他的数据怎么获得呢?互联网是一个什么资源都有的大宝库,学会使用好爬虫,你将可能成为时代里最有资源的人,我想叫你金矿工,而且这也很可能是项目成功的开始。

个人计划

  • 网络爬虫
  • 《Python项目案例开发从入门到实战——爬虫、游戏和机器学习》

六、数据可视化

在这里插入图片描述
处理数据的一个常用的手段就是数据可视化!在深度学习项目中,常需要的数据可视化操作包括原始图片数据的可视化,损失和精度的可视化等。除了对数据可视化,还需要对模型进行可视化,方便调试和感知。

这个方面我的建议是多打一些比赛,多看一看别人的代码和博客,这样就会很容易学会的。

个人计划

  • Kaggle
  • 天池

七、数学基础

在这里插入图片描述

  • 微积分:其实个人感觉涉及的微积分知识相对简单,积分很少,微分也不是特别复杂,花一天时间学一学就行。

  • 概率论与统计:这个比较高深,是应用在机器学习领域里最重要的数序分支。应用比如:条件概率、相关系数、最大似然、大数定律、马尔可夫链等等,还是得好好搞一下概率。

  • 线性代数:数字图像本身就是以矩阵的形式呈现的,多个向量组成的样本也是矩阵这种形式非常常见,大多机器学习算法里每个样本都是以向量的形式存在的,多个矩阵叠加则是以张量(tensor)的形式存在 Google 深度学习库 TensorFlow 的字面意思之一。

  • 凸优化:这个需要单独拎出来说一下。因为太多问题(尤其机器学习领域)都是优化问题(求最优),凸优化是里面最简单的形式,所以大家都在想办法怎么把一般的优化问题转化为凸优化问题。至于单纯的凸优化理论,好像已经比较成熟了。在机器学习里,经常会看到什么求对偶问题、KKT条件等,潜下心花两天学一学。

数学知识真的没必要系统学习,效率低又耗时,毕竟大家都有本科或者研究生的基础了,这就足够了。用的最多的就是矩阵论!!!或者用到的时候学,学完之后总结一下。再就是活学活用网上的搜索资源,比如 CSDN、知乎等等。

个人计划

  • 《矩阵论》
  • 北大的《凸优化》课程
  • 林轩田机器学习基石
  • 林轩田机器学习技法

八、公众号

时代变了,一百年前的人类绝对想像不出自己有了困惑不是去翻书或请教他人而是告诉身旁的一台机器。如今,小学生做道算术题或小女生来个大姨妈都要问问电脑:这是怎么回事。但这些与学视觉又有什么关系呢?——答:没有。好像跑偏的有点多了,再扯远一点吧。跨越时间维度来思考一些新事物的发生及其与旧事物的联系,也许会给你一种想象的自由。比如电报、电话、视频聊天和全息通话用 HoloLens 通话,再比如马车、汽车、火车、飞机和火箭太空旅行,蒸汽机、电、互联网和AI。所以活用资源,多看肯定没错,不过要有所选择的看,不能啥都看,,,人的精力还是优先的。

先说明公众号不是打广告,推荐几个自己看的而已(排名没有先后顺序)。

  • 机器学习实验室
  • 磐创AI
  • kaggle竞赛宝典
  • 有三AI
  • 我爱计算机视觉
  • Datawhale
  • 计算机视觉life
  • CVer
  • 小小挖掘机

九、彩蛋

看一下目录,你会发现它向一把小刀一样,是不是?希望你我能剑锋所指,所向披靡!!!

推荐一个自己写的博客——大话卷积神经网络CNN(干货满满),种树从现在开始。

在这里插入图片描述

如果有幸帮到你,请帮我点个【赞】,给个【关注】!如果能顺带【评论】给个鼓励,我将不胜感激。

如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

回复【福利】即可获取我为你准备的大礼,包括C++,编程四大件,NLP,深度学习等等的资料。

想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~

在这里插入图片描述
学习AI可以看一下这个课程!
在这里插入图片描述

参考文章

  • 知乎——https://www.zhihu.com/question/335451320
  • 一些关于计算机视觉的思考和学习方法
  • 【完结】深度学习CV算法工程师从入门到初级面试有多远,大概是25篇文章的距离

http://chatgpt.dhexx.cn/article/UMy0LaQ1.shtml

相关文章

五年无人驾驶工作总结及展望

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自|计算机视觉工坊现在是晚上22点46分,大小美女都睡觉了,我突然想写一篇这五年无人驾驶工作的总结。没有打草稿,想到啥说啥。如…

CoppeliaSim用户手册中文翻译版(一)

CoppeliaSim 用户手册 文章目录 主要功能历史版本许可证致谢和鸣谢概述1. 用户界面1.1 页面和视图1.2 自定义用户界面1.3 位置/方向操作1.3.1 位置对话框1.3.2 方向对话框1.3.3 使用鼠标移动物体 1.4 欧拉角1.5 用户设置1.6 快捷键1.7 命令行 2. 场景和模型2.1 场景2.2 模型2.2…

深度学习一(PyTorch物体检测实战)

深度学习一(PyTorch物体检测实战) 文章目录 深度学习一(PyTorch物体检测实战)1、浅谈物体检测与PyTorch1.1、深度学习与计算机视觉1.1.1 发展历史1.2.2 计算机视觉 1.2、物体检测技术1.2.1、发展历程1.2.2、技术应用领域1.2.3、评价指标 3、PyTorch简介1.3.1、诞生于特点1.3.2、…

目前学什么专业的人在搞SLAM?各有什么优势?

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 原提问: 目前学什么专业的人在搞SLAM?如需要哪些专业知识,或者找什么专业的人合作? 李雅不诺夫 一些比较牛掰的论文后面都…

opencv-python学习笔记(十):实现人脸特征转换

引言 本次实验来自实验楼,而实验楼代码的出处为如下GitHub链接,加上一些自己的理解与说明,总结成本文笔记。 https://github.com/matthewearl/faceswap 所需环境 Dlib是一个高级的机器学习库,它是为解决复杂的现实世界问题而创…

ROS会议 ROSCon 2017

----ROSCon2012-2017----来源链接:https://roscon.ros.org 具体讲座的日程安排: 2017:https://roscon.ros.org/2017/ 2016:https://roscon.ros.org/2016/ 2015:https://roscon.ros.org/2015/ 2014:http…

Frenet坐标系下横纵向轨迹决策规划(SL投影及ST投影)及Apollo决策算法解析

参考: (1)《攻城狮说 | 应对复杂路况,自动驾驶如何规划它的下一步? “老司机”炼成记!》微信公众号文章 Pony.ai小马智行 (2)《【Apollo】apollo3.5决策分享 --by 百度美研 Yifei J…

基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置

基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置详解 CUDACudnnROSanacondaubuntu装机必备 笔记本双系统安装U盘启动项安装ubuntu18.04.1关闭无线驱动冲突(联想)(option)更新软件源为国内软件源apt-get 锁问题rc.localaria2c BaiduExport ROS me…

几何向量:向量乘法(叉乘)

转载自: https://blog.csdn.net/yinhun2012/article/details/79444277 之前我们学习了物理意义上的做功,也就是数学中向量点积的实际意义,这一篇我们学习物理上另外一种力的作用,也就是力矩。 物理上定义力矩是力对物体产生转动作用的物理量…

向量和矩阵的点乘和叉乘

向量 定义:向量是由N个实数组成的一行N列或N行一列的的数组。 点乘:又叫做点积、内积、数量积、标量积,向量a[a1,a2,...,an]和向量b[b1,b2b...,bn]点乘的结果是一个标量,记作a.b; 几何解释:a.b |a| |b| &…

向量叉乘与叉乘矩阵

本文以三维向量来说明向量的叉乘计算原理以及叉乘矩阵如何求取 1、向量叉乘的计算原理 a、b分别为三维向量: a叉乘b一般定义为: 或 可是这只是一个符号的定义啊,具体怎么得到代数值呢 关键方法就是引入单位坐标向量, 这里用i j k…

3维向量的点乘叉乘运算

3维向量的点乘叉乘运算 文章目录 3维向量的点乘叉乘运算三维向量的点乘三维向量的叉乘点到直线的距离点到平面的距离 三维向量的点乘 点乘得到的是对应元素乘积的和,是一个标量,没有方向 V1( x1, y1, z1)V2(x2, y2, z2) x1x2 y1y2 z1*z2 点乘可以用…

通俗理解三维向量的点乘与叉乘

通俗理解三维向量的点乘和叉乘 一般接触得比较多的是二维向量的点乘和叉乘,但是做到与三维几何相关的工作的时候,三维向量的知识是必不可少的。 注意:三维向量和三维矢量是同一个东西,都是来自英文单词的Vector的中文翻译&#…

栅栏密码加密/解密【传统型】在线工具

栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。 遇到这种的栅栏加密的密文,解密的…

栅栏密码加密/解密【W型】在线工具

栅栏密码加密/解密【W型】在线工具 栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。 本工具所…

栅栏密码解密

题目: 一只小羊翻过了2个栅栏 KYsd3js2E{a2jda} 通过栅栏密码在线解密即可得出flag 解密结果: flagKEY{sad23jjdsa2}

猪圈密码 摩斯密码 QWE加密 栅栏加密 当铺密码

1.猪圈密码 猪圈密码:对应下图就是HORSE 2.摩斯密码 在线摩斯密码翻译器:http://www.mathsking.net/morse.htm 3.QWE加密 键盘按ABC的顺序排列得到对应的字母,QA,WB.... 4.栅栏加密 加密过程: 如果我们想要加密一句话,…

python3解密栅栏密码的正确方法

python3解密栅栏密码的正确方法 今天在做ctf时想找一个栅栏密码的解密脚本,在网上搜过了下,发现竟然没找到一个正确的脚本(也可能是自己的搜索水平太差),倒不是说大家的脚本都有问题,只是在解决特殊情况时…

维吉尼亚密码加密/解密在线工具

维吉尼亚密码加密/解密在线工具,工具链接:http://www.atoolbox.net/Tool.php?Id856 维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外…