帮助我每周五天学习Machine Learning的技巧

我每天学习 Machine Learning 9个月,然后找到了工作。怎么样?像这样…

男子戴着耳机,坐在电脑桌前

我退出了Apple。开始网络创业,失败了。我的心不在其中。

我想学习机器学习。它让我很兴奋。我要学习这一切。我不需要编写所有规则,机器会为我学习它。但我没有工作。

兴奋不会为事情付出代价。

我在周末开始驾驶优步来支付学费。

我喜欢结识新朋友,但我讨厌一直开车。交通,停止,启动,加油,我认为我有足够的燃料,空气,空调,换档,你不应该这样,你应该这样,所有这一切。

我研究过机器学习。一整天,一周五天。这很难。它仍然很难。

优步周末。本周机器学习。那是我的惯例。我必须学习。我必须学习这个,我不能继续开车,我不知道我的目标是什么,但我知道这不是开车。一个星期六晚上,我赚了280美元,罚款290美元。 – 晚上10美元。

在我自己创建的AI硕士学位 9个月后,我找到了一份工作。这是我有过的最好的工作。

我每天如何学习?

像这样。

1.减少搜索空间

机器学习很广泛。有代码,有数学,有概率,有统计数据,有数据,有算法。

并且不乏学习资源。拥有太多选项与没有选项相同。

如果你认真学习,那么就要为自己设置课程。 不要花费数周时间询问是否应该学习Python或R,而是选择Coursera或edX课程,从数学或代码开始,花一周时间计划一个粗略的计划,然后再遵循它。

对我来说,这是创建我自己的AI硕士学位。我决定先学习代码,Python就是我的语言。我搜索了不同的课程和书籍,并把我最感兴趣的书放在一起。我为每个人做的最好的道路是什么?可能不是。但这是我的,这就是为什么它有效。

一旦我有了课程,我就有了一条可以追随的道路,没有更多的浪费时间来决定什么是最好的方法。我可以起床,坐下来学习我需要(想要)学习的东西。

它也不严格。如果出现了引起我兴趣的事情,我会跟着它,并在我去的时候学习我需要的东西。

如果您是在线学习而不是通过大学学习,那么您应该走自己的路。

2.修复你的环境

你祖父的第一个橙色农场失败了。

土壤很好。种子在那里。所有设备也是如此。

发生了什么?

太冷了。橘子需要温暖的温度才能生长。你的祖父有种植橙子的技能,但他们没有机会在寒冷的气候中生长。

当他搬到一个温暖的城市时,他开始了另一个橙色农场。

12个月后,你的祖父正在镇上供应最好的橙汁。

学习就像种植橘子一样。

你可以拥有一台笔记本电脑,一个互联网连接,最好的书籍,但仍然没有动力去学习。

为什么?

因为你的环境已经关闭。

你的房间充满了分心。

你试着和朋友一起学习,但他们并不像你那样专注。

Whatsapp每7分钟一次。

你能做什么?

我把房间变成了一个研究天堂。清理它。把我的手机放在另一个房间的抽屉里,关掉所有地方的通知。

我告诉了我的朋友。我的电话一直持续到下午4点,我会跟你说话。他说没关系。

在朋友时间,朋友很棒,但学习时间是学习时间。没有你的手机不能一整天?试试一个小时。任何你看不到的抽屉都会起作用。请勿打扰默认。

修复您的环境,让知识流动。

3.设置系统,以便您始终获胜

问题13让我难过。我被卡住了。

我想昨天完成,但不能。

现在是时候学习,但我知道你昨天有多努力,无处可去。

我把它推迟了。我知道我应该读书。但是我把它推迟了。

这是一个循环。

Aghhhhhhh。我以前见过这个循环。我知道。但它仍然存在。

那堆书盯着我看。问题13.我设置了一个计时器。25分钟。我知道我可能无法解决问题,但我可以坐下25分钟尝试。

4分钟,这是地狱。燃烧地狱。我继续往前走。24分钟,我不想停下来。

计时器熄灭,我又设置了另一个。然后另一个。经过3次会议,我解决了这个问题。我告诉自己,我是世界上最好的工程师。这是谎言,但无关紧要。即使是一个小里程碑也是一个里程碑。

你不能总是控制你是否在学习上取得进步。但是你可以控制你花在一些东西上的时间。

可以控制:每天四个25分钟的会话。

无法控制:完成每天开始的每项任务。

设置系统,以便您始终获胜。

4.有时什么都不做

我得出结论。学习是最终的技能。如果我能学会更好地学习,我可以做得更好。我可以学习机器学习,我可以成为一个更好的程序员,我可以学习写得更好。我想,我必须改进我的学习。我立刻开始了。

我做了Coursera学习如何学习课程。其中一个主题是专注于扩散思维。

当你完成一项任务时,会集中思考

当你没有考虑任何事情时,就会出现分散思维

最好的学习发生在这两者的交叉。这就是为什么你在淋浴时有一些最好的想法。因为没有别的事情发生。

当你让分散的思维接管时,它会让你的大脑空间将所有吸收的东西联系在一起。

问题是,为了使它正常工作,你需要时间。

如果您已经设置了系统,那么您可以进行四次25分钟的重点工作,然后再去散步。小睡一会儿。坐下来思考你学到了什么。

一旦你开始不经常做任何事情,你会发现很多东西都是有价值的,因为空的空间。一个房间是四个围绕空间的墙,一个轮胎除了空气之外什么都没有,一艘船因空的空间而漂浮。

你的学习程序可以做更多的事情。

5.接受失败

学习很失败。

你学到了一件事,第二天就忘记了。

然后另一个忘了它。

另一个。

忘记了。

你整个周末都在学习,周一去上班,没有人知道。

有人问我如何深刻地记得书中的东西?我说我没有。如果我很幸运,我会记得我读过一本书的1%。当1%与另外1%的其他东西交叉时,神奇就会发生。这让我觉得自己像专家点连接器。

经过一年的学习,你会发现还有更多东西需要学习。

什么时候结束?

它没有。它总是第一天。

拥抱失败。

6.这个有3年历史的原则

前几天我在公园。

有一个小男孩跑来跑去度过他的生命。向上滑动,滑下,在树上,从树上,在泥土中,从泥土中,上山,下山。

他笑着跳起来然后又笑了起来。

他的妈妈过来接他。

“来吧,查理,我们得走了。”

当她把他带走时,他一直笑着挥舞着他的蓝色塑料铲。

是什么让他着迷?

他在玩。他很开心。整个世界都是新的。我们的文化在工作和娱乐之间存在严格的分歧。研究被认为是有效的。

你应该学习以获得更多的工作。你应该努力赚钱。这笔钱给你带来休闲时间。一旦你买了休闲时间,那么只有这样你才能像查理一样笑着跑来跑去。

如果你的头脑研究是有效的,那将是地狱。因为总有更多要学习。你知道它是怎么回事,所有工作都没有。

但是假设,你有学习的想法是经历一个主题然后到下一个主题的过程。

连接游戏等不同的东西。

如果你是查理走下幻灯片,你会开始对它有同样的感觉。

