我,女生,AI工程师

本文是作者在2018年12月13日众智汇社群分享的记录。由@kellie 记录整理。 本文由机器之心经授权转载自悦思悦读(ID:yuesiyuedu ) ,未经授权禁止二次转载。

作者: 刘培 AI创业企业算法工程师

西安电子科技大学光电图象专业,硕士

毕业后就职于爱立信

2018年初加入AI创业企业,从事图象处理领域的研发工作

2017年8月17日,主讲人曾经做过一个分享:《我,女生,程序员》,讲述了自己从非计算机专业转行成为程序员的经历。

在今年初,主讲人再次前进一大步,成为了AI工程师。本文呈现给大家这一年的工作历程。

偶入人脸识别领域

开始做AI人脸识别其实非常偶然,因为我之前做程序员也不久,大概刚好一年的时间,但是到后来我觉得重复性太强了。

于是,去年冬天的时候我就考虑能不能离开换一份工作。我就开始把简历收拾了一下,准备去找新的工作。

在读研究生的时候,我的方向是偏图像处理的,我在简历上突出了这块,打算寻找偏工程类的图像方向的工作。

可能由于西安的市场工作还不是很丰富,一直都没有找到合适的,直到一个多月之后,我现在的老板找到了我,并和我进行了沟通。于是,在去年4月份,我加入了这个团队。

加入团队,从0开始

进公司之后,发现公司的同事们都特别厉害。在西安你很难碰到北大的同事或者中科院的同事,幸运的是我竟然碰到了。我从他们身上学到了很多,当然,很多基础性的工作就落到了我的身上。

数据采集

我来公司的前两个月一直没有接触跟技术相关的工作,而是在外面做数据采集。

大家都知道数据是推进算法精度的一个非常重要的资源,只有在大量数据上训练,我们得到的模型才会趋于精准。

我们公司是做三维人脸识别方向的,网上的数据库大部分都是图片是二维数据,三维数据需要三维采集设备去采集。

我们去了很多很多地方,因为现在人们的安全保密意识都非常强,所以我们在采数据的时候困难重重。

我们都是通过熟人、朋友去联系一些单位,给他们发礼品,鼓励他们去采集。我们也去了乡村、高校等,给他们送杯子。虽然困难,但是也挺有意思的。

我提到的数据可能跟你们提问中的数据不一样,我们采的数据是人脸,人脸点的彩色信息,位置信息会通过采集设备变为数据存储下来。

采集数据的两个月让我体验了非常不同的生活:

case1:有的村民为了多要我们的一份礼品就向我们发火,甚至准备打架。

case2:有的年纪特别大的老人看到我们采集数据会送礼物,他们竟然坐着轮椅让家人推着过来。

因为采集的那几分钟要做姿势,做表情,对老人来说,也是很难熬的,而且90高龄的老人,听不到你的指令,做的表情也没什么差别。我们为了不让他们不舒服,就很友好的把礼品直接给他们,不让他们参与了。

case3:我们坐高铁的时候会把三维设备都紧紧放在怀里,因为摄像头都是玻璃,特别容易震动而导致一些镜头参数改变,很多次在路上我们一直都很奇怪的被大家盯着。

case4:还有6月份,我们去铜川交警队所在的一处道路管理处,是一排路边搭的石棉瓦房,里面非常的闷热,就在里面去采集数据。

但是我们几个年轻人也不觉得很累,相反会觉得这是不同于我们平时做研发,一个很难得的体验。

数据处理

数据采集之后还得我们自己来处理,还好有几个实习生可以让我来“欺负”一下。

为了能够快速地处理这些数据,我们经常用Python写一些批处理的工具进行特定的处理。

有的时候担心中间意外断掉,我们会下载一个TeamViewer远程控制软件,可以通过家里的电脑控制公司电脑的程序。所以睡觉前做的事情,除了敷面膜,还要看程序有没有断掉,有没有异常出现。

之后再对这些数据进行筛选,把不符合标准的数据删除,比如模糊不清或者脸部信息不完整的数据。

删除完之后,我们会写程序对数据进行矫正——把人脸放正,有时为了增强数据规模和数据姿态的丰富性,我们要做一定的数据增强。

数据标注

做完数据处理之后,我们要对数据进行标注。

