图像处理和识别的算法工程师,工作一年多,发现自己胜任不了这份工作,怎么办?

发布时间:
2023-08-24 12:32
阅读量:
12

冒昧的不请自答一下。

先说下我自己的情况,我是18年年中转行做的计算机视觉,以前的两年时间是使用传统方法做一些简单的图像处理工作,基本也没啥技术含量。所以可以认为18年年中才接触这个行业,目前是一个十几位算法工程师团队的技术经理,而我本身也就是个双非毕业的渣硕,而且学的还不是计算机。

说上面那么多,主要是想表达,这一行听起来很高大上,但是得益于目前十分成熟的开源系统与各种顶会的快速更新,目前门槛相对已经没有那么高了,不需要极高的背景也能入门,所以题主也不用太过悲观,能通过面试拿下这份工作,并通过试用期,呆了一年多,说明也没有特别差劲,至少你领导认为还是可以再培养培养的,要不也等不到你自己考虑合不合适的问题了。

但是入门容易,做精难。图像处理与识别工程师,听起来就是一个算法工程师岗位,一般人认为就是调调模型,调调算法就好了,其实远没有这么简单,做深了就会发现,这是一个非常综合的岗位,对工程师的综合素质要求还蛮高的,但是题主只说了算法指标提不上去一个问题,所以我们也就不展开了,今天就这一个问题说一说。

一般我们拿到一个具体到点的算法开发与优化任务,要经过以下几个步骤:

1. 首先要评估一下这是什么图像处理任务(分类,检测,分割,识别等等),结合现有数据,看看该用什么样的算法(深度学习,传统机器学习,还是普通的图像处理就好)。指标提不上去,从源头上看,是不是任务定义的就有问题,比如,要对图片中的猫和狗进行识别,我们把它定义成一个简单的分类问题,但是如果有些图片中有猫又有狗,那整图分类就不好使了,定义成检测问题会不会更好。

2. 任务定义好,采用的算法确定好了,就可以准备数据了。不管用深度学习还是传统机器学习,都需要大量的数据进行训练,这一步很重要,怎么强调都不为过,任务定义清楚以后,干净的数据集是整个任务能朝着既定方向行进的基础。

一般算法工程师不太会直接标注数据,很多是通过外包或者专门的标注人员进行标注,而这些人或因为责任心问题,或因为对任务不了解,他们标注的数据大多不能直接使用,需要检查修正,如果算法工程师直接拿来就用,而正好这批数据标注的不干净,那么我们采用再先进的算法,效果也好不到哪里去。很多人可能关注不到这一点,但是实际工作中,很大比例指标上不去的情况是因为数据集不干净,所以题主也可以看看自己的数据集是不是有脏数据。

原始数据准备好以后,即使这时候很干净,也不能保证后面结果就是好的,因为我们为了提升算法的鲁棒性,可能还需要做一些数据扩增,而我们的算法工程师如果对任务的了解不够透彻,数据增强也可能会使指标变差。比如我们关注一个物体的颜色信息,但是我们的数据扩增里面加了随机颜色变换,那后面的结果肯定会很奇怪。大家可能会感觉很奇怪,怎么可能会出现这种情况,但是不合适的数据增强导致指标差的情况,比比皆是。

3. 任务定义好,数据准备好,也就可以出模型或者出算法了。如果选择深度学习,很多的训练技巧还需要去掌握,各种超参的调整,loss的选择,训练时间,训练显存占用的控制,推理计算量,推理时间的控制等等,都需要去考虑。如果是用传统机器学习或者传统图像处理,还需要去考虑手工选取特征,这些特征是不是具有普适性。

4. 以上三点做好,基本出来的模型或者算法的指标就有个基本保证,baseline是有了,后面就是迭代优化了。当然怎么快速迭代,怎么加数据更有效也是一个很有技术含量的工作,是无脑添加,见到数据就加;还是有针对性的加,有目的的加,这些都值得仔细去考虑。如果使用传统图像处理算法,还得注意在迭代过程中遇到的新数据,老的特征能不能cover。

工作中遇到难题是很常见的问题,看看自己是不是真的不排斥这份工作,如果一看到代码,论文就头疼,完全坐不下来处理这一个个问题,而且又有另一条路可供选择,同时自己又喜欢,那就不用给自己找不痛快了。如果不是,那还是多找找什么原因,多跟别人讨论。理论基础差就多补补基础,代码基础差就多看多练,胆大心细,多做实验多记录比较,总归会越来越好,切忌眼高手低。

END