700行Python代码做一辆无人驾驶车,感兴趣么?

各位毕老师的老铁们,真是抱歉了这么久没有更新,前一阵都在忙无人驾驶夏令营的事情,现在稍微闲下来一点更新一下。下面是无人驾驶夏令营的一个回顾视频,大家可以从中大概了解我们无人驾驶夏令营都做了些啥。 

http://v.qq.com/x/page/j05430sh05w.html

在视频中你可以看到我们把一个普通的遥控车改造成了一个可以通过摄像头识别道路进行无人驾驶的车。

 

 

这里的核心是在树莓派上面跑了一段深度学习的代码,将摄像头的数据进行分析预测接下来的行进方向。

 

我统计了一下全部的代码行数,包括控制模型车电机转动、采集照片数据、训练模型、实际预测等几个代码文件,总共约700行Python代码。这个量级的代码对比一些其它的项目可以说是非常少了,当然这少不了Keras的功劳。

 

事实上我们也不是第一个把遥控车改成树莓派控制的深度学习无人驾驶车,你在GitHub上可以找到一些其它的类似项目。不过大部分要么代码比较乱从而难梳理,要么功能比较复杂从而不适合初学者掌握。所以我们去掉所有其它非必要的功能模块,只留下核心的部分,让初学者能一目了然。

 

代码部分由以下5个文件组成:

  1. 车行驶控制(前进、后退、转向、停止)
  2. 车行驶及采集数据
  3. 照片数据格式转换
  4. 训练并生成深度学习神经网络模型
  5. 在实际道路使用训练好的模型实时预测并行驶

 

硬件部分主要由以下几个部分组成:

  1. 遥控车
  2. 树莓派
  3. 电机驱动板
  4. 树莓派摄像头
  5. 树莓派供电板
  6. 连接支架

 

 

这次无人驾驶夏令营反馈挺不错,学生们都学得相当认真,唯一的不足就是时间短了一些,有些内容没有展开来讲。

 

所以我准备把这个无人驾驶课程搬到线上来,十月份开课。目前计划是十一节课,涉及的内容包括树莓派基础、Linux基础、遥控车改造、树莓派GPIO控制、简单的电机控制、树莓派摄像头的使用、人工智能基础入门、Keras搭建深度学习神经网络、无人驾驶车调试等。

 

课程的形式将采用每周一次录播+每周一次直播答疑+日常微信群交流并且包含硬件材料,硬件材料会快递寄给你,我将会主讲除了人工智能以外的内容,人工智能部分我将请另外一到两位研究人工智能方向的清华博士生来讲解和答疑。

 

课程结束后会保证每个人都能从头开始制作完成一辆利用深度学习神经网络实现无人驾驶的车,你可以用它随意训练不同的赛道,而且由于代码量很少,我能保证你可以清晰地了解代码的每个部分都是干什么用的。

 

另外我还计划联合一些高校和企业在课程结束后一起办一次无人驾驶车大赛,希望让大家的作品能够在实际比赛中比试比试,看看谁的无人车模型调教得最好。

  

所以如果你对这个无人驾驶线上课感兴趣的话可以点击这个链接填个非常简单的表格,给我一些反馈,我将根据反馈来提前调整课程的细节。

 

好了下面扯一点最近的感想。

 

现在往大街上随便拉一个人问听没听过人工智能,TA90%的可能会说听过。然而,根据我在知乎和现实生活中的观察,人工智能科研圈和大众之间还存在比较深的gap,大众对人工智能其实还没有较好的认识。

 

典型的比如深度学习这个词,我最近参加一些活动发现很多人完全是根据字面意思随意发挥理解力,如果你知道深度学习的真正含义,你可以试试看问一个不了解神经网络的人这四个字是什么意思,很大可能TA会发挥想象力来解释。所以要弥补这个鸿沟,真正达成中国从国家层面设计的规划,还需要通过更多的教育,比赛来普及。

 

我个人其实一直都希望将最前沿科技的门槛降低,让更多的人可以接触甚至使用最新的技术。但是这里面要做的事情其实真的蛮难的,不是随便拉一个相关圈子里的科研人员就可以给你讲清楚的。科研人员为了追求更高的沟通交流效率,会默认交流的另一方是有基础的知识和经验的,因此会用很多术语,会略过很多基础知识的解释。然而面对没有基础的大众,这样的交流或者教学是肯定会出问题的。

 

我遇到过太多理工科的研究生讲课时是以开实验室例会的方式在讲,一不注意就会跳过一些基础内容的讲解并且陷入另一些对初学者没有太大意义的细节中去。这样的讲课方式可能适合实验室开例会,但对于很多零基础的同学可以说是相当不友好了。

 

因此要将最前沿的技术普及给更多的人,其实要花很大的功夫。我们需要将一些细节掰开来解释,同时把一些不必要细究的技术封装成简单的接口让初学者调用,哪些该讲哪些不该讲,这个度其实不容易把握。

 

一直以来我评价自己的一个点就是擅长在比较短的时间内入门一个新的工具并完成一项目标明确的任务,肯定达不到优秀的程度,但是完成一般的任务足够了。

 

其实从“道”的方面来说就是不畏难,敢尝试,走出你的comfort zone。我发现其实有不少人,如果遇到一项任务需要用到以前没学过的技能,第一反应是我不行,搞不定,交给别人吧,连试都不愿意试一下。但只要你保持一个好的心态去试一下你会发现很多事情要想入门真的没有想象中的难。

 

至于“术”的方面,有哪些方法就留着在我们的线上课里讲吧哈哈