举一个简单的例子,如果这个人戴眼镜,我们就给这张照片标“1”,如果这个人没有戴眼镜,我们就标“0”。

因为现在深度学习的很多训练都是建立在监督学习的基础上,通俗地说,机器识别出的结果判定为“1”的概率和判定为“0”的概率进行比较,概率较高的就被判定为最终识别的结果,所以我们要进行数据标注。

但是试验的数据集都非常大,我们不可能逐一点开文件,手动标注在文档里,再把文件关掉,然后再打开再标注,所以我们要写一些标注工具。这些标注工具通过界面展示出你的图片,我们看了这张照片直接按“1”或“0”,就会自动生成所需要的标准格式文件。

因为现在市场上有很多标注公司,他们是对成千上万的数据进行标注,但对我们初创公司来说还没有能力去购买这些资源,我们员工在空闲时间就会多标注一些,所以需要把标注工具尽量开发得非常顺手。

自己标注的数量级还是太少,更多的时候,在做二维人脸识别的时候是和一些外国的数据库糅合在一起用,比如WIDER FACE。

这些数据库是自带标签的,比如男是“1”,女是“0”,这些标签通常是放在文件名里的,我们就需要开发一些程序来读取这些标签,再生成我们所需要的标注文件。

这是我们基本的标注工作。

模型训练

数据标注并处理好之后,我们就可以开始训练了。训练框架目前很流行的有Pytorch、TensorFlow、Caffe。

我们选择的是caffe,它有一个很好的优势——模型和数据集都是分开的,数据集都做成了固定的格式,放在这个平台里,按照选定的网络结构,进行训练,训练完就可以生成一个固定的模型,放在测试代码里检测,直接可以得出识别结果。

接下来就是神经网络体现作用的时候了。

关于神经网络,在网上有很多资源可以帮助大家理解神经网络里卷积、池化激活函数损失函数学习率这些概念,在这里就不一一给大家解释了,我自己理解的也不是很深。

今天就是想为大家去展现一个模型训练流程,这样大家在有了一个宏观概念之后,再去细分、研究和补充,会有一个非常好的效果。

我举一个例子:识别人是否戴眼镜的任务。

我们当时准备了10万个戴眼镜的和10万个没有戴眼镜的数据,我们对它们进行筛选、处理和标注,都准备好之后,我们准备在Caffe上进行训练。

在决定选用什么神经网络模型的时候,因为这是个二分类问题,也比较简单,所以我们选了一个简单的网络结构,层数比较少。

我们把学习率也设到了0.001,我们发现损失函数Loss是越来越小的,也就是收敛的。

Loss可以理解为,预测的函数和真实的函数的差,如果它越来越小,就说明我们训练出的模型是越来越拟合真实分布的。

模型出来之后,我们在自己搭建的测试平台里面去测试,得出概率,然后通过比较概率大小来决定判别结果。

目前我们在人脸比对和人脸库搜索等方面还需要很大的努力。

我最近在做很多工程类的事情,比如用Qt来做工程终端界面、之前做了一些H5的东西以及微信小程序,在创业公司你可能不能很长时间在做一件事情,所以我当时接触的不是特别深。

AI新人的职场感悟

来分享一下来到这边快八个月的时间我的一些感受。

算法并非高不可攀

我以前觉得算法非常难,高不可攀,但是现在当我参与到公司的一些算法训练的项目中,我有了一些感知,我觉得这些东西也不是那么抽象,所以非常有信心。

我希望每一个程序员,当你们想做一件事情的时候,就勇敢地去做,这些事情都没有想象中那么难,也并没有太高的门槛。

市场上,大家可能都会愿意选择研究生去做算法,可能也是看中了他们在研究生的一些数学积累。但是如果你可以由面到点地去学,我相信只要积累得足够深,你也是一个非常合格的算法工程师。

不要给自己设限

我们公司有一个男生,比我还小,前段时间公司需要一个安卓版的应用,他之前跟我们都是做算法的,从来没有接触过工程,但是他承担了下来。

他快速的学习能力是建立在他去分析新问题的思路上——先整体再微观,先实现基本功能再逐步充实,所以他是可以做到的。

我希望听到分享的同学们,不要给自己任何限制,只要你想做,那你就可以做到的。我觉得外界的传言有时候还是要屏蔽掉一些的,你只管去做,不懂就问。