你学到了一件事,你用它来学习别的东西,你被卡住,你克服它,你学到了另一件事。然后你就跳出舞来吧。

我了解到,如果你有像表格,列或数据框架这样的结构化数据,像CatBoost,XGBoost和LightGBM这样的集合算法效果最好。对于非结构化数据,如图像,视频,自然语言和音频,深度学习和/或转移学习应该是您的首选模型。

我连接了点。我告诉自己我是专家点连接器。从点到下一个跳舞。

这样做,你将完成一个比你开始时更有活力的学习课程。

这是一个有3年历史的原则。把一切视为游戏。

这就足够了。

这是我睡觉的时间。

这是一个奖励。

7.睡觉

睡眠不好意味着学习不好。

你可能还不够。

我不是。驾驶优步的最佳资金是周五和周六晚上。人们出去吃饭,聚会,去夜总会,我没有,我开车。我要去,直到凌晨2点,凌晨3点,回家睡觉,直到太阳以7-8把我叫醒。我有两天的火车残骸。星期一会来,我会在不同的时区。周二变得更好,到了周三我回到了我需要的地方。那个周期将在周五重复。

这种破碎的睡眠时间表是不可接受的。我的目标是更好地学习。睡眠可以清洁大脑并使大脑中的新连接发生。我在晚上10点,晚上11点开车离开,回到家,得到了7-9个小时。更少的钱,更多的学习。

不要交换睡眠更多的学习时间。反其道而行之。

机器学习很广泛。

要好好学习,要好好学习,你需要提醒自己。

  • 减少搜索空间
  • 修复您的环境
  • 拥抱失败
  • 有时什么也不做
  • 将学习视为游戏
  • 良好的睡眠以便更好的学习

晚安。


有疑问或建议吗?我的Twitter DM是开放的。你也可以在mrdbourke.com上找到这样的帖子,以及我在YouTube上做这些事情的视频

PS如果你从这篇文章中获得了价值,你可能会喜欢这个视频。

关于自学机器学习的思考?提醒自己这6件事

我是一名自学成才的机器学习工程师,如果我重新开始,这就是我告诉自己的

我大部分自学的地方都在那里。照片来自:Daniel Bourke在YouTube上

视觉上学得更好?YouTube上有这篇文章的视频版本

我们在澳大利亚举办了一次关于机器人技术的聚会,这是一个问题时间。

有人问了一个问题。

“我如何从不同的背景进入人工智能和机器学习?”

尼克转身叫了我的名字。

“丹·伯克在哪里?”

我在后台与Alex交谈。我走了过来。

“他在这里,”尼克继续道,“Dan来自健康科学背景,他研究营养,然后驾驶Uber,在线学习机器学习,现在已经和Max Kelsen一起成为一年的机器学习工程师。”

尼克是布里斯班科技公司Max Kelsen的首席执行官兼联合创始人。

我站着不停地听着。

“他记录了他的在线旅程,如果你有任何问题,我相信他会很乐意提供帮助。”

问题结束了,我回到了食物。

Ankit过来了。他告诉我他正在努力利用机器学习来更好地理解学生学习的项目。他将讲座出勤率,在线学习门户上花费的时间,测验结果以及其他一些内容结合起来。他甚至建立了一个前端Web门户来与结果进行交互。

Ankit的作品激发了我的灵感。这让我想做得更好。

然后又有几个人开始过来并询问有关如何进入机器学习的问题。全部来自不同领域。

这是困难的部分。我仍然认为自己是初学者。

但最好的导师是在你面前1 – 2年的人。刚刚经历过你将要经历的事情的人。任何更长的时间,建议变得模糊。当它新鲜时你想要它。

我的兄弟正在进入机器学习。这就是我一直对他说的话(如果我重新开始的话,还有我自己)。

A)获得一些Python基础(3-4个月)

这种语言并不重要。它可能是R,Java,Python等等。重要的是挑选一个并坚持下去。

如果你刚开始,你会发现Python很难出错。

如果你想进入应用机器学习,代码是强制性的。

从网上挑选一个基础课程,并坚持几个月。奖励积分如果它同时适用于教授数据科学。DataCamp非常适合这种情况。

有时会变得很难,但这就是重点。学习编程语言就像学习另一种语言和另一种思维方式一样。

但你以前做过。记得你3岁的时候?可能不是。但是你身边的人都在使用你以前从未听过的文字和声音。过了一会儿,你也开始使用它们了。

B)当你还没有准备好时开始制作东西

尽快应用你所学到的知识。

无论你完成了多少门课程,你都永远不会100%准备好。

不要被引诱完成更多课程作为能力的标志。

如果我回去重新开始,这是我改变的一件事。

找到自己的项目,通过错误来学习和学习。

回到你3岁的自我。你说的每个第三个字都错了。没有句子结构,也没有语法。一切都刚刚出来。

C)那里有很多,所以减少杂乱

那里有很多课程。他们都很棒。

很难找到一个坏的。

但这就是事情。由于有这么多,很难选择。另一个可以阻挡你的陷阱。

为了解决这个问题,我获得了自己的AI硕士学位。我自己的定制跟踪。

如果需要,您可以复制它。但我鼓励你花几天时间研究自己,看看什么对你最好。

作为一个提醒,我发现的三个资源与我日常工作最相符的是,动手机器学习书fastai机器学习课程Coursera上应用数据科学与Python课程

在您有几个月的Python经验之后,为这些书签添加书签。

D)研究是必要的,但如果你不能应用它是毫无意义的

你会看到每天都有关于新机器学习方法的文章和论文。

别理他们。

没有办法跟上他们所有这一切,它只能阻止你回到基础设置。

大多数最好的机器学习技术已经存在了几十年。改变的是计算能力和数据可用性的增加。

不要被新的分心。

如果你刚开始,坚持先找到你的基础。然后根据您的项目需求扩展您的知识。

E)每天一点点

3岁你是一个学习机(机器学习者?)。

几年之后,你几乎没有言语,几十年来一直在说话的人。

怎么样?

因为你每天练习一点。

然后复利就开始了。

每天增加1%=年底增加3700%。

如果你错过了一天,无论如何,生活就会发生。尽可能恢复。

很快你就会开始讲数据语言了。

F)不要因为不知道某事而殴打自己

“你有没有建立过推荐引擎?”

“没有。”

“我们有一个项目需要一个作为概念证明,你认为你可以搞清楚吗?”

“当然。”

大多数人认为高中或大学后学习停止。它没有。

上面的情景发生在另一周。我从来没有建立过推荐引擎。然后我做了。

如果你以前做过的事情失败了,那么失败也不错。你一直在走路,但是当你自己绊倒时,你并没有打败自己。它发生了。你继续走路。

但是,在新事物上失败是很困难的。你以前从未这样做过。

学习机器学习类似这样。

第一年:你太烂了。

第二年:你比前一年好,但是你觉得你更糟糕,因为你意识到你有多少不知道。

第3年:???? (我不在那里)

拥抱吮吸。

不知道有什么东西可以帮助你学习更多东西会让自己多少钱?

零。

学习新东西需要时间。每一天都是第一天。

学习不是线性的。

