前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我,女生,AI工程师

我,女生,AI工程师

作者头像
叶锦鲤
发布2019-03-07 11:32:05
9140
发布2019-03-07 11:32:05
举报
文章被收录于专栏:悦思悦读悦思悦读

本文是作者在2018年12月13日众智汇社群分享的记录。由@kellie 记录整理。

作者: 刘培 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很有那种把一个问题抠得透彻的精神,老板也愿意要。

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智汇AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档