说起乐高积木,大多数人一定都想的是小孩子的玩具吧?但如果再加上Cortex-M4处理器,一两个马达和一些电线绑带,你能把它玩得有“技术含量”吗?当然,“技术流”玩家还是有的,Sebastian Förster,这位来自德国的嵌入式系统开发者,便用这些东西搭建了一个四足机器人,并且用神经网络教会它走路。这个被命名为“Scratchy”小怪物的机器人,一共有四个伺服电机控制四条腿,使用超声波探测距离,主控则用的是STM32F407探索开发板。
对此,Arm深度学习技术总监Mark Connor专程和Sebstian见面并对他进行了采访,请他谈了一下为什么要做这个“小怪物”以及他的心得体会,让我们一起来围观下吧。
能否谈谈你怎么想到要去做这个“小怪物”的吗?
我目前硕士学位论文的题目就是有关如何在更小的Cortex-M处理器上实现机器学习,通过一个神经网络的实例来做性能测试。而作为测试的一部分,我把FANN神经网络库移植到了Cortex-M4上,并且我不想做太学术太死板的东西,而希望是有型的东西,于是我选择做个机器人。如你所见,其实我没做的很复杂,就先把一些乐高积木连到电机上,然后再连到一块有足够Flash和SRAM的STM32F4开发板上。
“小怪物”的成功也证明了我论文的结论——在小型的基于Cortex-M设备上运行机器学习算法是完全可能的。
你有没有试图自己对腿部动作进行编程?
当然没有,这显然应该是让AI去干的!“小怪物”的结构允许我可以独立地训练向前和向后的步法,让我大吃一惊的是,虽然它没有膝关节,但是也能工作。因为Deep Mind在 Atari Q-Learner上取得了很大的成功,所以我也决定使用Q-Learning,并且我可以在他们的基础之上编写Q-learning的代理。 FANN库其实是由其他人开发并在LGPL许可下开源的,我只是单纯移植到了Cortex-M4上。
你是如何决定网络拓扑的?
SRAM的大小限制了拓补结构,神经网络可以做的更大,但使用额外的变量会消耗非常多的存储器空间,而我更想直接在Cortex-M4上直接进行训练。在我看来,使用两个或三个前馈层并没有太大区别,尽管我没有直接比较它们,而我想压榨一下处理器!
用微控制器进行当前的神经网络研究是否容易?
其实裸C(非CUDA)框架完全可以适用于512Kb闪存和256Kb SRAM,我很幸运地找到FANN,但是我需要编写一个小文件系统,以便库可以直接从闪存加载保存的网络权重。”
你对那些有兴趣构建和培训自己的机器人的开发者,有什么建议吗?
-
机器人
+关注
关注
211文章
28420浏览量
207111 -
神经网络
+关注
关注
42文章
4771浏览量
100773
原文标题:如何利用神经网络教会“小怪物”走路?
文章出处:【微信号:arm_china,微信公众号:Arm芯闻】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论