你3岁的孩子如何反应不懂一个字?

你笑了 把手放在空中,然后爬一会儿。

现在一样。除了你可以走路。

¹如果没有所有创造过课程并分享他们所学知识的优秀人才,我所做的所有工作和我所学到的东西都是不可能实现的。

有更多问题吗?在TwitterLinkedInYouTube上联系

这篇文章最初作为Quora的答案出现。

DeepPiCar2:Raspberry Pi设置和PiCar组装

组装PiCar硬件并安装所有软件驱动程序。让它在客厅里运行

执行摘要

欢迎回来!在本指南中,我们将首先介绍要购买的硬件以及我们需要它们的原因。接下来,我们将对它们进行设置,以便在本文末尾我们将在客厅中运行PiCar。

硬件供应清单

  • 1 x Raspberry Pi 3型号B +套件,带2.5A电源(50美元)这是DeepPiCar的大脑。这款最新型号的Raspberry Pi配备1.4Ghz 64位四核处理器,双频wifi,蓝牙,4个USB端口和一个HDMI端口。我推荐这个套件(仅在Raspberry Pi板上),因为它带有一个电源适配器,你需要在进行非驱动编码和测试时插入,以及两个芯片散热器,这将阻止你的Raspberry Pi CPU过热。
  • 1 x 64 GB micro SD卡(8美元)这是Raspberry Pi操作系统和我们所有软件的存储位置。任何品牌的micro SD卡都应该可以正常工作。你可能只有一个人躺在你的房子周围。32GB也应该没问题。我选择了64 GB,因为我计划在我的汽车行驶时记录大量视频,以便稍后分析其行为,并使用视频在以后的项目中进行深度学习培训。
  • 1 x SunFounder PiCar-V套件(115美元)这是DeepPiCar的主体。确保你得到如上所示的Model V(又名Version 2.0)。除了Raspberry Pi和电池外,它还配备了机器人汽车所需的一切。市场上有很多Raspberry Pi车载套件,我之所以选择这款车载套件是因为它配备了开源python API来控制汽车,而其他供应商则拥有其专有的API或基于C的API。众所周知,python现在是机器学习和深度学习的首选语言。此外,开源很重要,因为如果我们发现API中的错误而不必等待制造商提供软件更新,我们可能会自己修改汽车API的内部。
  • 4 x 18650电池和1 x电池充电器(20美元)您可以获得任何18650电池和兼容充电器。这些电池适用于高耗电应用,例如驱动Raspberry Pi板和PiCar。PiCar只需要两个电池,但你总是想要另外一对新电池,这样你就可以随时保持你的车在轨道上运行。我建议晚上给两套充电,这样你就不必担心测试过程中电池没电了。
  • 1个Google Edge TPU USB加速器(75美元)每个英雄都需要一个伙伴。谷歌的边缘TPU(Edge意味着它适用于移动和嵌入式设备,而TPU代表Tensor处理单元)是Raspberry Pi板的绝佳附件。虽然Pi CPU在很小的捆绑中包含了大量的计算能力,但它并不是为深度学习而设计的。另一方面,Google新发布的Edge TPU(2019年3月)专门用于运行用TensorFlow编写的深度学习模型。在本系列的第6部分中,我们将在TensorFlow中构建一个实时交通标志检测模型。这个模型深200多层!仅在Raspberry Pi的CPU上运行此模型只能处理每秒1帧(FPS),这几乎不是实时的。此外,它消耗100%的CPU并使所有其他程序无响应。但在Edge TPU的帮助下,我们现在可以处理12个FPS,这对于实时工作来说已经足够了。我们的CPU保持冷却,可用于执行其他处理任务,如控制汽车。
  • 套迷你交通标志(15美元)和一些乐高小雕像。如果您的年轻人在游戏室中有一些玩具标志和乐高小雕像,您可能不需要购买它们。你可以使用你发现的任何标志来训练模型,只要确保它们不是太大了
  • (可选)1 x 170度广角USB相机(40美元)。这是一个可选配件。我买了它来取代SunFounder PiCar附带的相机,这样汽车就可以拥有广阔的视野。相机很棒,但不像我喜欢的广角,它不能看到前轮前面3-4英寸的车道线。我最初使用相机拍摄了第4部分中的代码。在尝试了几个镜头后,我发现这款广角相机的精度和稳定性大大提高了。控制硬件和软件(与在汽车模拟器中运行汽车相比)是很好的,因为如果单独通过软件无法轻易解决问题,您可以采用硬件修复。
  • USB键盘/鼠标和带HDMI输入的显示器。在Pi的初始设置阶段,您只需要这些。之后,我们可以通过VNC或Putty远程控制Pi。
  • 运行Windows / Mac或Linux的台式机或笔记本电脑,我将在此处称之为“PC”。我们将使用此PC远程访问并将代码部署到Pi计算机。

有时候,我的惊喜是Raspberry Pi,我们汽车的大脑只有30美元左右,比我们的许多其他配件便宜。事实上,随着时间的推移,硬件变得越来越便宜,而且软件完全免费且丰富。难道我们不是生活在一个伟大的时代吗?!

这是组装完成后的最终产品。我在这里使用广角相机。

Raspberry Pi设置

Raspberry Pi操作系统设置(1小时)

  • 按照这个优秀的分步指南,将NOOBS Raspbian操作系统(各种Linux)安装到micro SD卡上。它需要大约20分钟和大约4GB的磁盘空间。安装并重新启动后,您应该看到如下所示的完整GUI桌面。这感觉就像你在Windows或Mac GUI环境中,不是吗?
  • 在安装过程中,Pi会要求您更改默认用户的密码pirasp例如,我们将密码设置为。
  • 初始安装后,Pi可能需要升级到最新的软件。这可能需要10-15分钟。

设置远程访问

设置远程访问允许Pi计算机无头运行(即没有显示器/键盘/鼠标),这使我们无需一直连接显示器和键盘/鼠标。该视频提供了有关如何设置SSH和VNC远程访问的非常好的教程。无论如何,这是步骤。

  • 打开终端应用程序,如下所示。终端应用程序是一个非常重要的程序,因为后面文章中的大多数命令都将从终端输入。
  • 通过运行找到Pi的IP地址ifconfig。在这种情况下,我的Pi的IP地址是192.168.1.120
pi @ raspberrypi:〜$ ifconfig | grep wlan0 -A1
wlan0:flags = 4163 <UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.120 netmask 255.255.255.0 broadcast 192.168.1.255
  • sudo raspi-config在终端中运行以启动“Raspberry Pi软件配置工具”。系统可能会提示您输入用户密码pi
  • 启用S​​SH服务器:选择5. Interface Options– > SSH– >Enable
  • 启用VNC服务器:选择5. Interface Options– > VNC– >Enable
  • 下载RealVNC Viewer并将其安装到您的PC上。
  • 使用Real VNC Viewer连接到Pi的IP地址。您将看到与Pi正在运行的桌面相同的桌面。
  • 此时,您可以安全地断开显示器/键盘/鼠标与Pi计算机的连接,只需插入电源适配器即可。

设置远程文件访问

