“菜鸟”程序员逆袭:独立开发iOS音乐应用,年底参加Amazon DeepRacer 全球锦标赛

news2024/11/19 18:37:13

“致一年前的小木土:任务完成。”

6月30日,在获得2023 Amazon DeepRacer自动驾驶赛车企业总决赛中国区冠军三天后的深夜,杜键文发了这条朋友圈,并配上比赛现场的9张图。

“小木土”是杜键文的网名,取其姓氏,包括他的个人微信号、B站账号等。2022年7月,杜键文从暨南大学毕业后加入荔枝集团,一年后,他和荔枝“状元红”团队(注:状元红是水果荔枝的一个品种,参赛团队称呼)一起获得了 Amazon DeepRacer自动驾驶赛车企业总决赛冠军,并拿到Amazon DeepRacer 全球自动驾驶赛车锦标赛的入场券。今年11月底,杜键文将到美国拉斯维加斯,挑战世界顶尖高手。此前,他还开发出属于自己的第一款iOS音乐应用。

杜键文到Amazon DeepRacer 全球自动驾驶赛车锦标赛的入场券,年底前往拉斯维加斯挑战世界顶尖高手。

“一年前我有迷茫和憧憬,希望在技术道路上有收获、有成功。回想这一年的付出,做难而正确的事,并取得了小小的成绩。我想说这一年,没白过。”关于“任务完成”的说法,杜键文解释。

在工作写代码之余,这个28岁的广州技术小伙喜欢弹电子琴,撸猫,从小养了一条大黄狗,剪辑视频并上传到网络上与朋友分享,在公司年会上还作为导演执导晚会节目。

从一个初入职场的应届生到即将奔赴大洋彼岸参与全球大赛,让我们看看这个“资浅”程序员的杜键文这一年的“奇幻旅程”。

从总决赛冠军,到拉斯维加斯……

AWS DeepRacer 是亚马逊云科技推出的一个综合性学习系统,旨在结合强化学习探索自动化驾驶的模型算法,帮助开发者学习和实践强化学习。它包括以下部份:

控制台(图a):借助AWS的云服务、 AWS SageMaker 和 AWS RoboMaker 完成模型的训练与赛道仿真;

车辆(图b):1/18 比例的车辆,配备摄像头、电源传动系统以及用于对模型进行推理从而实现自动驾驶的Linux系统;

AWS DeepRacer League(图c):世界上首个全球自动赛车联赛,争夺奖品、荣耀和晋级冠军杯的机会;

图a:aws控制台用于训练、导出模型、仿真
 

图b:deepracer车辆
 

图c:全球各种deepracer联盟比赛
 

DeepRacer提供的仿真环境让用户可以在虚拟世界中进行实验和测试,以便更快地迭代和改进驾驶策略。用户可以使用强化学习算法来训练车辆在赛道上驾驶,通过奖励和惩罚来指导智能代理在各种情况下做出最佳决策,根据不同赛道,自定义奖励函数,调整神经网络训练的超参数以及赛车运行的速度和角度,从而在训练出模型后,可以让自己的赛车在虚拟跑道以及真实赛道上完成自动驾驶。

与AWS Deepracer的接触最早起于2021年。当时,荔枝的业务技术与产品负责人了解到这个机会,就在公司内的技术大群发帖,招募感兴趣的技术人员加入战队,并在当年的1024技术节举行了一场内部赛事。

2021年1024程序员日,荔枝内部赛,共有8支队伍进入决赛圈

最终获得冠军“CPP”战队成员蔡蔡等也成为了后续荔枝战队对外比赛的“引路人”,做了很多的技术指导和备战支持工作。

2022年7月,还是应届生的杜键文加入公司,在校时有接触过机器学习与深度学习的内容,看到在9月深圳举行的DeepRacer互联网行业南区预赛招募的消息,怀着兴趣报名参加了。

比赛分为线上和线下举行。在深圳的线下比赛,测试和比赛的顺序均由线上成绩确定,荔枝线上成绩第一,因此排在最后出场。不过现场也出现了一些小意外,杜键文回忆,“按照规则,每支队伍的测试时间10分钟,但前面队伍明显超时,轮到我们时勉强测试了两个模型,其余准备的8个模型均没有测试。不过,模型越多有时越难选择,最终我们选了训练了3小时的“testczs-cpp”,这也很大程度上受益于我们以前公司内部比赛学习积累。”最终获得分区赛冠军。

