需要更换手机了:由 TensorFlow Lite 构建无人驾驶微型汽车

TsinghuaJoking 2020-10-17 00:00

今天在 Tensorflow公号看到推文Pixelopolis:由 TensorFlow Lite 构建无人驾驶微型汽车 ,作者介绍了他们在今年Google I/O大会上展示的TensorFlot Lite构建的无人驾驶微型汽车的展品:Pixcelopolis

▲ TensorFlow Lite构建的无人驾驶微型车


每辆微型汽车都装配有一部 Pixel 手机,使用手机上的摄像头检测和理解周围的信号。手机使用了 Pixel Neural Core 边缘计算芯片( Edge TPU 支持的机器学习),可感应车道、避免碰撞和读取交通标志。

相比于基于云计算来实现视频处理和物体检测,边缘计算可以减少延迟对控制的影响(也许在5G下延迟影响小一点)。

▲ 通过手机识别各种目标的Pixelpolis


下图是整个展品的布局,模仿了一个小型城镇广场周围的交通环境。参观者可以通过手机端的一个应用模拟“站点”来选择出现的目的地。展品中的微型车就可以驾驶到目的地,整个过程用户可以查看车辆周围以及所检测到的物体。

▲ 演示区的道路设计


车模所有对外界的感知都来自于微型车膜前面的手机摄像头,有它获取前方的图片并手机内部署的神经网络完成车道保持、停车定位、障碍检测等。通过手机底部的USB-C接口扩展来与底层控制板通讯,完成电机控制等。

▲ 手机应用程序与Pixelopolis交互


▲ 手机端可以查看车辆周围所检测到的物品


展品作者采取了与 论文:End-to-end Learning for Self-Driving Cars中相类似的技术录像,使用卷积神经网络(CNN)来检测每帧图像内的交通指示线,并给出方向盘的调整量。增加了LSTM利用前期拍摄的多个图像帧进行改进。

▲ CNN 模型的输入和输出


控制器的模型很简单,下面代码就给出了网络的结构构成。

net_in = Input(shape = (80, 120, 3))
x = Lambda(lambda x: x/127.5 - 1.0)(net_in)
x = Conv2D(24, (5, 5), strides=(2, 2),padding="same", activation='elu')(x)
x = Conv2D(36, (5, 5), strides=(2, 2),padding="same", activation='elu')(x)
x = Conv2D(48, (5, 5), strides=(2, 2),padding="same", activation='elu')(x)
x = Conv2D(64, (3, 3), padding="same",activation='elu')(x)
x = Conv2D(64, (3, 3), padding="same",activation='elu')(x)
x = Dropout(0.3)(x)
x = Flatten()(x)
x = Dense(100, activation='elu')(x)
x = Dense(50, activation='elu')(x)
x = Dense(10, activation='elu')(x)
net_out = Dense(1, name='net_out')(x)
model = Model(inputs=net_in, outputs=net_out)

一个神经网络是否能够达到很好的性能,关键在于如何准备好让它学习的训练样本。为此。作者使用Unity, Udacity来构建了模拟器,自动生成训练车辆的图像数据。

通过在轨道上设置多个路径点, 微型汽车 可以行驶到不同的地点,并从中收集数据。在此模拟器中,我们每 50 毫秒收集一次图像数据和转角数据。

▲ 模拟器中的轨道中上设有多个路径点


大家都知道,软件虚拟出的场景图片和实际拍摄到的图片会有很大的差别,包括光线、周围环境以及其他的噪声。为了使得训练的神经网络能够适应实际要求,需要对数据进行增强。

他们将以下变量添加到场景中:随机的 HDRI 球体(具有不同的旋转模式和曝光值)、随机的环境亮度和颜色以及随机出现的车辆。

▲ 各种环境下的数据增强


下图给出了经过训练之后,卷积神经网络的第一层对于输入图片的输出。可以看出,它已经能够很好地将图片中道路信息边缘信息能够很好的提取,对于背景可以进行有效的压制。

▲ 第一层神经网络的输出