由于我们的Pi将无头运行,我们希望能够从远程计算机访问Pi的文件系统,以便我们可以轻松地将文件传输到Pi计算机或从Pi计算机传输文件。我们将在Pi上安装Samba文件服务器。

pi @ raspberrypi:〜$ sudo apt-get update && sudo apt-get upgrade -y
获取:1 http://archive.raspberrypi.org/debian stretch InRelease [25.4 kB] 
软件包[45.0 kB] 
[省略...] 
解压缩lxplug-ptbatt(0.5)over(0.4)... 
设置lxplug-ptbatt(0.5)... 
pi @ 




raspberrypi :〜$ sudo apt-get install samba samba-common-bin -y读取包列表...完成构建依赖树        [省略...] 处理libc-bin的触发器(2.24-11 + deb9u4)... 处理触发器为systemd(232-25 + deb9u11)... pi @ raspberrypi :〜$ sudo rm / etc /samba/smb.conf pi @ raspberrypi:〜$ sudo nano /etc/samba/smb.conf

然后将以下行粘贴到nano编辑器中

[global] 
netbios name = Pi
服务器字符串= PiCar文件系统
工作组= WORKGROUP

[HOMEPI]
路径= / home / pi
comment =无评论
browsable = yes
writable =是
创建掩码= 0777
目录掩码= 0777
public = no

通过Ctrl-X保存并退出nano,单击是以保存更改。

然后设置Samba服务器密码。为简单起见,我们将使用与raspSamba服务器密码相同的内容。设置密码后,重新启动Samba服务器。

#create samba密码
pi @ raspberrypi:〜$ sudo smbpasswd -a pi
新的SMB密码:
重新输入新的SMB密码:
添加了用户pi。#re restart samba server
pi @ raspberrypi:〜$ sudo service smbd restart

此时,您应该能够通过Pi的IP地址(My Pi的IP为192.168.1.120)从PC连接到Pi计算机。转到您的PC(Windows),打开命令提示符(cmd.exe)并键入:

#将Pi主目录挂载到R:PC上的驱动器
C:\> net use r:\\ 192.168.1.120 \ homepi
命令成功完成。
C:\ Users \ dctia> r:C:\> dir r:
驱动器R中的
卷是HOMEPI 卷序列号是61E3-70FF 目录R:\ 05/02/2019 03:57 PM <DIR>。
04/08/2019 04:48 AM <DIR> ..
04/08/2019 05:43 AM <DIR> Desktop
04/08/2019 05:43 AM <DIR> Documents
04/08/2019 05:43 AM < DIR>下载
04/08/2019 05:15 AM <DIR> MagPi
04/08/2019 05:43 AM <DIR> Music
05/02/2019 03:43 PM <DIR>图片
04/08/2019 05:43 AM <DIR> Public
04/08/2019 05:43 AM <DIR>模板
04/08/2019 05:43 AM <DIR>视频
0文件0字节
11 Dir(s )22,864,379,904字节免费

事实上,这是我们的Pi计算机文件系统,我们可以从它的文件管理器中看到。这将非常有用,因为我们可以直接从我们的PC编辑驻留在Pi上的文件。例如,我们可以使用PyCharm IDE首先在Pi上编辑Python程序,然后使用Pi的终端(通过VNC)来运行这些程序。

如果你有一台Mac,这里是如何连接到Pi的文件服务器。按Command-K打开“连接到服务器”窗口。输入网络驱动器路径(替换为Pi的IP地址),即smb://192.168.1.120/homepi,然后单击“连接”。输入登录名/密码,即pi / rasp,然后单击“确定”以安装网络驱动器。然后,驱动器现在将显示在桌面和Finder窗口侧栏中。有关Mac上更深入的网络连接说明,请查看此优秀文章

安装USB摄像头

USB摄像头的设备驱动程序应该已经配备了Raspian OS。我们将安装摄像机查看器,以便我们可以看到实时视频。

  • 将USB相机从PiCar套件中取出并插入Pi计算机的USB端口
  • sudo apt-get install cheese从终端运行安装“奶酪”,相机查看器。
pi @ raspberrypi:〜$ sudo apt-get install cheese -y
读取包列表...完成
构建依赖关系树
读取状态信息...完成
....
cheese是最新版本(3.22.1-1)。
  • 通过Raspberry Pi button(Top Left Corner)– > Sound & Video– > 启动奶酪应用程序Cheese您应该看到如上图所示的实时视频源。

SunFounder PiCar-V软件配置(偏离手册)

在组装PiCar之前,我们需要安装PiCar的python API。SunFounder发布了其Python API的服务器版本和客户端版本。客户端API代码用于远程控制PiCar,在您的PC上运行,它使用Python版本3.服务器API代码在PiCar上运行,遗憾的是,它使用的是Python版本2,这是一个过时的版本。由于我们编写的自驱动程序将专门在PiCar上运行,因此PiCar Server API也必须在Python 3中运行。幸运的是,SunFounder的所有API代码都是Github上的开源代码,我制作了一个分支并将整个仓库(服务器和客户端)更新为Python 3.(我将很快将我的更改提交给SunFounder,因此它可以合并回到主要回购,一经SunFounder批准。)

暂时,运行以下命令(粗体),而不是SunFounder手册中的软件命令。您不必在本手册的第20-26页上运行命令。

#将所有对python(版本2)的调用路由到python3,
#pip(版本2)到pip3,即使在sudo模式下
#note:`sudo abcd`在管理员模式下运行`abcd`命令
alias python = python3
alias pip = pip3
alias sudo ='sudo'
#下载修补的PiCar-V驱动程序API,并运行它的设置
pi @ raspberrypi :〜$ cd pi @ raspberrypi:〜$ git clone https://github.com/dctian/SunFounder_PiCar.git
克隆到' SunFounder_PiCar'...
remote:枚举对象:9,完成。
remote:计数对象:100%(9/9),完成。
remote:压缩对象:100%(9/9),完成。
remote:总计276(delta 0),重用2(delta 0),pack-reused 267
接收物体:100%(276/276),53.33 KiB | 0字节/秒,完成。
解决增量:100%(171/171),完成。
pi @ raspberrypi:〜$ cd~ / SunFounder_PiCar / picar /

pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ git clone https://github.com/dctian/SunFounder_PCA9685.git
克隆到'SunFounder_PCA9685'...
remote:枚举对象:7,完成了。
remote:计数对象:100%(7/7),完成。
remote:压缩对象:100%(5/5),完成。
远程:总计87(delta 2),重用6(delta 2),pack-
reused 80 Unpacking对象:100%(87/87),完成。pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ cd~ / SunFounder_PiCar /
pi @ raspberrypi:〜/ SunFounder_PiCar $ sudo python setup.py install
将SunFounder-PiCar 1.0.1添加到easy-install.pth文件
中将picar脚本安装到/ usr / local / bin
[省略....] #下载修补后的PiCar-V应用程序
#并安装相关软件
pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ cd
pi @ raspberrypi :〜$ git clone https://github.com/dctian/SunFounder_PiCar-V.git
克隆到'SunFounder_PiCar-V'...
remote:枚举对象:969,完成。
remote:总计969(delta 0),重用0(delta 0),pack-
reused 969 接收对象:100%(969/969),9.46 MiB | 849.00 KiB / s,完成。
解决增量:100%(432/432),完成。pi @ raspberrypi:〜$ cd SunFounder_PiCar -V pi @ raspberrypi:〜/ SunFounder_PiCar-V $sudo ./install_dependencies
将sunFounder-PiCar 1.0.1添加到easy-install.pth文件
中将picar脚本安装到/ usr / local / bin 安装/usr/local/lib/python2.7/dist-packages/SunFounder_PiCar-1.0.1- py2.7.egg
处理SunFounder-PiCar的依赖关系== 1.0.1
完成SunFounder-PiCar的处理依赖关系== 1.0.1
完成
将MJPG-Streamer复制到备用位置。完成
Enalbe I2C。完成安装结果:
django成功
python-smbus成功
python-opencv成功
libjpeg8-dev成功
你需要更改的东西可能需要重启才能生效。
你想立即重启吗?(是/否)是的

回答是,提示重启时。重新启动后,应安装所有必需的硬件驱动程序。我们将在汽车装配后测试它们。

PiCar大会

装配过程密切重新组装构建复杂的乐高套装,整个过程大约需要2个小时,手眼协调很多,并且很有趣。(您甚至可能在施工阶段让您的年轻人参与其中。)PiCar Kit附带一份印刷的逐步说明手册。但我推荐这两个额外的资源。

  • 教学手册的PDF版本。打印手册很小,图表可能打印得不是很清楚,而PDF版本非常清晰,可以搜索和放大以获得更多细节。我发现在组装阶段我的笔记本电脑上的PDF非常有帮助。
  • 由SunFounder发布的YouTube 4部分教学视频。不幸的是,这些视频适用于较旧版本的PiCar,因此某些部件(如伺服电机组件)不同。但大多数零件和装配技术都是一样的。因此,如果您对装配手册中的特定图表感到头疼,您可能需要查看视频的相关部分。我希望SunFounder能够为新的PiCar-V套件发布一组新的视频。

旧版PiCar的装配视频(4个部分),一个有用的参考

当橡胶遇上这条路!

现在PiCar的所有基本硬件和软件都已到位,让我们尝试运行它!

  • 通过VNC从PC连接到PiCar
  • 确保有新电池,将开关拨到ON位置并拔下micro USB充电线。请注意,您的VNC远程会话应该仍然有效。
  • 在Pi终端中,运行以下命令(以粗体显示)。你应该:
  1. 看到汽车行驶得更快,然后发出时减速 picar.back_wheel.test()
  2. 当发出时,看到前轮转向左,中间和右侧picar.front_wheel.test()。要停止这些测试,请按Ctrl-C。要退出python程序,请按Ctrl-D。
pi @ raspberrypi:〜/ SunFounder_PiCar / picar $ python3 
Python 3.5.3(默认,2018年9月27日,17:25:39)
[GCC 6.3.0 20170516]关于linux输入
“help”,“copyright”,“credits”或“许可证”了解更多信息。>>> 导入picar
>>> picar.setup() >>> picar.front_wheels.test()
DEBUG“front_wheels.py”:设置调试关闭
DEBUG“front_wheels.py”:设置轮调试关闭
DEBUG“Servo.py” :设置调试关闭
turn_left
turn_straight
turn_right >>> picar.back_wheels.test()
DEBUG“back_wheels.py”:设置调试关闭
DEBUG“TB6612.py”:

DEBUG“PCA9685.py”:设置调试关闭
前进,速度= 0
前进,速度= 1
前进,速度= 2
前进,速度= 3
前进,速度= 4
前进,速度= 5
前进,速度= 6
前进,速度= 7
前进,速度= 8
前进,速度= 9
前进,速度= 10
前进,速度= 11
  • 如果您遇到错误或看不到车轮移动,那么您的硬件连接或软件设置有问题。对于前者,请仔细检查您的电线连接,确保电池充满电。对于后者,请在评论部分发布一条消息,其中包含您遵循的详细步骤和错误消息,我将尽力提供帮助。

下一步是什么

恭喜你,你现在应该有一个PiCar,可以看到(通过奶酪),并运行(通过python 3代码)!它还不是一款深度学习车,但我们正在努力实现这一目标。每当你准备好的时候,请继续前进到第3部分,在那里我们将为PiCar提供计算机视觉和深度学习的超级大国。

以下是整个指南的链接:

第1部分:概述

第2部分:Raspberry Pi设置和PiCar组装(本文)

第3部分:让PiCar看到并思考

第4部分:通过OpenCV进行自主车道导航

第5部分:通过深度学习进行自主车道导航

第6部分:交通标志和行人检测和处理

DeepPiCa1:如何建立一个深度学习,自动驾驶机器人汽车的预算

介绍

如今,特斯拉,谷歌,优步和通用汽车都在努力创造自己的自动驾驶汽车,可以在现实世界的道路上行驶。许多分析师预测,在未来5年内,我们将开始在我们的城市中运行全自动驾驶汽车,并且在30年内,几乎所有汽车都将完全自主。使用大家伙使用的一些相同技术来制造你自己的自动驾驶汽车不是很酷吗?在本文和接下来的几篇文章中,我将指导您如何从头开始构建自己的物理,深度学习,自动驾驶机器人汽车。您将能够在一周内检测并跟踪车道,识别并响应交通标志和路上的人。以下是您最终产品的预览。


来自DeepPiCar的DashCam的车道跟随(左)和交通标志和人员检测(右)

我们的路线图

第2部分:我将列出要购买的硬件以及如何设置它们。简而言之,您将需要一个Raspberry Pi板(50美元),SunFounder PiCar套件(115美元),Google的Edge TPU(75美元)以及一些配件,以及每个部件在后续文章中的重要性。这些材料的总成本约为250-300美元。我们还将安装Raspberry Pi和PiCar所需的所有软件驱动程序。

Raspberry Pi 3 B +(左),SunFounder PiCar-V(中),Google Edge TPU(右)

第3部分:我们将设置所需的所有计算机视觉和深度学习软件。我们使用的主要软件工具是Python(用于机器学习/ AI任务的事实上的编程语言),OpenCV(一个功能强大的计算机视觉包)和Tensorflow(谷歌流行的深度学习框架)。注意我们在这里使用的所有软件都是免费的开源软件

第4部分:通过(繁琐的)硬件和软件设置,我们将直接进入FUN部分!我们的第一个项目是使用python和OpenCV教DeepPiCar通过检测车道线并相应地转向,在绕行的单车道道路上自主导航。

第5部分:我们将训练DeepPiCar自动导航,而不必像我们在第一个项目中那样明确地编写逻辑来控制它。这是通过使用“行为克隆”来实现的,我们只使用道路视频和每个视频帧的正确转向角来训练DeepPiCar自行驾驶。该实施的灵感来自NVIDIA的DAVE-2全尺寸自动驾驶汽车,它使用深度卷积神经网络来检测道路特征并做出正确的转向决策。