与优秀者为伍

在公司还有一个非常好的感觉,同事们都很棒,他们总是用一些很高的要求来要求自己。

比如交大的一个小同学,他坚持用很优秀的人的习惯去要求自己,要求自己每天看书,给自己买了特别多的书,对书中的内容分析得很透彻,并且做了笔记,即使工作了还像一个学生一样——我觉得这种状态非常好。

其实工作也是一种生活方式,如果我们能够享受其中,我觉得已经离成功不远了。所以从这些很优秀的人学到了非常好的品质,学到了他们的坚持,学到了他们的认真,学他们对一个问题不解决不放弃的劲儿。

 Q1机器学习对硬件要求高吗?普通开发者学习AI的难度主要在哪一块?

A1深度学习要大量训练数据的话,至少对GPU有要求,硬件目前还没有特别了解。

普通开发者学习AI的难度,我认为还是不高的。如果你们具有一定的工程能力的话,可以在GitHub找一些人脸识别或者语音识别方面的代码跑一跑,跑通之后再逐步去挖掘。

这个时候就需要去看一些数学方面的东西,现在网上的资源比较多,也挺容易理解的。

我觉得让一个没有工程经验的人直接去学可能不是很快,但是有工程能力的人去学AI相反会比较快。

Q2:训练模型用了多少服务器资源?多少时间?多大数据量?

A2:识别是否戴眼镜的任务,我训练了20万次,大概两三个小时。我们的电脑如果在训练模型的话,基本上你就别干其他事情了。

Q3:你入门AI花了多长时间,通过哪些资料学习的?

A3:入门AI,我之前也看过一些书,比如吴恩达的公开课,但是我觉得你真的想入门AI的话,不如去一个公司实习。

Q4:训练模型用的是阿里云的服务器吗?作为个人开发者学AI,需要怎样的配置?

A4:我们公司用的是自己配置的服务器,具体怎么样的配置,你可以私下问我,我去问一下公司负责搭建服务器这块儿的同事。

Q5:有很多开源AI框架,如TensorFlow,做工程还需要读论文并实现它吗?

A5:我们现在经常是需要看最新的论文,比如CVPR之类国际上比较有名的会议的期刊和论文。

我们做工程,就是发现他们有一些新的网络结构,有多少其他的层,我们对比一下,把网络结构改一改,试一下,看效果有没有提升。

我们经常是需要这样去读论文并实现它的,非常像在学校做科研,但是比科研会效率高很多。

大家有一定工程能力的话,真的可以去GitHub上找一些开源的源代码,把它配置好,跑一跑,做一做,比开始去补很多基础会快得多。

先宏观再微观是一个非常好的学习方法,对整体的一个模型有了感知之后,再去探究和测试局部的意思会比较好。

Q6:初学者,Caffe(作者采用)和TensorFlow如何选择?

A6:我个人后期非常喜欢Pytorch,因为我在做程序员时用的是Python,所以我觉得Pytorch还是非常好用的,Tensorflow可能做NLP比较多。

Q7:但是实习也需要基础模型知识的,面试官要问模型,如果一开始就去GitHub上找项目做的话,这样对模型的理解还是很浅的。而且直接看代码会觉得很困难,怎么样学习才对呢?

A7:因为我当时自己看书非常累,不知道他们在干什么。

后期我们公司有一个工作了好几年的大牛带我做了一个项目,告诉我先采集、处理和标注数据,然后在搭建好的一些模型里训练,并且在搭建好的代码里测试和验证,这个流程走完之后,我好像突然可以理解识别是怎么回事了。

之后我开始探究每一部分是做什么的,把相应模型的代码打开发现这个模型里面全放的是神经网络的层数,一层卷积之类的。这时我就提问为什么要加这几层?他会说层数多的话可能会提升拟合的精度,但也有可能过拟合之类的。我就再去查什么是拟合和过拟合

万事开头难,这个过程可能每个人都无法避免,有时候可能需要一个契机,有时候可能需要你厚积薄发,很多路可能都没有办法去避免,所以我相信如果你没有合适的实习机会的话,你可以在网上去多找一些工程,总会有顿悟的那一刻。

Q8:专属女生的一些顾虑。

A8:”女生不适合做程序员,女生更别想着有去做AI工程师”——我觉得这些都是谬论。

