文章主题:嵌入式算法应用开发, AI, 人工智能, 深度学习框架
在嵌入式算法应用开发领域拥有多年经验,尽管并非出自顶级学府,亦未在学术领域有所建树,甚至缺乏大型平台的工作经历,但我依然是一名普通的嵌入式算法应用工程师。目前,我在一家规模较为平凡的中小型嵌入式视觉应用类公司工作。
停下忙碌的脚步,回过头来看看这几年的工作历程,关于嵌入式AI还是有几句话可以说的。
1、关于嵌入式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%的数字所迷惑,认为大幅度改变模型结构和优化训练超参数是提升效果的关键。然而,现实却告诉我们,论文中的mAP提升10%并不意味着实际效果会有显著改善。因此,我们应当回归本质,即采集合适的场景数据,做好数据管理,不断进行模型迭代,这才是取得成功的正道。
6、关于技术控制点
不要指望硬件平台能成为技术控制点,现在的SOC发布的时候,硬件资料非常齐全,如果你认为别的团队做不出类似的硬件板卡,那么请你去深圳看看。
不要指望创新AI模型成为技术控制点,就你们团队那几个程序员,连个链式法则都讲不清,平均学历加上老板还不到二流本科,拿什么去创新?产品还做不做了?KPI还要不要了?
真正的技术点是数据,是特定场景的大量数据。第一,数据积累是一个缓慢的过程,技术难度不高,却非常耗时,包含了采集、清理、标注与管理。第二,模型开源的很多,数据开源的多吗?第三,当某一方面的数据积累达到一定规模后,仅仅依靠数据本身就能产生经济效益。
真正的技术控制点是嵌入式应用软件的可靠性,基础功能的稳定性。我做一个人脸识别的门禁盒子,动不动就屏幕不亮了,动不动就与服务器断开了,动不动就程序崩溃了,这样的产品,市场是不会接受的,是会被恶狠狠的淘汰的。
7、关于开发人才
千万不要指望HR能给你招来某个领域的领军人才,带领团队走向巅峰。老老实实的招聘偏向应用类的工程师,代码能力强,嵌入式调试经验丰富,还对AI有着浓厚的兴趣,愿意花时间去学习的软件工程师,作为团队核心。招聘1-2名有过模型训练的经历、懂一些基本原理的算法工程师,专职负责挑选模型,进行模型训练。招聘1名专职的数据人员,负责数据采集与标注。一个小团队就组建完成了。
说了很多,总结一下。一般的嵌入式AI开发,应用为主,数据为王,算法应用开源项目即可。把软件做稳定,把基础功能做扎实,AI才能做到锦上添花。
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!