最后,在第6部分:我们将使用深度学习技术,如单镜头多盒物体检测转移学习,教DeepPiCar检测道路上的各种(微型)交通标志和行人。然后我们将教它停在红灯和停车标志,继续绿灯,停下来等待行人过马路,并根据张贴的速度标志等改变其速度限制。

条件

以下是这些文章的先决条件:

  • 首要的是愿意修补和破坏事物。与汽车模拟器不同,汽车模拟器中的一切都是确定性且完全可重复的,真实世界的模型汽车可能无法预测,您必须愿意亲自动手并开始修补硬件和软件。
  • 基本的Python编程技巧。我假设您知道如何在python中读取python代码和编写函数,if语句和循环。我的大部分代码都有详细记录,特别是难以理解的部分。
  • 基本的Linux操作系统知识。我将假设您知道如何在Linux中的Bash shell中运行命令,这是Raspberry Pi的操作系统。我的文章将告诉您确切的运行命令,运行它们的原因以及输出结果。
  • 最后,购买所有硬件和工作PC(Windows / Mac或Linux)需要大约250到300美元。同样,所有使用的软件都是免费的。

进一步思考[可选]

这是可选的阅读,因为我试图涵盖我在文章中需要知道的所有内容。但是,如果你想深入学习深度学习(双关语),除了我在整篇文章中提供的链接之外,还有一些资源需要检查。

Andrew Ng关于Coursera的机器学习和深度学习课程。正是这些课程点燃了我对机器学习和人工智能的热情,并给了我创建DeepPiCar的灵感。

  • 机器学习(免费):本课程涵盖传统的机器学习技术,如线性回归,逻辑回归和支持向量机等,以及神经网络。它创建于2012年,所以它使用的一些工具,即Matlab / Octave,已经过时了,并没有谈论深度学习。但它教给你的概念非常宝贵。你只需要高中水平的数学和一些基本的编程技巧来完成课程,而Ng博士非常好地解释了像反向传播这样的困难概念。完成本课程大约需要3个月。
  • 深度学习5门课程专业(如果你想获得证书,免费或50美元/月):该课程于2018年初推出。因此它涵盖了迄今为止所有最新的人工智能研究,如完全连接的神经网络,卷积神经网络(CNN)和序列模型(RNN / LSTM)。这个课程对我来说是一种享受。作为一名工程师,我总是想知道一些很酷的小工具是如何工作的,比如Siri如何回答你的问题,以及汽车如何识别路上的物品等等。现在我知道了。完成这个5门课程专业需要大约3-4个月。

下一步是什么

这是第一篇文章的全部内容。我会在第2部分见到你,我们会弄脏手,一起制造一辆机器人车!

以下是整个指南的链接:

第1部分:概述(本文)

第2部分:Raspberry Pi设置和PiCar组装

第3部分:让PiCar看到并思考

第4部分:通过OpenCV进行自主车道导航

第5部分:通过深度学习进行自主车道导航

第6部分:交通标志和行人检测和处理

AI赛车联盟的成功启动

我们为AI Racing League举办了一场令人难以置信的首场比赛。观众包括来自AI社区,研究人员,教师和学生的利益相关者。

昨天我们成功启动了新的明尼苏达州AI赛车联盟!这是一次故意的“软启动”,只有极少的宣传和营销,因为我们不想让我们的第一次活动不堪重负。优先考虑了双城区STEM领导层中有影响力的人,我们将重点放在邀请能够接触到妇女和少数民族社区的人们身上。这也是在一个工作日,所以我们意识到许多人不能休息一天,这限制了许多人的参与。

该活动在明尼苏达州国际学校的体育馆举行。特别感谢Zach Sheffert建立联系。这是一个很棒的设施,我们有足够的空间来分散和测试非常受欢迎的DonkeyCars自我注意:教人们如何在开始驾驶前限制最高速度

我们的赞助商是Optum Tech University(OTU)。无论保罗马利尼科尔·斯旺森 OTU的做了巨大的工作量,使在很短时间内量这一事件的成功。OTU为10辆DonkeyCars购买了零件,打印了轨道,完成了所有后勤工作,甚至付了咖啡和午餐!他们在两周内完成了这一切!

我们吸引了来自Optum和其他公司的志愿者。Optum Advanced Technology Collaborative的许多员工帮助组装汽车并成为我们的第一轮导师。我们的夏季实习生和Optum 技术开发计划的成员积极参与。

我们的第一个活动的目标是向人们介绍课堂上围绕AI的想法。我们希望活动有趣而灵活,即使教师和利益相关者只能在活动中停留一小时。我们与CodeSavvyMNCodes等组织合作,确保我们与有影响力的利益相关者建立联系。

当参与者进入健身房时,他们可以选择进入一组“分组表”,或者他们可以直接加入其中一个让DonkeyCar上班的团队。我们有以下突破表:

  1. 硬件 – 我们有两个表格显示样品Raspberry Pi和Nvidia Nano硬件以及样品伺服器,电机,电池和脉冲宽度调制的可视化演示。
  2. Python – 用于通过http://trinket.io教授Python的笔记本电脑的表。
  3. UNIX Shell – 包含示例UNIX shell演示的表。
  4. GPU服务器 – 用于显示我们的GPU服务器如何用于从图像进行培训的表格。
  5. Jupyter笔记本电脑 – 带有PC的桌子,向人们展示如何编写Jupyter笔记本来分析他们的图像文件。
  6. 计算机视觉 – 具有许多计算机视觉演示的表格,例如人脸识别。Nvidia Nano实时运行这些演示。
  7. 机器学习 – 包含机器学习步骤的总体图表以及如何使用TensorFlow库的表格。

虽然我们在许多表格上都有很多活动 – 其中一些表缺乏足够的训练导师和材料 – 所以我们仍然有大量的内容和培训可供使用。

我们还有一些表格,参与者在校准DonkeyCars时,将车辆用于赛道周围的试驾,试图收集训练数据并训练他们的模型。说实话,我们遇到了一些技术挑战,只有一辆车得到了充分的培训。然而,每个人似乎都玩得很开心,我想很多人都知道这些事件可以带来什么。

我们要求参与者填写“概念卡”表格,在这些表格中他们可以命名一个概念并描述学习目标和资源可能是什么。我们正在收集这些内容,以开始为其他活动构建可重用的学习组件。我们现在处于“汇报”阶段,并将整理一份任务清单,以使下一次活动更加顺利。

特别感谢所有参与的人,特别是Jon HerkeRob RossmillerParker EricksonSean LearyPaith Philemon为这次活动的辛勤工作而努力。我应该提一下Rob的团队是第一辆完成第一圈的车,所以他们在技术上是我们学习比赛的“赢家”!

我们还要向DonkeyCar 社区成员表示衷心的感谢。如果没有您的辛勤工作以及您愿意分享您的代码,文档和您的经验,这项活动将永远不可能实现!我们希望通过创建一组便携式概念资源来回馈,这些资源可以加载到现代学习管理系统(LMS)中,该系统使用AI来推荐有趣的学习AI的方法。有点像递归!

我们在这里为AI Racing League的CoderDojoTC GitHub回购发布资源。拉请求正在被接受!您可以随意将项目添加到任务列表中,以查找您希望查看的任何新概念。

