文章主题:嵌入式算法应用开发, AI, 人工智能, 深度学习框架
在嵌入式算法应用开发领域拥有多年经验,尽管并非出自名校,且尚未在学术领域取得任何成果,亦无在大型平台的工作经历。作为一名普通的嵌入式算法应用工程师,我在一家中小型嵌入式视觉应用类公司工作。
停下忙碌的脚步,回过头来看看这几年的工作历程,关于嵌入式AI还是有几句话可以说的。
1、关于嵌入式AI
人工智能(AI)是对抗无监督学习的机器学习算法的总称。该领域的研究核心在于模拟人类大脑的工作方式,以便执行各种非固定任务。嵌入式AI是一种将AI算法应用于特定嵌入式平台的策略,通常用于边缘计算,从而实现相应任务的自动化处理。
以一种不同的方式来表达这段内容,我们可以说:AI模型本质上是复杂数学函数的一种,目前从理论层面上还无法找到其解析解。这个模型具备输入和输出的特性,能够在接收到输入后,按照预设规则计算出相应的输出结果。举例来说,人脸识别模型就是如此,它接收一张图片作为输入,然后输出这张图片中是否存在人脸、如果存在,人脸的位置以及大小等信息。
深度学习是AI实现的一种途径或者方法,是一种基于大量数据,求出模型最优解(近似)的手段。
2、关于深度学习框架
深度学习框架是一种工具,用于构建和训练各类模型,它将一系列常用的模型组件和训练方法整合在一起,形成一个易于使用的软件。目前,市面上较为流行的开源深度学习框架包括 TensorFlow、Caffe 和 PyTorch 等。虽然这些框架各自具有一定的特色,但它们在实际工程应用中的表现并无太大差别。因此,选择哪个框架主要取决于个人的熟悉程度。对于初学者而言,PyTorch 是一个较好的选择。
3、关于编程语言
要熟练掌握C/C ++,越高越佳。在Python方面,只要能用就行,若实在不会,可以边搜索边编写代码。这主要有两个原因:一是大多数嵌入式平台都采用ARM专用的AI组件架构,目前現行的AI组件基本不提供Python語言的接口,如需使用,必須自行移植,這相对較為繁瑣。二是考慮到執行效率問題,通常嵌入式開發會以C/C ++為主,這樣在AI業務與主体應用程序進行对接時,使用相同的開發語言可以節省很多時間。
4、关于模型开发
我们不能总是期待创造出一个颠覆性的模型,从而轻而易举地突破原有的框架。这样的想法既不现实,也极具挑战性。那些真正能在模型原理层面实现创新的人,必然不会像我们这样的小团队,也不可能是一般的人物。既然如此,对于我们普通人来说,又能做些什么呢?
(1)、认认真真的阅读平台提供的AI组件的相关文档,摸透这个组件的硬件特性。主要是摸清楚组件对于哪些网络层效率最高、有些什么参数可以影响执行效率。在寻求满足业务需求的解决方案时,开源项目是一个很好的选择。若您认为自己的需求无法在现有的开源项目中找到合适的参考,那么建议您考虑与科研机构展开合作开发。因为我们的目标是实现盈利,而选择合适的开源项目应遵循以下几点原则:项目中的BUG数量越少,工程化程度越高,参数调整的便利性越大,训练的易用性越好,同时,项目使用的用户越多,则越好。
(3)、一定得根据AI组件的硬件特性进行模型的小修改,最大程度提高推理效率。
5、关于开发流程
在实现模型训练框架向AI组件转换的工具链搭建之后,我们需要尽快完成训练、移植和测试的流程,即使其效果和性能有所欠缺也在所不惜。未来,我们将专注于应用场景的数据收集、处理和标注,然后进行模型训练和测试,通过数据驱动的方法逐步实现预期的效果。我们不能被几篇论文中关于mAP提升10%的成果所迷惑,认为只需大幅改变模型结构和优化训练超参数就能显著提升效果。实际上,这样的做法在现实中往往收效甚微。因此,我们应回归本质,即踏实采集场景数据,妥善管理数据,不断优化模型,这才是正确的道路。
6、关于技术控制点
不要指望硬件平台能成为技术控制点,现在的SOC发布的时候,硬件资料非常齐全,如果你认为别的团队做不出类似的硬件板卡,那么请你去深圳看看。
不要指望创新AI模型成为技术控制点,就你们团队那几个程序员,连个链式法则都讲不清,平均学历加上老板还不到二流本科,拿什么去创新?产品还做不做了?KPI还要不要了?
真正的技术点是数据,是特定场景的大量数据。第一,数据积累是一个缓慢的过程,技术难度不高,却非常耗时,包含了采集、清理、标注与管理。第二,模型开源的很多,数据开源的多吗?第三,当某一方面的数据积累达到一定规模后,仅仅依靠数据本身就能产生经济效益。
真正的技术控制点是嵌入式应用软件的可靠性,基础功能的稳定性。我做一个人脸识别的门禁盒子,动不动就屏幕不亮了,动不动就与服务器断开了,动不动就程序崩溃了,这样的产品,市场是不会接受的,是会被恶狠狠的淘汰的。
7、关于开发人才
千万不要指望HR能给你招来某个领域的领军人才,带领团队走向巅峰。老老实实的招聘偏向应用类的工程师,代码能力强,嵌入式调试经验丰富,还对AI有着浓厚的兴趣,愿意花时间去学习的软件工程师,作为团队核心。招聘1-2名有过模型训练的经历、懂一些基本原理的算法工程师,专职负责挑选模型,进行模型训练。招聘1名专职的数据人员,负责数据采集与标注。一个小团队就组建完成了。
说了很多,总结一下。一般的嵌入式AI开发,应用为主,数据为王,算法应用开源项目即可。把软件做稳定,把基础功能做扎实,AI才能做到锦上添花。
嵌入式算法应用开发, AI, 人工智能, 深度学习框架
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!