使用神经网络进行控制的一个最大的问题,就是车模有时会出现莫名其妙的动作。比如下面这个场景,明明已经成功的拐过弯道,进入平坦顺直的道路,车模则抽风地冲出跑道了。

这主要是因为所训练的样本没有能够均匀包含各种道路情况,模型比较脆弱。

▲ 早期版本中玩具车偏离了轨道


为此,在场景中添加了各种形状的曲线,以丰富原来训练数据库中大多数的直线轨道数据。

▲ (左)方形轨道与(右)弯曲轨道


功夫不负有心人,修正数据集不均衡的问题后,车辆便开始能够在弯道处正确转向。

▲ 车辆在弯道可以成功转弯


似乎理性的增加数据可以提高车模的性能,但有时候仅仅采用小的技巧便可以解决大问题。比如当微型车模运行到展品边缘时,就会看到很多展台外面的场景。外面的场景多变,很难通过数据来表征这些变化。怎么办?

作者就用了一个字:

将输入图像的下面四分之一切出来,送入神经网络进行训练,就有效化解了上述的问题。

▲ 展品上的轨道,以及在展品边缘看到的图像


为了能够进行车辆定位以及检测其它干扰车辆,在手机Pixcel 4上的Neural Core Edge TPU上运行了 ssd_mobilenet_edgetpu 模型,这是来自 TensorFlow 目标检测模型库 。每帧检测时间仅用6.6毫秒,在实时应用中游刃有余。

为了是检测神经网络模型能够适应展品场景需要,作者同样使用了模拟器和真实场景中的数据来训练模型。为了提高检测鲁棒性,使用了 Unreal Engine 4 来随机生成物体和背景。使用 labelImg 工具进行对样本进行了手动标注。

▲ 进行目标识别的数据库


使用神经网络最大的工作量是在准备训练数据集合。之后的网络搭建和训练则非常容易,分分钟搞定。检查一下,网络识别交通标志的效果还是很不错的。

▲ 网络识别效果


最后一个工作,就是需要将网络部署到手机平台上。这需要借助于TensorFlow Lite 将模型进行个数转换,并在Android下编写相应的Python脚本来进行部署。

作者还设想着,通过视觉SLAM能够为他们的这个展品增加车辆全程定位。真的是一个手机平台可以练习很多算法。

▲ 视觉SLAM定位


为了实现一个顶着手机运行的微型车膜,作者也是费力不断改进机械结构,经过了五代设计最终得到了一个合理的机械设计。可以将手机、控制板、电池、电机等集成在一个小巧乖致的微型车模中。

▲ 第一代设计


▲ 第二代设计


▲ 第三代射击


▲ 第四代设计


▲ 第五代设计


下面给出了嵌入在车体内部的控制板、电机、电池等配件。

▲ 底层运动控制单片机板


▲ (左)屏蔽罩和电机,(右)电源插座、电源开关、电机启动按钮、电机重置按钮、开发板状态 LED、电机状态 LED


▲ 3000mAh 锂离子电池(左)与 18650 锂离子电池(右)


的确,一辆小小的微型车模,包括了计算机视觉、深度学习、传感器融合、定位、路径规划、控制、系统集成等多个学科内容。通过这个环节几乎可以将一个专业所需要学习的多个课程集成在一起。这不,在Udacity平台上,还真的提供了 无人驾驶汽车纳米学位项目 供希望获得全面培训的工程师和学生学习。

今天下午,教育部自动化类高等教学委员会在清华召开了院长会议,其中李少远老师对今年大学生学科竞赛实践教学进行了总结。以在刚刚过去的暑期中,新冠疫情影响下,成功举办的全国大学生智能车竞赛为例,探索面向未来实践发展。希望智能车竞赛为工科学生的大学期间专业课程实践提供更好的锻炼平台。

TsinghuaJoking 这是一个公众号,它不端、不装,与你同游在课下、课上。 卓晴博士,清华大学中央主楼 626A。010-62773349, 13501115467,zhuoqing@tsinghua.edu.cn
评论
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 367浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 165浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 75浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 730浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 92浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 196浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 130浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 148浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 199浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 151浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 216浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 722浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