Donkey Car3 – 不到250美元资金就能学习自动驾驶

学习驾驶Donkey Car的概念图。
绿色是初始的概念,蓝色的中间概念, 黑色是高层次的“完成”概念。

这是系列的第3部分。以下是第1部分和第2部分的链接。经过几天的挣扎,我终于让我的驴车在地下室的轨道周围自动驾驶!这里有一个简短的视频:

所以这就是让我失望的原因。当我将我的模型从我的Mac上传到Pi并运行“驱动器”命令时,加载模型时出错。我一直在重新运行这些步骤并得到了同样的错误。我花了几天才意识到我在Donkey Car上运行旧版TensorFlow(1.8)和更新版本我的MacBook Pro上的TensorFlow 1.12版本。我还在Donkey Car帮助Slack频道上发布了一个问题,他们在使用较新的TensorFlow版本1.12构建的模型上确认不会在较旧版本的TensorFlow上运行。一旦我弄清楚如何在我的Mac上降级TensorFlow(一线pip shell命令),我重新训练,用SCP将我的新模型转移到Pi,我的车开始运行……那是在我意识到我之后将相机镜头盖打开……

我从一个约16K图像的相对较小的训练集开始。TensorFlow 1.12的训练时间为55分钟,TensorFlow 1.8的时间为75分钟。1.8发布于2018年4月。让我们希望DonkeyCar图像很快升级,这样我们都可以利用这些性能改进!我也只是在赛道周围逆时针方向使用了一套测试装置。在真正的比赛中,我会用顺时针和逆时针方向训练赛车。但这也会增加构建模型的时间。

虽然汽车可以绕过轨道,但很容易被地板上的灯光和侧面的其他白色物体的反射所欺骗。这是因为我在地板上只使用了一条白色胶带。这对视觉系统来说还不够用。但是,我不认为我的妻子真的要我画一条宽大的黑色“道路”,中间有黄色条纹,就像官方的Donkey Car轨道一样。

当我终于让汽车在自动模式下工作时,它非常令人满意。但是也有点“怪异”。我实际上“教”了一个小大脑来跟随地板上的线。它几乎似乎模仿我糟糕的驾驶。它甚至学会了如何在直道上加速,并且在紧凑的曲线上减速。真的很酷!

虽然我在TensorFlow和Keras的工作中做过一些工作,但很多步骤都有点抽象。一旦我开始玩驴车,事情就更容易理解了。系统的优势及其弱点都变得清晰。我还意识到,在训练系统(我的MacBook)和推理系统(Pi)之间同步Python和TensorFlow库是一个关键步骤。

在完成所有步骤后,我现在了解了大部分组件,并且我正在构建一个“概念图”,其他人可以使用它来帮助理解他们需要知道什么概念才能让他们的Donkey Car运行。

我现在正在回顾我学到的所有步骤,并将这些步骤与我为当地CoderDojo俱乐部制作概念卡的先前工作相结合。这是博客文章顶部的数字。概念图中的每个方框最终将成为1/2张层压纸,正面有活动和问题,背面有答案。这些在CoderDojo中被称为“寿司卡”,因为它们是比特大小的学习点。以下是“电动机”概念卡的示例图像:

AI赛车联盟的电动概念卡。

我的朋友Jon Herke也有兴趣使用Donkey Cars建立一个“AI赛车联盟”,旨在教孩子们关于人工智能和机器人技术。请继续关注我们是否可以为hackdays建立一个基础和一个为期10周,每周4小时的夏令营类型计划。我们希望让女孩和弱势青年参与这些计划。如果您有兴趣帮助我们入门,请告诉我们。

Donkey Car2 – 构建,校准和生成培训数据

这是我组装的驴车。我所拥有的chasis不符合我订购的3D部分,所以我不得不用一些有机玻璃即兴创作。

这是关于Donkey Car的3部分系列的第2部分。这是第1部分第3部分。在第1部分中,我谈到了如何基于Raspberry Pi启动并运行新的Donkey Car,并使相机连接正常工作。我用RPi Cam Web界面测试了相机,并在我们家的一楼开车,以感受汽车的感觉以及它如何导航。

来自RPi Cam Web界面的示例图像

在这种模式下,Pi只是在Web服务器后面的便携式摄像机,将视频图像传输到其网页。RC汽车完全由汽车附带的2.4 Ghz控制器控制。要运行RPi Cam Web Interface软件,我只需打开Pi上的终端并从github站点下载代码。然后我运行了启动Web服务器的startup.sh脚本。

我感兴趣的是,相机拍摄的图像与网页上出现的图像之间有多大的延迟。延迟可以忽略不计,这让我只需通过观看网页上的图像来驾驶汽车。这意味着相机和Pi之间的输入/输出速度很快,因为图像通过WiFi芯片转换为Web浏览器。它基本上证明了Pi中有足够的马力来进行实时远程视频驱动。

然后我断开连接器与RC汽车附带的2.4GHz接收器,并将连接移动到我从亚马逊订购的伺服控制器。虽然这个伺服控制器板设计用于控制多达16个伺服系统,但我们只需要使用两个伺服系统。一次是速度,一次是转弯。我还必须将四条线从伺服控制器连接到Pi 40 Pin GPIO总线。这些连接的照片如下:

四条线用于在Pi和伺服控制器之间进行通信。黑色为地,红色为+ 5v,黄色和橙色线为SCL(时钟)和SDA(数据)。它们在伺服控制器上清晰标记,您可以看到Pi GPIO接口上的引脚分布。

下一步是转向和加速度计的校准。要做到这一点,我必须SSH到Pi并运行校准。这个过程有点棘手,因为许多电子速度控制器(ESC)有点不同。据记载毛驴车网站在这里。因为我的“停止”频率不正确,我仍然无法让汽车进入倒车状态。最终结果是我们有一个配置文件,可以编码油门的参数和汽车的转向。

一旦完成,我就准备开车绕过测试跑道了。令我妻子懊恼的是,我把地下室的家具搬到了房间的一侧,在地下室的地板上放了一些白色的电工胶带。我们在地板上放了一层很酷的环氧树脂涂层,但白色胶带的对比度很好。

我的驴车示例训练轨道

你还可以看到地板上灯光的很多反射。我们的训练过程必须学会忽略光反射,只能对地板上的白色胶带“注意”。注意力是深度学习的一个重要概念。

然后,我从墙上插头上取下了Pi,并使用我在亚马逊上购买的新型6800 mAH电源组为其供电。我用了一些磁带来固定平台下的电源组。我应该注意,来自ESC的GND和VCC导线确实为RC汽车中使用的2.4GHz接收器中的数字电路供电。然而,这个电流不足以为Pi供电。作为测试,我在Pi运行时将USP电流表连接到汽车上。结果如下图所示:

当前拍摄照片时,USB电流表显示Pi绘图约300mA的图像。在实践中,它的电流范围为300至500mA – 比ESP设计提供的电流大得多。

生成培训数据

一旦我们将所有汽车组装好,我们就可以生成训练数据集了。然后我做了一个SSH进入Pi并启动了驱动程序:

$ python manage.py drive

