您现在的位置是:网站首页> AI人工智能
嵌入式AI开发的那些事
- AI人工智能
- 2024-09-18
- 868人已阅读
嵌入式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组件的相关文档,摸透这个组件的硬件特性。主要是摸清楚组件对于哪些网络层效率最高、有些什么参数可以影响执行效率。
(2)、根据业务需求,去寻找开源项目。不要跟我说你的需求没有任何开源项目可以参考,如果真这样,建议你去寻找科研院校进行合作开发,别自己瞎折腾了。咱又不是搞科研机构的,企业是得盈利的。选开源项目就几条原则:BUG少,工程化程度高,容易修改参数,训练方便,用的人越多越好。
(3)、一定得根据AI组件的硬件特性进行模型的小修改,最大程度提高推理效率。
5、关于开发流程
在打通训练框架模型转化为AI组件的模型的工具链后,以最短的时间打通训练、移植、测试的流程,效果差点、性能低点也无所谓。以后,就是针对应用场景进行数据采集、清理、标注,然后模型训练、测试,一步步的以数据驱动的方式达到预期得效果。不要在头条、CSDN看了几篇论文后,就想着大改模型结构、优化训练超参来提升效果。现实是非常残酷的,论文里面mAP提升10%,现实中效果几乎没有明显变化。老老实实的采集场景数据,做好数据管理,做好模型迭代,才是正道。
6、关于技术控制点
不要指望硬件平台能成为技术控制点,现在的SOC发布的时候,硬件资料非常齐全,如果你认为别的团队做不出类似的硬件板卡,那么请你去深圳看看。
不要指望创新AI模型成为技术控制点,就你们团队那几个程序员,连个链式法则都讲不清,平均学历加上老板还不到二流本科,拿什么去创新?产品还做不做了?KPI还要不要了?
真正的技术点是数据,是特定场景的大量数据。第一,数据积累是一个缓慢的过程,技术难度不高,却非常耗时,包含了采集、清理、标注与管理。第二,模型开源的很多,数据开源的多吗?第三,当某一方面的数据积累达到一定规模后,仅仅依靠数据本身就能产生经济效益。
真正的技术控制点是嵌入式应用软件的可靠性,基础功能的稳定性。我做一个人脸识别的门禁盒子,动不动就屏幕不亮了,动不动就与服务器断开了,动不动就程序崩溃了,这样的产品,市场是不会接受的,是会被恶狠狠的淘汰的。
7、关于开发人才
千万不要指望HR能给你招来某个领域的领军人才,带领团队走向巅峰。老老实实的招聘偏向应用类的工程师,代码能力强,嵌入式调试经验丰富,还对AI有着浓厚的兴趣,愿意花时间去学习的软件工程师,作为团队核心。招聘1-2名有过模型训练的经历、懂一些基本原理的算法工程师,专职负责挑选模型,进行模型训练。招聘1名专职的数据人员,负责数据采集与标注。一个小团队就组建完成了。
说了很多,总结一下。一般的嵌入式AI开发,应用为主,数据为王,算法应用开源项目即可。把软件做稳定,把基础功能做扎实,AI才能做到锦上添花。