女孩,有自己的优势,即使女生要面对生孩子问题。知识都是循序渐进的过程,我们积累了,有自己的体系之后,是不需要时刻具有非常强的精力和脑力去支配它的,它无非是生活中我们需要解决的一些问题罢了,所以希望每个女孩都要有信心。

现在成功的女生很多,我之前在赤兔上关注到了潇洒姐——趁早的王潇,我觉得她非常积极,而且做了非常好的事业。

我们把女生遇到的问题,转换一下心态,看做人生的不同体验,我们在生育孩子的几年好好照顾孩子。

在工作时,努力把工作做好,这样我们的资本就无形增加了。我们在市场上是有主动权的,就能够产出对社会有价值的一些技术。

Q9:你们公司有算法研究专家、做工程专家,分工明确吗?

A9:我们公司有单独的算法研究专家,有专门做工程的。

但是在开始招聘的时候,可能因为想把算法做到最好,算法工程师比较多,专门做后台、做终端的工程师就非常少。

现在我们公司在向工程方面倾斜,要成为一个产品,工程必须要过硬。

我前段时间做了一个微信小程序,类似于我们的颜值分析、微笑检测的一些属性,过两天可能就会发布了,到时候我可以发出来让大家体验一下。

我之前也没有做过微信小程序,花了一周时间按照教程做了一个,感觉挺有意思的。在创业公司,各种可能性都会发生。不要给自己设限,更不要给自己的方向去设限。

Q10:招人的标准是什么样的?有什么事情做好了是加分项?

A10:如果从公司来看,我觉得还是一个人的劲儿!

我们老板特别看重的一个人的钻研精神,即使一个人什么都不会但是TA很有那种把一个问题抠得透彻的精神,老板也愿意要。

还有就是解决问题的思路和方法,你是怎么去看待一个问题的,即使你不会,你觉得你怎么做可能会解决。

加分项当然是有比较好的机器学习或者数学基础,因为现在数学思维是非常重要的。

我们公司是做三维人脸识别的,目前在市场上这个领域的研究还是非常少的,在这个方向上我们还是很占有优势的。

如果大家有想了解我们公司的,或者是想跟我联系的,也可以在这里面跟我们联系。我们也可以跟市场上有需要的公司进行合作,帮大家去实现智能化。

工程数据标注大数据人脸识别
1
相关数据
吴恩达人物

斯坦福大学教授,人工智能著名学者,机器学习教育者。2011年,吴恩达在谷歌创建了谷歌大脑项目,以通过分布式集群计算机开发超大规模的人工神经网络。2014年5月16日,吴恩达加入百度,负责“百度大脑”计划,并担任百度公司首席科学家。2017年3月20日,吴恩达宣布从百度辞职。2017年12月,吴恩达宣布成立人工智能公司Landing.ai,并担任公司的首席执行官。2018年1月,吴恩达成立了投资机构AI Fund。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

阿里云机构

阿里云创立于2009年,是全球领先的云计算及人工智能科技公司,致力于以在线公共服务的方式,提供安全、可靠的计算和数据处理能力,让计算和人工智能成为普惠科技。 阿里云服务着制造、金融、政务、交通、医疗、电信、能源等众多领域的领军企业,包括中国联通、12306、中石化、中石油、飞利浦、华大基因等大型企业客户,以及微博、知乎、锤子科技等明星互联网公司。在天猫双11全球狂欢节、12306春运购票等极富挑战的应用场景中,阿里云保持着良好的运行纪录。 阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。 2014年,阿里云曾帮助用户抵御全球互联网史上最大的DDoS攻击,峰值流量达到每秒453.8Gb 。在Sort Benchmark 2016 排序竞赛 CloudSort项目中,阿里云以1.44$/TB的排序花费打破了AWS保持的4.51$/TB纪录。在Sort Benchmark 2015,阿里云利用自研的分布式计算平台ODPS,377秒完成100TB数据排序,刷新了Apache Spark 1406秒的世界纪录。 2018年9月22日,2018杭州·云栖大会上阿里云宣布成立全球交付中心。

https://www.aliyun.com/about?spm=5176.12825654.7y9jhqsfz.76.e9392c4afbC15r
推荐文章
暂无评论
暂无评论~