荔枝状元红战队获得2022DeepRacer互联网行业南区赛冠军

2023年1月,海南三亚,2023DeepRacer互联网行业全国总决赛如期开战。这次比赛,赛前的准备相对大部份比赛队伍来讲,是非常充分的,购买了小车和赛道,杜键文作为队长也早早跟团队选定模型,并作了一系列的针对驾驶的训练,总结出许多有用的小技巧,比如调整偏左,然后加大最大正向速度等等。比赛前,使用这个模型可能跑了有将近200次了。

“我自己也有奇怪的习惯,比赛前不会很兴奋、频繁交流,倒喜欢一个人安静,仔细想问题。我觉得这次比较吃亏的一点是,没有去观摩别人的比赛只顾着自己搞小车。”杜键文在赛后的反思总结中提到。

2023DeepRacer互联网行业全国总决赛,状元红团队和其他战队合影留念
 

比赛后,杜键文写下这么一段话——

上场前虽然是紧张,但信心还是非常十足的。但测试环节意外频频,记得仅仅测试了没两三圈,撞了一下重连、跌了一下重连,然后反复重启连接、加载模型,一直没连上,10分钟测试时间最终就被耗尽……

第一轮的比赛,本来测试得挺好的,已经准备要正式比赛了,但当时手汗很多,一下子拿不稳小车摔了一下,又要重连,一直没连上,第一轮没有成绩……

这彻底把我弄懵了,之前的战术一下子打乱。虽然队友不断安慰增加自信,但我清楚,下一轮的压力相当大,小车不出故障、小车不出赛道、小车用激进战术。到了第二轮,正常测试了三圈,队友让我可以开始比赛了。我本还想熟悉下最优速度,但想到怎么也得有个成绩,又担心再发生故障,所以也就直接开始了。可能出于担心,出于紧张,没有考虑到电池的活跃性,加速时过于保守,也就没有展示出训练时最好的一面……

比赛前我对队友表现得太冷淡太严肃了,比赛后作为队长的我,不应再沉沦于已有的事实中,而是应该拥抱队友,表现出对他们的感谢,享受过程,接受最终的结果。

事后的多个瞬间,都会回想到比赛的那天。如果网络没那么多问题,如果第一轮正式比赛前没有手滑,如果我再调激进一点速度……但这不就是人生吗,到处充满着遗憾,环环相扣,不知当下的每一个选择会有什么样的因果,也只有作了选择才会后悔,但另一个我又提醒自己,会不会这样子就是目前最好的结果?我想这个归咎于运气吧,运气也是实力一部份。

一同现场参与的技术同事彭冬碧回忆,那次比赛获得亚军也不是很差的结果,杜键文对自己的操作有遗憾跟自责,我们就想着说,下一次总决赛去克服避免,然后精进成绩。

时间来到6月27日,2023 Amazon DeepRacer自动驾驶赛车企业总决赛在上海决出了最终结果,Cisco、德勤管理咨询、北京辛诺创新、神州泰岳、敦煌网、荔枝集团“状元红”战队等12支队伍的竞逐中,在两轮比赛中成绩遥遥领先,最终斩获桂冠。

夺冠后合影,奖品是4090显卡

战队成员陈泽森提到,回想在年初互联网行业的全国总决赛,团队在测试期间因为网络相关的原因,导致测试受阻,后选择保守策略拿到了第二名,“这一次的全国总决赛,我们弥补了遗憾”。

左:杜键文  右:陈泽森

“很高兴看到荔枝团队站上大赛舞台并从中脱颖而出,再次证明了我们年轻的技术人才群体不容小觑。” 荔枝集团技术负责人表示。

通往技术之路:一个爱动手爱记录的家伙

广州小伙杜键文从小就很爱玩玩具,基本电视上播啥动漫,有了周边玩具就一定会去买的那种。比如四驱车、乐高、铁甲小宝、弹珠警察、高达、变形金刚、爆旋陀螺……凡是动手的都爱捣弄,而且很专心很上头,一搞一天都乐此不疲。这项“技术”的形成,他归结于对玩具产生了痴迷的状态,达到“匠人”的状态,这在无形中锻炼自己的动手能力和创造能力。

