神经网络教会小怪物走路

原文地址:

https://community.arm.com/processors/b/blog/posts/teaching-scratchy-to-walk-with-neural-networks

神经网络教会小怪物走路

如果给你Cortex-M4处理器,一两个马达,少许乐高积木,再加一些电线和绑带,你会用它们来做什么呢? 一位德国的嵌入式系统开发者Sebastian Förster,决定用这些东西搭建一个四条腿机器人,并且用神经网络教会他走路。

这个被命名为小怪物的机器人,一共有四个伺服电机控制四条腿,使用超声波探测距离,主控用的是STM32F407探索开发板。

Arm深度学习技术总监Mark Connor专程和Sebstian见面并对他进行了采访,请他谈了一下为什么要做这个“小怪物”以及他的心得体会

那么, Sebastian,能否谈谈你怎么想到要去做这个“小怪物”的吗?

“是这样的,我目前硕士学位论文的题目就是有关如何在更小的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,但是我需要编写一个小文件系统,以便库可以直接从闪存加载保存的网络权重。”

你对那些有兴趣构建和培训自己的机器人的开发者,有什么建议吗?

“无论你做什么,都不要放弃探究特征和超参数。 如果你已经能想到一些东西,你就可以创造它!“

以下是“小怪物”的真实视频,

 Youtube网址,建议翻墙观看

https://youtu.be/fHCm0gQRzC4

 

懂德语的兄弟们请看Sebstian的原版博客:

https://sebastianfoerster86.wordpress.com/2016/11/07/robot-controlled-by-artificial-neural-network/

Anonymous
  • 使用Streamline分析RTOS系统性能

    本文翻译自Analyzing the performance of RTOS-based systems using Streamline ============================================================= Streamline是DS-5中的性能分析工具, Streamline可以用来分析裸机系统,RTOS,Linux,Android和Tizen系统的性能…
  • 免费的原生aarch64 CI/CD

            开源软件社区的朋友们有福了!如果你有个开源软件项目想支持Arm架构平台,却苦于没有Arm服务器做CI/CD (持续集成/持续交付),那这个好消息你可不能错过。7月10日,Shippable宣布和Arm,Packet.net达成合作伙伴关系,为Arm平台上的软件开发提供原生的CI/CD服务,重点是(敲黑板了)对于开源软件项目,Shippble提供免费的CI/CD服务!这些服务运行在给所有开源软件共享的64位的Armv8…
  • 当增强现实(AR)遇到机器学习(ML),一个结合 Google ARCore 与 Arm NN 的 Unity 案例

    背景介绍 在 Unity 中打开 Google ARCore 功能 编译 Arm NN 共享库 作为 Unity 的 Native 插件的一个 C++ 物体检测器 整合 Arm NN 到 Unity 中 背景介绍 增强现实和机器学习是当前两项最前沿的技术。其中增强现实可以把虚拟的物体惟妙惟肖地渲染到真实世界当中。 而机器学习,则可以帮助程序更好的认识真实世界中的物体。同时运用这两项技术,我们将可以创造出一系列新颖的应用…