这是一个python程序,它启动一个Web服务器,显示摄像头上的内容,它还为您提供了一些捕获训练集的控件。一旦驱动程序开始,您可以转到任何Web浏览器并使用端口8887键入您的汽车的IP地址。现在是困难的部分。我不得不在赛道上开车10次以建立一个训练集!

问题是虽然我可以用键盘键控制汽车,但很难驾驶。我也试过网络界面“指针”,但这也很难引导。最后,我拿出手机,在手机浏览器中拉出了Donkey Car的网页。网络浏览器足够智能,可以检测到手机的前倾和侧向倾斜,并将其转换为速度和转弯。非常聪明!通过大约一个小时的练习,我可以绕过课程。然后我按下“开始录音”,大约10圈后我按下“停止录音”。完成此操作后,我可以通过SSH进入Donkey Car并将目录更改为“tub”文件夹。在该文件夹中有大约30K .jpg和.json文件。每个JSON文件都具有对图像的引用以及时间戳,加速和转向作为浮点数。这是我们的培训数据。

以下是JSON文件的示例:

{
“user / angle”:0.18989955357142868,
“user / throttle”:0.7175781250000001,
“user / mode”:“user”,
“cam / image_array”:“1000_cam-image_array_.jpg”,
“timestamp”:“2019-01- 05 17:09:35.184483“
}

这是与该JSON文件对应的图像:

样品160X120像素图像用于训练驴车

然后我将Donkey Car中的图像复制到我的笔记本电脑进行培训。我将在第3部分介绍

Donkey Car1 -用DIY机器人构建AI社区

用DIY机器人构建AI社区:第1部分 – 驴车

使用DIY机器人构建AI社区

这是关于Donkey Car的3部分系列中的第一部。以下是第2 部分第3 部分的链接。

我已经通过CoderDojo计划建立了用于教孩子计算机科学近四年的机器人。这是一次有益的经历,我学到了很多关于构建Arduino套件和简单机器人的知识。我一直在为8-18岁的孩子创造“学习阶梯”,而我的机器人则被5岁以下的儿童在The Works Museum使用。围绕DIY项目构建STEM课程很有趣,也是寻找社区的好方法。你可以在Moving RainbowCoderDojo Robots网站上看到我的一些工作。

随着新的一年,我决定扩展我的舒适区,包括基于Raspberry Pi,Python和机器学习的更复杂的机器人。我的朋友Arun Batchu也通过购买非常酷的NVIDIA Jetson Xavier开发套件来鼓励这一点。不幸的是,我的小机器人不足以运行这个价值90亿的晶体管系统。我认为这对我来说是一个很好的方式来了解最新的图像识别和边缘计算的热门话题。建立一个本地DIY机器人小组也是在明尼阿波利斯地区建立一个更强大的AI社区的一种方式。

对于那些不熟悉Donkey Car项目的人来说,它是一个开源DIY项目,让人们学习实时图像识别和一些AI的基础知识。这辆车的零件大约250美元。这比我的Arduino机器人贵10倍,但它也更强大。在湾区,有超过2,500人参加了DIY Robocars聚会,Donkey Car Slack工作区几乎有多少人在汽车,赛道,算法,机器学习模型和相关主题上有数千个帖子。我们在明尼苏达州还没有像这样的社区,但我希望改变这个!

以下是我开始制作驴车的工作日记。所以他们说…我们参加了比赛!

我在Swarm64的伟大人物的最后一次MinneAnalytics会议上“天赋”了一个Raspberry Pi 3 B + Kit,其中包括Paul McCullugh和Thomas Richter。Swarm64使用FPGA为RDBMS系统提供了出色的加速器。如果你需要一个更快的关系数据库给他们一个电话!

Raspberry Pi套件包括带有PI OS的32GB micro SD卡,电源砖,GPIO分线器以及外壳以及其他一些部件。我添加了一个27美元的SainSmart广角鱼眼摄像头和一个PCA9685 16通道12位PWM伺服电机驱动器以及一辆新的90美元RC车(我还没有测试过)。我使用GPIO使用Thonny Python IDE对LED进行了闪烁测试,并找到了用于控制LED灯条的DMA库。我还在圣路易斯公园的Microcenter购买了两张额外的32GB SD卡,每张 4.99美元。这比我在亚马逊上找到的要少。微中心真的很摇滚!我建议你买几张微型SD卡,这样你就可以进行备份了。

在Arduino的“C / C ++”工作多年之后,我对Pi开始的难度感到有些惊讶。有许多库需要以正确的顺序安装,需要考虑许多版本的Python。Thonney Python IDE很不错,但它缺少我们需要用TensorFlow认真工作的大多数库。好消息是,一旦库设置编码变得非常快。如果您正在使用物理设备进行硬件编程,那么当您对代码进行更改并且必须将其上传到Arduino时,就没有“滞后”。程序立即运行!我认为这可以加快开发速度,特别是当你有大型程序时。

现在进入Donkey Car … Donkey Car网站做得非常好,但它假设UNIX和Pi的背景非常强大。当他们发出指示时,我不清楚我应该在我的新Pi或远程计算机上运行。我花了大约两天时间试图让各种Python和TensorFlow库在Pi上本地工作。虽然我在进步中学到了很多东西,但事实证明这是一个死路一条。只有2GB或RAM的Pi太小了,无法在没有英雄努力的情况下编译庞大的TensorFlow-Keras系统。即使在具有16GB内存的Mac上,我也遇到了基于Bazel的TensorFlow编译系统的bug。Bazel构建框架本身非常复杂,您需要Bazel来编译TensorFlow怪物。做只是没有削减它。我正要放弃。如果像我这样拥有25年UNIX经验的人无法安装这个东西,我怎么能希望培养我14岁的学生呢?

然后我开始意识到,在Donkey汽车上完成的所有事情都假设了一个无头Pi(没有监视器,只是一个SSH访问),并使用他们的磁盘映像,这些映像由Linux和Pi专家精心制作了三年。你需要启动他们的Pi图像,其他一切都有效!你不能将Pi用作开发系统。TensorFlow文档确实这样说,但我没有RTFM。

我努力了解如何基于Donkey图像(包含磁盘映像的zip文件)为Pi构建启动映像。在尝试了NOOBS系统后,我意识到balenaEtcher应用程序正是我所需要的。该应用程序在Windows或Mac上使用非常简单。您只需从Donkey Car网站下载图像zip文件,将新SD卡放入并运行belenaEtcher应用程序。它会提示您输入图像文件(无需解压缩zip文件),它会自动找到SD驱动器然后我点击“Flash”。噗!在短短几分钟内,我就有了经过验证的磁盘映像。

重新启动新SD到我的Pi后,我可以登录并更改wifi设置。再一次重启,我准备好进入我的新驴车。我还设置了静态IP地址,因此每次都会重新连接到同一个IP地址。“/ home / pi / env”目录下的文件计数显示了近13,000个文件。如果你想的复杂细节我把它们放在一个启用评论,谷歌文档文件在这里。随意为该文件添加注释。

我将在发布更新时发布更新,并在其他部分到达后发布。我需要它们来做校准步骤。