杜键文还喜欢剪辑视频做记录,2013年,他尝试用iPad mini的cute cut应用制作了第一部有关纪念高中生活的视频,开启了视频剪辑之路。视频需要素材,杜键文为此开始爱好拍摄记录,家里的趣事、宿舍的聚餐、班里的活动、旅游的风景、大自然的绚丽,总用镜头记录那些难忘的瞬间。剪辑工具的使用大同小异,重要的是剪辑的思路,如何将声音、画面、文字巧妙结合,如何制作一个完整的、能引起共鸣的作品。十年里尝试了不少风格的剪辑,像班级毕业留念、恶搞、歌唱MV、怀念、采访、讲知识、会议、生活简片……

杜键文参加应届生培训

“自己在剪辑技术方面成长的同时,也感受到剪辑出一个用心的视频给他人带来的意义,因为我知道,这些在以后终将成为一个有价值的回忆。”

杜键文与程序员这个职业产生渊源在2017年。当时,他开发出属于自己的第一款iOS音乐应用,第一次体验到将技术应用到一个实物上,汇聚着自己所有的奇思妙想。他一个人兼任着产品、开发、设计、测试、市场等职务,很多东西都是从零开始,“我最大收获之一,是自己学会了图像设计,应用里的logo、图片、控件都经过大量的迭代更新、推倒重来,自己慢慢对图形构造、颜色的感受有见解,在艺术层面有一定的领悟,会知道什么是大家都会喜欢的样子。”

杜键文开发的音乐应用申请iOS上架
 

   不过,杜键文也坦言,那时候还未曾想过当程序员,他更享受的是开发过程遇到的乐趣。在这过程中技术慢慢在长进,主动地吸收并直接呈现出实用性和价值,这一正反馈的过程会促使自己不断进步。

技多不压身,杜键文喜欢往不同的领域找可能性,不局限仅专攻于某一领域。社会本就一个复杂的综合体,具备跨学科知识、多技能的本领会让自己有不同的解决方式和不同的思考角度。选择将iOS开发这项技术发展成职业,成为一名程序员,其中的一部份原因,是想紧跟社会技术潮流,知道互联网里流行着什么,如何通过技术来改变生活。

新人从写技术文档开始

杜键文在2021年参加了荔枝秋招,面试官单好强对杜键文说:我感觉你的气质很适合我们。

杜键文一下子也不知道要说什么,就笑了。

单好强,大前端组的前辈,后来也成为杜键文的导师(荔枝内部企业文化,带领新入职员工熟悉公司情况)他回忆,“键文性格内敛,讲话有条理,做了几个测试都比较仔细,对技术问题也感兴趣,当时就觉得他的综合素质蛮符合荔枝的校招标准。”

杜键文刚来时,部门给安排了任务目标,就是配合提高iOS开发和flutter开发能力,以降低开发、调试、维护的成本。领导有意识要求他去尝试写一些技术文档,为夯实技术理论,培养一些逻辑能力和对项目开发的经验总结。

杜键文一开始并不习惯做一些技术文档,就想着把一些具体的事情做好。不过,部门的一些老人就表示,写技术文档可以帮助团队完成当前的信息共享和长期的知识传承 ——对于个人而言,一方面可以节省时间 ,因为避免了回答重复问题,也便于检索过去的知识;另一方面可以塑造口碑,比如在某次部门会议中,就突然有个同事发消息说我的文档写的很好,对新接触这块业务的人帮助很大。

刚来的第一个季度,杜键文就完成了近10篇技术文档的撰写,包括技术入坑指南、开发过程的注意事项、提升iOS原生开发的工作效率等,“是较为'入门'的新手文档,但对我的技术思考是很有帮助的。我也相信,一份好的技术文档比起开发口述是不会有多余的理解成本的,甚至更低,因为对于很多信息,图片能比语言更好地表达。”

工作一周年时,他写下这样一段话,未来希望活成自己心目中程序员该有的样子:

  • 匠人精神,自己领域的事情需要比外行更清楚
  • 切忌不加思考进行复制粘贴
  • 一时弄懂的道理,要记录思路和实践,把别人讲明白才是真懂
  • 不一味埋头于开发,跳到更高层面,找寻背后的意义,说服自己
  • 用技术给别人带来改变,带来价值,带来感动

一位爱撸猫、爱剪辑的程序员,也是导演

工作之余,杜键文还喜欢拿着相机记录下身边有趣的画面。

他拍猫,暨大校园里猫多,有橘猫、狸花猫、三花,躺着、跑着、要吃的。他都拍,记录下来,配上欢快激情的音乐。

他拍狗,一只名叫"欢记”的狗2007年来到家里,就开始记录,2021年,13岁的欢记不辞而别,杜键文将所有影像资料剪辑成五分钟多的短片发在了b站上,还写了一篇文章缅怀欢记。

