本文转自雷锋网,如需转载请至雷锋网官网申请授权。需要处理的图像像素过多与芯片算力不足的矛盾,已经成为了当前制约自动驾驶发展的瓶颈之一。为了解决上述问题,事件相机与脉冲神经网络的结合或许会是一个可行的解决方案。卷积神经网络是目前图像目标检测算法的重要手段。以ResNet-152为例,一个152层的卷积神经网络,处理一张224*224大小的图像所需的计算量大约是226亿次,如果这个网络要处理一个1080P的30帧的摄像头,那么它所需要的计算量将高达每秒33万亿次,十分庞大。以当前典型的百度的无人车为例,计算平台约为800TOPS,其中1TOPS代表处理器可以每秒钟进行一万亿次操作。假设一个摄像头所需要的算力为33TOPS,更遑论无人车动辄配置十余个摄像头,以及多个激光雷达和毫米波雷达。为了准确检测行人并预测其路径,芯片往往需要多帧处理,至少是10帧,也就是330毫秒。这意味着相关系统可能需要数百毫秒才能实现有效探测,而对于一辆以60公里每小时行进中的车辆来说,330毫秒的时间就能行驶5.61米。如果为了保证足够的安全,将帧数增加到每秒30帧,图像数据很可能让自动驾驶芯片不堪重负。针对算力不足的问题,提高算力是业内玩家最容易想到的方法。然而,目前芯片的制程正在不断压缩,在极小尺寸下,量子遂穿效应逐渐显著,摩尔定律逐渐失效,芯片算力的提升也在面临巨大挑战。同时,算力的提高也伴随着功耗的提高,但在新能源的大背景下,分配给芯片的能量越多,续航能力就会受到越大的影响。算力与能耗正在逐渐成为自动驾驶发展的一对矛盾。那么我们能不能另辟蹊径呢?仿生学也许能给我们带来新的思路。对于人类来讲,在静止的画面中注意到运动物体并不难。对于青蛙来说,它甚至只能看到运动的物体,对静止的背景画面视而不见。针对生物这一特性,研究者们设计出一种事件相机。传统相机以固定帧率重复扫描整个场景,无论场景中是否有目标活动,均忠实的输出由一帧帧图片组成的视频流。毫无疑问,这种连续的视频流存在高度的信息冗余,大量无用的背景图片也被送入卷积神经网络进行运算。事件相机则不同,事件相机仅记录亮度“变化”的像素点。传统帧相机与事件相机输出的效果对比如下图所示,即传统的帧相机输出为整个视场的全部信息(左图),而事件相机只捕捉场景中运动的手臂,如(右图)所示。
基于重点关注运动目标这一特点,事件相机也许能在自动驾驶领域大展身手。由于事件相机剔除了静止的背景图片,所以每帧产生的数据量大大减少,达到几十kb的级别。相对于传统相机,事件相机还有高帧率、低功耗、高动态范围等优点:
传统相机
事件相机在自动驾驶领域,事件相机相对于传统相机具有巨大的优势,不过需要注意的是,事件相机无法提取出距离信息,需要激光雷达配合判断目标距离。或许会有人感到疑惑:事件相机这么好,为什么没有大量应用在自动驾驶领域呢?实际上,相机获取信息仅仅是第一步,后续事件相机信息的处理则是更为关键的一环。如下图所示,传统相机的输出是一帧帧的静止图片,而事件相机则是一个个事件(Event)流。
一般来说,目前的神经网络都专注于如何提取每帧静止图片中的行人、汽车等目标,如YOLO,resnet等算法。针对基于时间戳的事件流,目前尚无有效的算法进行目标识别。而事件流处理算法的缺失,与当前的神经网络结构是分不开的。当前主流的神经网络被称为第二代人工神经网络,以精确的浮点运算为基础,缺失了在自然界中最重要的一个因素:时间。对于神经网络而言,输出的结果会和输入一一对应,任何时候输入相同的图片,神经网络都会输出一样的结果。然而真实的大脑,是以这种浮点运算为基础的吗?显然不是,真实的大脑是以脉冲为基础的,以脉冲传递和处理信息。这种以脉冲传递为基础的神经网络是脉冲神经网络(spiking neural network,SNN),被誉为第三代人工神经网络。基于脉冲神经网络结构设计的芯片也被称为类脑芯片。脉冲发生的时刻携带着重要信息,脉冲神经网络天然具备对时序信息处理的能力,这与事件相机基于时间戳的事件流输出十分吻合。此外,脉冲神经网络还具有事件驱动、异步运算、极低功耗等特性。很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?
如标题所示,我正在尝试使用Rspec测试自定义验证器。我得到一个错误,我不明白为什么......如果你能阐明一些问题,我将非常感激。我们开始吧:验证者规范require'spec_helper'describeGraphDateValidatordoit"shouldnotvalidateactivitywithemptystarttime"doexpect{Graph.new({start_time:''}).valid?}.toeq(false)endend如果我打印Graph.new({start_time:''}).valid?它会打印false然而,当它通过规范时,它返回一个
我有这个ruby代码:defget_sumnreturn0ifn似乎正在为999之前的值工作。当我尝试9999时,它给了我这个:stackleveltoodeep(SystemStackError)所以,我添加了这个:RubyVM::InstructionSequence.compile_option={:tailcall_optimization=>true,:trace_instruction=>false}但什么也没发生。我的ruby版本是:ruby1.9.3p392(2013-02-22revision39386)[x86_64-darwin12.2.1]我还增加了机器的堆栈大
文章目录1.自动驾驶实战:基于Paddle3D的点云障碍物检测1.1环境信息1.2准备点云数据1.3安装Paddle3D1.4模型训练1.5模型评估1.6模型导出1.7模型部署效果附录show_lidar_pred_on_image.py1.自动驾驶实战:基于Paddle3D的点云障碍物检测项目地址——自动驾驶实战:基于Paddle3D的点云障碍物检测课程地址——自动驾驶感知系统揭秘1.1环境信息硬件信息CPU:2核AI加速卡:v100总显存:16GB总内存:16GB总硬盘:100GB环境配置Python:3.7.4框架信息框架版本:PaddlePaddle2.4.0(项目默认框架版本为2.3
我不确定如何为我的搜索功能添加自动完成表单。"get"do%>nil%>我有一个具有自定义操作的Controllerdefquery@users=Search.user(params[:query])@article=Search.article(params[:query])end模型如下:defself.user(search)ifsearchUser.find(:all,:conditions=>['first_nameLIKE?',"%#{search}%"])elseUser.find(:all)endenddefself.article(search)ifsearchArt