2016年除夕,杜键文和家里的小狗欢记合影
 

缅怀欢记的文字片段(源于微信公众号“老杜讲节气”)
 

2023年初,通过报名和选拔,杜键文和十几位同事组团参与了年会表演,从道具的设计、选取和制作,演出人员的职能出场设计、排练等等,事无巨细,全程参与。经过一个多月时间,《荔枝秀》顺利地出现在观众面前。

杜键文手绘的出场示意图1
 

杜键文手绘的出场示意图之一
 

年会结束一周后,杜键文也将这段记录剪辑成视频,感慨程序员的生活也可以这么丰富多彩。“我们的队伍包含了业务技术、政务、内容、产品、研发以及泛娱乐板块的小伙伴,经过这段时间的合作,认识到一群可爱的人,更好地融入进荔枝。

从拍视频,写公众号,发b站视频,到参与指导公司年会节目,再到AWS舞台,这就是职场新人杜键文一年多来走过的路,回想起来,也与技术成长是一样的,从业务基础,到demo,到项目实战,到自学深研,从量变到质变。

杜键文获得前往拉斯维加斯参赛的通知

获得总决赛冠军后,杜键文也收到了前往美国参赛的通知,这在荔枝推进全球化大背景下体现着包容开放学习的心态,“AWS DeepRacer类似比赛让机器学习不再遥远,帮助鼓励并拥抱创新,同时也提供在AI和机器学习技能的机会。荔枝也愿意继续加大对技术人才的培养,帮助技术团队持续精进,并走向全球。”

几次外界大赛的经历,杜键文也深知外部世界的变化之快,“技术交流带来更多的想法,技术的更新迭代也远超个体的想象,停滞不前可能就意味着被甩在身后。”

同样的感受在公司内部也不在不断传导。外部世界总是在变化的,这几年,和未来的10年,只会挑战越来越多;技术总是在进步的,跟不上很快会被淘汰。今年随着ChatGPT一夜之间改变全球,很多人在惶恐会不会失业,很多公司也在惶恐自己还有没有存在的价值;用户总是在变化的,一代又一代人在成长,每一代人的喜好都不太一样。

现在,有着更大的舞台等着,作为新人逐渐走向成熟的程序员杜键文的下一个任务又是什么呢?他说他会继续去尝试可能性。一想到自己还能有变化的可能,就让人热血澎湃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【【萌新的FPGA学习之水 一水到底 】】

萌新的FPGA学习之水 一水到底 重读实验给我印象最深的2点是我们面对的设计需要使得时序自动切换 那么我们将切换时序的时钟装入另一个每隔0.5s变换一次的参数上 下附上代码 module key_led(input sys_clk , //系统时钟input sys_rst_n , //系统复位,低电平有效 inp…

扩散模型学习——代码学习

文章目录 引言正文UNet网络结构训练方法DDPM采样方法讲解Context上下文信息添加DDIM的方法详解 总结参考 引言 这是第一次接触扩散模型,为了学习,这里好好分析一下他的代码 正文 UNet网络结构 这部分主要是定义一下网络结构,以及相关的网…

免费领取!TikTok Shop “全托管”黑五大促官方备战指南来啦!

黑五网一大促即将来袭,自“全托管”模式上线以来,TikTok for Business在沙特阿拉伯和英国市场开展了古尔邦节大促、夏季大促、返校季大促等活动,今年更是会借着黑五网一大促之际,首次覆盖美国市场,为全托管商家带来全球…

k8s的coreDNS添加自定义hosts

1.ack的hosts不会继承宿主机的hosts,而工作中有一个域名默认是走内网解析,内网被限制访问了,只能在coreDNS中加一个hosts解析域名 2.编辑configmap (coredns) kubectl edit configmap -n kube-system coredns 增加hosts节点 Corefile: |.:53…

由浅到深 : Self-Attention (自注意力机制)

Self-Attention 看到下面的第一个saw是动词,第二个saw是名词。 因为第一个saw和第二个saw在形式上没有任何差别。如果任务是进行词性的判断,把上面的词直接输入给神经网络,那么它肯定不能够正确分析。 想要正确分析词性,那么该…

谈谈你对Spring6.0的理解

谈谈你对Spring6.0的理解 一,介绍 Spring 6.0是Spring框架的一个重要版本,它提供了许多新特性和改进,以帮助开发者更高效地完成工作。以下是我对Spring 6.0的一些理解: 反应式编程支持:Spring 6.0对反应式编程提供了…

Pico示波器 汽车振动异响(NVH)解决方案

汽车振动异响故障可能有多个潜在原因,包括发动机、传动系统、悬挂系统、制动系统等等。技师需要对汽车各个方面有全面的了解,才能更好地进行故障排查。 振动和异响可能由多个因素引起。例如,可能是零部件损坏、松脱、磨损或者不正确安装。这…

ResNet: Deep Residual Learning for Image Recognition(CVPR 2015)

正常来说,plain网络(简单的堆叠层数)会随着网络的加深错误率变低的,但事实上训练和测试错误率都升高了,这就是网络的退化问题。 此外,网络加深会出现梯度消失或梯度爆炸,妨碍收敛,但…

HarmonyOS 音频开发指导:使用 AudioRenderer 开发音频播放功能

AudioRenderer 是音频渲染器,用于播放 PCM(Pulse Code Modulation)音频数据,相比 AVPlayer 而言,可以在输入前添加数据预处理,更适合有音频开发经验的开发者,以实现更灵活的播放功能。 开发指导…

node-sass安装报错

node-sass安装竟然报了python的错 先说最终解决方案 将node换成14版本 声明:个人总结,思路到哪写到哪,不喜请轻喷😂 参考 https://blog.csdn.net/ccm_2354586864 可恶的node-sass让我不得不在周末自愿加班😠 我的…

优化mybatisPlus批量新增,新增mapper层批量新增方法,附带代码生成vm模板。

文章目录 一、主题二、效果展示三、mybatis-plus源码分析四、优化思路五、代码优化方法一:修改批量新增SQL方法二:使用insertBatchSomeColumn 方法 一、主题 经发现,mybatisPlus只有Service中存在saveBatch()方法,而Mapper中不存在…

博客后台模块续更(五)

十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…

从0开始学云计算之服务器:服务的定义,特点,应用场景,分类

服务器定义 服务器是计算机的一种。它比普通计算机运行速度更快、负载更高且价格更高。 服务器的英文名称为“Server”,是指在网络上提供各种服务的高性能计算机。作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为x络的灵魂。 …

三、机器学习基础知识:Python常用机器学习库(Pandas)

文章目录 1、Pandas2、Series数据结构2.1 Series的创建2.2 Series的索引与访问2.3 Series的常见操作 3、DataFrame对象3.1 DataFrame的创建与索引3.2 DataFrame的访问3.3 DataFrame的常见操作 4、数据对齐5、缺失数据处理6、Pandas存取文件 1、Pandas Pandas 库是以Numpy库为基…

互联网医院牌照|互联网医院牌照资质申请流程和所需材料

那么不同的企业基于不同的业务板块,所需要搭建的互联网医院也存在差异,平衡好自身业务及互联网医疗建设二者间的关系,是企业建设互医的基础需求,那么互联网医院牌照办理流程和材料都包含哪些呢?接下来就给大家介绍下。…

短视频矩阵系统软件源码

短视频矩阵系统软件源码 视频成为获得免费流量最便宜的渠道,平台给所有视频最基础的保底流量。如果按照一个视频最低500流量计算,5个账户就是2500的流量,200个视频就是50W流量,如果从其他渠道获得50W流量是个很困难的事情。短视频…

第四章 文件管理 三、文件目录

目录 一、文件控制块 1、定义: 2、要进行哪些操作 (1)搜索: (2)创建文件: (3)删除文件: (4)显示目录: (5)修改目录: 二、目录结构 1、单…

QSOP24封装的语音芯片优势列举

1. 封装紧凑:QSOP24封装采用了更小的封装尺寸,相比于其他大型封装,它的体积更小、尺寸更紧凑。这使得它在空间受限的应用中更加适用,可以方便地集成到小型或薄型设备中,提供更高的设计灵活性。 2. 强大的功能&#xf…

Go之流程控制大全: 细节、示例与最佳实践

引言 在计算机编程中,流程控制是核心的组成部分,它决定了程序应该如何根据给定的情况执行或决策。以下是Go语言所支持的流程控制结构的简要概览: 流程控制类型代码if-else条件分支if condition { } else { }for循环for initialization; con…

el-table相同的值合并单元格+多级表头

<el-table border :data"costList" :span-method"objectSpanMethod" ><el-table-column label"类别" prop"类别" width"120"> </el-table-column><el-table-column label"费用科目" prop&qu…