具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一值和第二值仅仅是为了区分不同的值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
电子设备执行目标检测(object detection),可以找出图像数据或点云数据中所有感兴趣的目标。例如目标检测可以包含目标定位和目标分类两个子任务,基于该两个子任务可以确定目标的类别和位置。
在电子设备进行目标检测的可能实现方式中,可以包括基于相机实现的目标检测,以及基于雷达实现的目标检测。
例如,基于相机的目标检测中,可以利用相机拍摄得到图像数据,进而电子设备可以识别图像数据中的目标。由于图像数据能够较为准确的反映物体的尺寸,识别图像数据得到的目标的平面信息是相对准确的,因此,通常的实现中,利用相机实现目标检测时,识别图像数据通常可以得到一个或多个平面框的信息,每个平面矩形框能够框定识别的一个目标。
例如,基于雷达的目标检测中,可以利用雷达获取三维点云数据,电子设备识别三维点云数据中的目标。由于雷达能够得到精准的速度位置信息,拥有较长的视野,识别的目标的深度信息是相对准确的,因此通常的实现中,利用雷达实现目标检测时,识别点云信息,通常可以得到一个或多个立体框的信息,每个立体框能够框定识别的一个目标,立体框能够反映目标的深度信息。
然而,在基于相机的目标检测中,因为通常输出的目标检测结果没有深度信息,在利用基于相机的目标检测结果进行避障或路径规划时,不能全面考量目标的立体形态,因此可能不能得到较好的策略。在基于雷达的目标检测中,当雷达位于杂波或地面起伏等环境中,雷达会受到杂波或地面起伏等的影响,导致点云绘制的平面信息不太准确,因此基于雷达的目标检测识别出的目标的效果较差。
综上所述,基于相机的目标检测中图像数据的深度信息的缺失,或者,基于雷达的目标检测中点云数据的平面信息的不准确性,导致基于相机或雷达得到的目标检测结果不准确。
因此,本申请实施例提供一种目标检测的方法,本申请提供一种目标检测方法和装置,可以利用图像数据得到点云数据,利用第一神经网络模型输出点云数据的第一三维信息时,第一三维信息中表示深度的信息较为准确,利用第二神经网络模型输出图像数据的二维信息时,该二维信息中表示平面的信息较为准确,根据图像数据的深度信息将二维信息转换为第二三维信息后,该第二三维信息中表示平面的信息也较为准确;在融合第一三维信息和第二三维信息中的相同目标时,让第一三维信息中用于表示图像数据深度的信息的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息的权重小于第二三维信息中用于表示图像数据平面的信息的权重,则可以结合第一三维信息和第二三维信息各自的优势,得到较为准确的目标检测结果,且该目标检测结果是三维结果,能更全面的反映目标的特征。
为了更好的理解本申请实施例的方法,下面首先对本申请实施例适用的应用场景进行描述。
可能的实现方式中,本申请实施例的目标检测方法可以应用于自动驾驶、安防或监控等场景。例如,在自动驾驶场景,可以基于本申请实施例的目标检测方法,实现对障碍物等目标的检测,进而基于目标检测结果制定自动驾驶策略等。例如,在安防或监控场景,可以基于本申请实施例的目标检测方法,实现对人物等目标的检测,进而基于目标检测对非法入侵等不安全因素进行告警等。
示例性的,在自动驾驶场景中,本申请实施例的目标检测方法可以应用于车辆,或车辆中的芯片等。
示例性的,图1示出了本申请实施例提供的一种车辆100的功能框图。在一个实施例中,将车辆100配置为完全或部分地自动驾驶模式。例如,当车辆100配置为部分地自动驾驶模式时,车辆100在处于自动驾驶模式时还可通过人为操作来确定车辆及其周边环境的当前状态,例如确定周边环境中的至少一个其他车辆的可能行为,并确定该其他车辆执行可能行为的可能性相对应的置信水平,基于所确定的信息来控制车辆100。例如,在车辆100处于完全地自动驾驶模式中时,可以将车辆100置为不需要与人交互,自动执行驾驶相关操作。
车辆100可包括各种子系统,例如行进系统102、传感器系统104、控制系统106、一个或多个外围设备108以及电源110、计算机系统112和用户接口116。可选地,车辆100可包括更多或更少的子系统,并且每个子系统可包括多个元件。另外,车辆100的每个子系统和元件可以通过有线或者无线互连。
传感器系统104可包括感测关于车辆100周边的环境的信息的若干个传感器。例如,传感器系统104可包括定位系统122(定位系统可以是GPS系统,也可以是北斗系统或者其他定位系统)、惯性测量单元(inertial measurement unit,IMU)124、雷达126、激光测距仪128以及相机130。传感器系统104还可包括被监视车辆100的内部系统的传感器(例如,车内空气质量监测器、燃油量表、机油温度表等)。来自这些传感器中的一个或多个的传感器数据可用于检测对象及其相应特性(位置、形状、方向、速度等)。这种检测和识别是自主车辆100的安全操作的关键功能。
定位系统122可用于估计车辆100的地理位置。IMU 124用于基于惯性加速度来感测车辆100的位置和朝向变化。在一个实施例中,IMU 124可以是加速度计和陀螺仪的组合。
雷达126可利用无线电信号来感测车辆100的周边环境内的物体。在一些实施例中,除了感测物体以外,雷达126还可用于感测物体的速度和/或前进方向。
激光测距仪128可利用激光来感测车辆100所位于的环境中的物体。在一些实施例中,激光测距仪128可包括一个或多个激光源、激光扫描器以及一个或多个检测器,以及其他系统组件。
相机130可用于捕捉车辆100的周边环境的多个图像。相机130可以是静态相机或视频相机。
控制系统106为控制车辆100及其组件的操作。控制系统106可包括各种元件,其中包括转向系统132、油门134、制动单元136、传感器融合算法138、计算机视觉系统140、路线控制系统142以及障碍物避免系统144。
计算机视觉系统140可以操作来处理和分析由相机130捕捉的图像以便识别车辆100周边环境中的物体和/或特征。物体和/或特征可包括交通信号、道路边界和障碍物。计算机视觉系统140可使用物体识别算法、运动中恢复结构(structure from motion,SFM)算法、视频跟踪和其他计算机视觉技术。在一些实施例中,计算机视觉系统140可以用于为环境绘制地图、跟踪物体、估计物体的速度等等。
路线控制系统142用于确定车辆100的行驶路线。在一些实施例中,路线控制系统142可结合来自传感器138、全球定位系统(global positioning system,GPS)122和一个或多个预定地图的数据以为车辆100确定行驶路线。
障碍物规避系统144用于识别、评估和避开或者以其他方式越过车辆100的环境中的潜在障碍物。
当然,在一个实例中,控制系统106可以增加或替换地包括除了所示出和描述的那些以外的组件。或者也可以减少一部分上述示出的组件。
车辆100通过外围设备108与外部传感器、其他车辆、其他计算机系统或用户之间进行交互。外围设备108可包括无线通信系统146、车载电脑148、麦克风150和/或扬声器152。
在一些实施例中,外围设备108提供车辆100的用户与用户接口116交互的手段。例如,车载电脑148可向车辆100的用户提供信息。用户接口116还可操作车载电脑148来接收用户的输入。车载电脑148可以通过触摸屏进行操作。在其他情况中,外围设备108可提供用于车辆100与位于车内的其它设备通信的手段。例如,麦克风150可从车辆100的用户接收音频(例如,语音命令或其他音频输入)。类似地,扬声器152可向车辆100的用户输出音频。
可能的实现方式中,在车载电脑148的显示屏中,还可以显示根据本申请实施例的目标检测算法跟踪得到的目标,使得用户可以在显示屏中感知车辆周围的环境。
无线通信系统146可以直接地或者经由通信网络来与一个或多个设备无线通信。
车辆100的部分或所有功能受计算机系统112控制。计算机系统112可包括至少一个处理器113,处理器113执行存储在例如数据存储装置114这样的非暂态计算机可读介质中的指令115。计算机系统112还可以是采用分布式方式控制车辆100的个体组件或子系统的多个计算设备。
处理器113可以是任何常规的处理器,诸如商业可获得的中央处理器(centralprocessing unit,CPU)。替选地,该处理器可以是诸如用于供专门应用的集成电路(application specific integrated circuit,ASIC)或其它基于硬件的处理器的专用设备。尽管图1功能性地图示了处理器、存储器、和在相同块中的计算机系统112的其它元件,但是本领域的普通技术人员应该理解该处理器、计算机、或存储器实际上可以包括可以或者可以不存储在相同的物理外壳内的多个处理器、计算机、或存储器。
在此处所描述的各个方面中,处理器可以位于远离该车辆并且与该车辆进行无线通信。在其它方面中,此处所描述的过程中的一些在布置于车辆内的处理器上执行而其它则由远程处理器执行,包括采取执行单一操纵的必要步骤。
在一些实施例中,数据存储装置114可包含指令115(例如,程序逻辑),指令115可被处理器113执行来执行车辆100的各种功能,包括以上描述的那些功能。数据存储装置114也可包含额外的指令,包括向推进系统102、传感器系统104、控制系统106和外围设备108中的一个或多个发送数据、从其接收数据、与其交互和/或对其进行控制的指令。
除了指令115以外,数据存储装置114还可存储数据,例如道路地图、路线信息,车辆的位置、方向、速度以及其它这样的车辆数据,以及其他信息。这种信息可在车辆100在自主、半自主和/或手动模式中操作期间被车辆100和计算机系统112使用。
用户接口116,用于向车辆100的用户提供信息或从其接收信息。可选地,用户接口116可包括在外围设备108的集合内的一个或多个输入/输出设备,例如无线通信系统146、车载电脑148、麦克风150和扬声器152。
计算机系统112可基于从各种子系统(例如,行进系统102、传感器系统104和控制系统106)以及从用户接口116接收的输入来控制车辆100的功能。例如,计算机系统112可利用来自控制系统106的输入以便控制转向单元132来避免由传感器系统104和障碍物避免系统144检测到的障碍物。在一些实施例中,计算机系统112可操作来对车辆100及其子系统的许多方面提供控制。
可选地,上述这些组件中的一个或多个可与车辆100分开安装或关联。例如,数据存储装置114可以部分或完全地与车辆100分开存在。上述组件可以按有线和/或无线方式来通信地耦合在一起。
可选地,上述组件只是一个示例,实际应用中,上述各个模块中的组件有可能根据实际需要增添或者删除,图1不应理解为对本申请实施例的限制。
在道路行进的自动驾驶汽车,如上面的车辆100,可以根据本申请实施例的目标检测方法跟踪其周围环境内的物体以确定自身对当前速度或行驶路线的调整等。该物体可以是其它车辆、交通控制设备、或者其它类型的物体。
除了提供调整自动驾驶汽车的速度或行驶路线的指令之外,计算设备还可以提供修改车辆100的转向角的指令,以使得自动驾驶汽车遵循给定的轨迹和/或维持与自动驾驶汽车附近的障碍物(例如,道路上的相邻车道中的车辆)的安全横向和纵向距离。
上述车辆100可以为轿车、卡车、摩托车、公共汽车、船、飞机、直升飞机、割草机、娱乐车、游乐场车辆、施工设备、电车、高尔夫球车、火车、和手推车等,本申请实施例不做特别的限定。
示例性的,图2为图1中的计算机系统112的结构示意图。
如图2所示,计算机系统112包括处理器113,处理器113和系统总线105耦合。处理器113可以是一个或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器(video adapter)107,显示适配器107可以驱动显示器109,显示器109和系统总线105耦合。系统总线105通过总线桥111和输入输出(I/O)总线耦合。I/O接口115和I/O总线耦合。I/O接口115和多种I/O设备进行通信,比如输入设备117(如:键盘,鼠标,触摸屏等),多媒体盘(media tray)121,(例如,CD-ROM,多媒体接口等)。收发器123(可以发送和/或接受无线电通信信号),摄像头155(可以捕捉静态和动态数字视频图像)和外部USB接口125。其中,可选地,和I/O接口115相连接的接口可以是通用串行总线(universal serial bus,USB)接口。
其中,处理器113可以是任何传统处理器,包括精简指令集计算(“RISC”)处理器、复杂指令集计算(“CISC”)处理器或上述的组合。可选地,处理器可以是诸如专用集成电路(“ASIC”)的专用装置。可选地,处理器113可以是神经网络处理器或者是神经网络处理器和上述传统处理器的组合。
可选地,在本文所述的各种实施例中,计算机系统可位于远离自动驾驶车辆的地方,并且可与自动驾驶车辆无线通信。在其它方面,本文所述的一些过程在设置在自动驾驶车辆内的处理器上执行,其它由远程处理器执行,包括采取执行单个操纵所需的动作。
计算机系统112可以通过网络接口129和软件部署服务器149通信。网络接口129是硬件网络接口,比如,网卡。网络127可以是外部网络,比如因特网,也可以是内部网络,比如以太网或者虚拟私人网络(VPN)。可选地,网络127还可以是无线网络,比如WiFi网络,蜂窝网络等。
硬盘驱动接口131和系统总线105耦合。硬盘驱动接口131和硬盘驱动器133相连接。系统内存135和系统总线105耦合。运行在系统内存135的软件可以包括计算机系统112的操作系统(operating system,OS)137和应用程序143。
操作系统包括壳(shell)139和内核(kernel)141。shell 139是介于使用者和操作系统之内核(kernel)间的一个接口。shell是操作系统最外面的一层。shell管理使用者与操作系统之间的交互:等待使用者的输入,向操作系统解释使用者的输入,并且处理各种各样的操作系统的输出结果。
内核141由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。直接与硬件交互,操作系统的内核141通常运行进程,并提供进程间的通信,提供CPU时间片管理、中断、内存管理、IO管理等等。
应用程序141包括控制汽车自动驾驶相关的程序,比如,管理自动驾驶的汽车和路上障碍物交互的程序,控制自动驾驶汽车路线或者速度的程序,控制自动驾驶汽车和路上其他自动驾驶汽车交互的程序。应用程序141也存在于软件部署服务器(deployingserver)149的系统上。在一个实施例中,在需要执行应用程序141时,计算机系统可以从deploying server149下载应用程序143。
传感器153和计算机系统关联。传感器153用于探测计算机系统112周围的环境。举例来说,传感器153可以探测动物,汽车,障碍物和人行横道等,进一步传感器还可以探测上述动物,汽车,障碍物和人行横道等物体周围的环境,比如:动物周围的环境,例如,动物周围出现的其他动物,天气条件,周围环境的光亮度等。可选地,如果计算机系统112位于自动驾驶的汽车上,传感器可以是摄像头,红外线感应器,化学检测器,麦克风等。
示例性的,图3为本申请实施例提供的一种芯片硬件结构的示意图。
如图3所示,该芯片可以包括神经网络处理器30。该芯片可以应用于图1所示的车辆中,或图2所示的计算机系统中。
神经网络处理器30可以是神经网络处理器(neural network processing unit,NPU),张量处理器(tensor processing unit,TPU),或者图形处理器(graphicsprocessing unit,GPU)等一切适合用于大规模异或运算处理的处理器。
在一些实现中,运算电路303内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
统一存储器306用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)305,被搬运到权重存储器302中。输入数据也通过DMAC被搬运到统一存储器306中。
总线接口单元(bus interface unit,BIU)310,用于DMAC和取指存储器(instruction fetch buffer)309的交互;总线接口单元301还用于取指存储器309从外部存储器获取指令;总线接口单元301还用于存储单元访问控制器305从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为On-Chip存储器。外部存储器独立于该NPU硬件架构。
示例性的,图4为本申请实施例提供的一种自动驾驶的场景示意图。
如图4所示,在自动驾驶场景中,自动驾驶车辆401可以根据其车辆的传感器,如相机、雷达等探测周围的物体。例如,自动驾驶车辆401可以识到其车辆周围的车辆4022、车辆4032、和限速标志4042等其他物体。
在自动驾驶场景中,自动驾驶车辆401可以利用相机拍摄周边物体,自动驾驶车辆中的处理器就可以利用本申请实施例中提供的目标检测方法,识别自动驾驶场景中的物体的目标,得到一个或多个目标对应的一个或多个立体框,每个立体框能够框定自动驾驶车辆401所识别的目标。示例性的,自动驾驶车辆401可以通过立体框4021框定车辆4022,通过立体框4031框定车辆4032,通过立体框4041框定限速标识4042。后续自动驾驶车辆401可以根据识别到的目标和车道数据等其他自动驾驶数据,规划自动驾驶路线,进而保证自动驾驶车辆401的正常驾驶。
示例性的,图5为本申请实施例提供的一种利用独立的计算设备进行目标检测的场景示意图。
示例性的,如图5所示,以独立的计算设备为服务器为例,该场景中可以包含:自动驾驶车辆501、无线广域网(wide area network,WAN)502、通信网络503和服务器504。
其中,自动驾驶车辆501中可以包含一个或多个相机,或者无线收发器等设备。自动驾驶车辆的无线收发器,能够与该场景中的无线WAN502交换数据并根据需要进行通信。示例性的,自动驾驶车辆501中的自动驾驶系统可以使用无线WAN502经由一个或多个通信网络503(如因特网),将自动驾驶车辆中相机拍摄得到的图像数据,或其他传感器接收到的其他数据传输到服务器504中进行处理。服务器504再将处理后的数据传输到自动驾驶车辆501的自动驾驶系统中,用于指导车辆的自动驾驶。其中,服务器504可以为一个或多个服务器。
下面对本申请实施例中所描述的词汇进行说明。可以理解,该说明是为更加清楚的解释本申请实施例,并不必然构成对本申请实施例的限定。
本申请实施例所描述的相机(camera,或者也可以称为摄像头)可以将物体通过镜头生成的光学图像投射到图像传感器表面上,然后转为电信号,经过数模转换后变为数字图像信号,数字图像信号可以在数字信号处理(digital signal processing,DSP)芯片中加工处理。示例性的,相机可以包括单目相机和双目相机等。
本申请实施例所描述的点云数据可以为:表示一个三维坐标系统中的一组向量的集合。这些向量通常以三维坐标(x维度,y维度和z维度)的形式表示,点云数据主要用来表示目标物体的外表面特性,点云数据中的每一个点中都包含有三维坐标。可以基于较多的点云数据得到目标的尺寸和目标的深度信息,进而结合该点云数据对应的图像数据的平面信息,得到较为准确的目标检测结果。
本申请实施例所描述的深度信息可以包括:表示场景中各点到相机平面的距离,能够反应场景中可见表面的几何形状。利用物体的深度信息和平面信息可以得到该物体的三维表示。
本申请实施例所描述的神经网络可以是:模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络模型需要利用大量样本进行训练,训练好模型后,就可以利用该神经网络模型进行预测。
本申请实施例所描述的三维重建(3D Reconstruction)可以包括:根据单视图或者多视图的图像数据重建三维信息的过程,三维重建技术可以把真实场景或物体刻画成适合计算机表示和处理的数学模型,以便在计算机环境下对其进行处理、操作和分析。三维重建技术的重点在于获取目标场景或物体的深度信息。在景物深度信息已知的条件下,只需要经过点云数据的配准和融合,就可以实现景物的三维重建。可能的实现方式中,基于深度相机的三维扫描和重建技术,重建出的三维模型通常较完整且真实度较高,因而得到了广泛的应用。
本申请实施例所描述的高精地图(high definition map,HD Map)可以是:面向机器的供自动驾驶汽车使用的地图数据。其可以更加精准的描绘道路交通信息元素,更加真实的反映出道路的实际情况。高精地图能够实现高精度的定位位置功能、道路级和车道级的规划能力、以及车道级的引导能力等能力。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图6为本申请实施例提供的一种目标检测方法的流程示意图,如图6所示,该方法包括:
S601、利用图像数据得到点云数据。
本申请实施例中,图像数据可以是用于执行本申请实施例的方法的设备或者装置,例如从相机(或摄像头)中获取的。
示例性的,相机可以周期性的拍摄得到图像数据,并将图像数据发送给用于执行本申请实施例的方法的设备或者装置,该设备或者装置可以利用图像数据得到该图像数据对应的点云数据。
示例性的,用于执行本申请实施例的方法的设备可以向相机发送拍摄图像的指令,相机可以在接收到拍摄图像的指令时,拍摄得到图像数据,并将图像数据发送给该设备,该设备可以利用图像数据得到图像数据对应的点云数据。
本申请实施例中,图像数据的数量可以是一个或者多个。利用图像数据得到点云数据的方法可以根据实际应用场景适应设置。其中,图像数据为二维的平面信息,点云数据为三维的立体信息。
示例性的,当图像数据的数量为单个时,利用图像数据得到点云数据的实现可以为,对图像数据进行明暗恢复形状(shape from shading,SFS)的处理,获取单个图像数据中物体表面的明暗关系;根据该明暗关系得到物体表面各像素点的相对高度信息或其他参数信息;利用图像数据中物体的参数信息和图像数据中物体的平面信息;恢复出单个图像数据的三维立体信息;得到该图像数据对应的点云数据。
示例性的,当图像数据的数量为多个时,利用图像数据得到点云数据的实现可以为:获取各图像数据中的特征区域(或指各图像数据中的某一物体对应的区域);根据提取的特征区域建立图像数据对之间的对应关系;利用图像数据对之间的对应关系和相机的参数信息计算图像数据所对应的三维立体信息;得到图像数据对应的点云数据。
可以理解的是,利用图像数据得到点云数据的实现还可以根据实际场景包括其他内容,本申请实施例中对利用图像数据得到点云数据的方式不做限定。
S602、利用第一神经网络模型输出点云数据的第一三维信息。
本申请实施例中,该第一三维信息包括用于表示图像数据中的至少一个第一目标的至少一个第一立体框的信息,第一立体框的信息包括用于表示第一立体框的位置的第一坐标;第一立体框用于框定第一坐标。其中,图像数据中的第一目标的数量可以为一个或多个,每个第一目标可以对应一个第一立体框。
示例性的,第一神经网络模型是根据点云样本信息训练得到的,利用点云样本数据训练第一神经网络模型的一种可能实现为:在待训练的神经网络模型中输入点云样本数据,利用待训练的神经网络模型输出预测三维信息,利用损失函数比较预测三维信息与真实三维信息的差距,当该模型输出的预测三维信息与真实三维信息的差距不满足损失函数,则调整该模型参数,继续训练;直到模型输出的预测三维信息与真实三维信息的差距满足损失函数,则模型训练结束,得到能够识别点云数据的第一神经网络模型。后续可以将点云数据输入到第一神经网络模型中,能够输出框定第一目标的第一立体框的信息,该第一立体框的信息包括用于表示该第一立体框的位置的第一坐标。
其中,该点云样本数据可以是对一定数量的点云进行标注得到的。利用第一神经网络模型识别出的第一三维信息中的第一目标的数量与第一神经网络模型的置信度相关。例如,第一神经网络模型的置信度越高,利用第一神经网络模型可以输出的第一三维信息中的第一目标的数量越多,并且识别出的第一目标的准确度越高。
可以理解的是,本申请实施例中对获取点云数据的方式不做限定。该预测三维信息可以为,利用待训练的神经网络模型,输出能够框定点云目标的预测的立体框的信息,该预测的立体框的信息包括用于表示该预测的立体框的位置的预测的三维坐标。
S603、利用第二神经网络模型输出图像数据的二维信息。
本申请实施例中,该二维信息包括用于表示图像数据中的至少一个第二目标的至少一个平面框的信息,该平面框的信息包括用于表示平面框的位置的坐标;该平面框用于框定第二目标。其中,图像数据中的第二目标的数量可以为一个或多个,每个第二目标可以对应一个平面框。
示例性的,第二神经网络模型是根据图像样本数据训练得到的,根据图像样本数据训练第二神经网络模型的一种可能实现为:在待训练的神经网络模型中输入图像样本数据,利用待训练的神经网络模型输出预测二维信息,利用损失函数比较预测二维信息与真实二维信息的差距,当该模型输出的预测二维信息与真实二维信息的差距不满足损失函数,则调整该模型参数,继续训练;直到模型输出的预测二维信息与真实二维信息的差距满足损失函数,则模型训练结束,得到能够识别图像数据的第二神经网络模型。后续可以将图像数据输入到第二神经网络模型中,能够输出框定第二目标的平面框的信息,该平面框的信息包括用于表示该平面框的位置的二维坐标。
其中,该图像样本数据可以是对相机拍摄得到的图像数据进行标注得到的,也可以是对图像数据库中获取的图像数据进行标注得到的。利用第二神经网络模型识别出的二维信息中的第二目标的数量与第二神经网络模型的置信度相关。例如,第二神经网络模型的置信度越高,可以利用第二神经网络模型输出的第二维信息中的第二目标的数量越多,并且识别出的第二目标的准确度越高。
可以理解的是,获取图像样本数据也可以根据实际应用场景包括其他内容,本申请实施例中对其他获取图像样本数据的方式不做限定。该预测二维信息可以为利用待训练的神经网络模型,输出能够框定图像目标的预测的平面框的信息,该预测的平面框的信息包括用于表示该预测的平面框的位置的预测的二维坐标。
S604、根据图像数据的深度信息以及图像数据的二维信息确定第二三维信息。
本申请实施例中,该第二三维信息包括用于表示图像数据中的至少一个第二目标的至少一个第二立体框的信息,该第二立体框的信息包括用于表示第二立体框的位置的第二坐标,第二立体框用于框定第二目标。
示例性的,将图像数据的二维信息转化为三维信息可以是根据该图像数据的深度信息和该图像数据的二维信息确定该图像数据对应的第二三维信息。相机拍摄得到的图像数据,由于相机能够准确的获得物体的尺寸,该图像数据的二维信息中的平面信息是相对准确的;因此,将利用图像数据的深度信息以及图像数据的二维信息,确定得到的图像数据对应的三维信息,该三维信息中的平面信息也是相对准确的。
S605、融合第一三维信息和第二三维信息中的相同目标,得到目标检测结果。
本申请实施例中,在融合第一三维信息和第二三维信息中的相同目标的过程中,第一三维信息中用于表示图像数据深度的信息(或称为深度信息)的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息(或称为平面信息)的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
本申请实施例中,相同目标表示第一三维信息中的第一目标与第二三维信息中的第二目标表示为同一个物体的目标。相同目标的数量可以为一个或多个,每个相同目标中包含一个第一目标和一个第二目标。
示例性的,可以利用第一三维信息中的第一目标与第二三维信息中的第二目标的交叠比例(或称交并比),确定第一三维信息中的第一目标和第二三维信息中的第二目标为相同目标。其中,交叠比例大于或等于设定的阈值。
第一三维信息中的第一目标与第二三维信息中的第二目标的交叠的部分越多(或理解为交叠比例越大),可以表明第一三维信息中的第一目标与第二三维信息中的第二目标指向的为相同目标。因此,可以在一三维信息中的第一目标与第二三维信息中的第二目标的交叠比大于或等于该阈值时,确定第一三维信息和第二三维信息中的相同目标。
在一种可能的实现方式中,在第一三维信息中的第一目标的数量为一个,第二三维信息中的第二目标的数量为一个时,可以在该第一目标与第二目标的交叠比例大于该阈值时,确定第一三维信息和第二三维信息中的相同目标。
在另一种可能的实现方式中,在第一三维信息中的第一目标的数量为多个,第二三维信息中的第二目标的数量为多个的情况下,可以将一个第一三维信息中的第一目标和一个第二三维信息中的第二目标进行组对,并分别计算每对第一目标和第二目标的交叠比例,将交叠比例大于或等于该阈值的每对第一目标和第二目标确定为相同目标,得到第一三维信息和第二三维信息中的相同目标。
可能的实现方式中,如果第一三维信息中的第一目标与第二三维信息中的第二目标的交叠比例小于该阈值时,则认为第一三维信息中的第一目标与第二三维信息中的第二目标对应的不是相同目标。
本申请实施例中,该目标检测结果可以为目标的三维信息,以及可选的用于表示目标的类型、位置、尺寸或速度等信息,目标检测结果中包含的第一三维信息和第二三维信息中的相同目标可以为一个或多个,本申请实施例对目标检测结果的具体内容和数量不做限定。在自动驾驶的场景中,该第一目标、第二目标或目标检测结果可以为识别出的车辆、行人、路标或障碍物等自动驾驶所需的数据。
示例性的,该融合第一三维信息和第二三维信息中的相同目标的过程可以为:对第一三维信息和第二三维信息中的各维度信息(包括x维度,y维度和z维度)赋予权重,利用两个三维信息中的各维度信息的加权,得到目标检测结果。其中,第一三维信息中用于表示图像数据深度的信息(z维度)的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息(x维度和y维度)的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
可以理解的是,该融合第一三维信息和第二三维信息的方法可以利用神经网络模型、数学模型、统计学方法或根据实际场景不同所利用的其他方法,本申请实施例中对融合第一三维信息和第二三维信息的方法不做限定。
本申请实施例中,第一三维信息是利用第一神经网络模型输出的第一目标的三维信息,该第一三维信息中的深度信息相对准确;第二三维信息是对二维信息进行转化后得到的三维信息,该第二三维信息中的平面信息相对准确。因此,在融合时,为了保证第一三维信息中深度信息的准确度,该第一三维信息中用于表示图像数据深度的信息的权重较大;为了保证第二三维信息中平面信息的准确度,该第二三维信息中用于表示图像数据平面的信息的权重较大,所以融合得到的目标检测结果能够同时结合两个三维信息的优势信息,可以得到较为准确的目标检测结果。
在图5对应的实施例的基础上,可能的实现方式中,S606包括:利用第三神经网络模型融合第一三维信息和第二三维信息中的相同目标,得到目标检测结果;其中,第三神经网络模型的损失函数中,第一三维信息中用于表示图像数据深度的信息的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
本申请实施例中,该第三神经网络模型的一种可能实现为,在待训练的神经网络模型中输入两种样本数据,两种样本数据可以分别为:对第一神经网络模型输出的数据进行标注得到的样本数据,以及对第二神经网络模型输出的数据叠加深度信息生成的数据进行标注得到的样本数据;利用待训练的神经网络模型输出两种样本数据的预测的融合结果;利用损失函数比较预测的融合结果与真实结果的差距,当该模型输出的预测的融合结果与真实结果的差距不满足损失函数,则调整该模型参数,继续训练;直到模型输出的预测的融合结果与真实结果之间的差距满足损失函数,则模型训练结束;得到能够输出较为准确的目标检测结果的第三神经网络模型。后续可以将第一三维信息和第二三维信息中的相同目标输入到第三神经网络模型中,能够输出融合两个三维信息中的相同目标后的目标检测结果。
示例性的,图7示出了一种获得目标检测结果的流程示意图。
本申请实施例中,如图7所示,将第一神经网络模型输出的第一三维信息,以及第二神经网络模型输出的二维信息进行三维转化得到的第二三维信息,输入到第三神经网络模型中,利用第三神经网络模型可以输出目标检测结果。
示例性的,该第一三维信息包括(X1Y1Z1,W1H1L1),X1Y1Z1为第一坐标,W1H1L1表示第一立体框的长宽高;第二三维信息包括(X2Y2Z2,W2H2L2),X2Y2Z2为第二坐标,W2H2L2表示第二立体框的长宽高。该损失函数loss可以满足下述公式:
loss=f((αX2+(1-α)X1),(αY2+(1-α)Y1),((1-β)Z2+βZ1),(αW2+(1-α)W1),(αH2+(1-α)H1),((1-β)L2+βL1)),其中0.5<α<1,0.5<β<1。
其中,α为第一三维信息表示平面信息(X1Y1,W1H1)以及第二三维信息中表示平面信息(X2Y2,W2H2)的权重;β为第一三维信息表示深度信息(Z1,L1)和第二三维信息中表示深度信息(Z2,L2)的权重。
示例性的,在该公式中,当第二三维信息中α的取值处于(0.5,1)的范围时,则对应的第一三维信息中的1-α的取值处于(0,0.5)的范围,此时表示第二三维信息中的平面信息(X2Y2,W2H2)所占的权重较高,进而说明了第二三维信息中的平面信息的准确度较高;当第一三维信息中β的取值处于(0.5,1)的范围时,则对应的第二三维信息中的1-β的取值处于(0,0.5)的范围,此时表示第一三维信息中的深度信息(Z1,L1)所占的权重较高,进而说明了第一三维信息中的深度信息的准确度较高。
基于此,利用神经网络模型融合第一三维信息和第二三维信息中的相同目标,就能够得到更加准确的目标检测结果。
在图6对应的实施例的基础上,可能的实现方式中,第三神经网络模型的损失函数与下述一项或多项相关:第一神经网络模型的置信度、第二神经网络模型的置信度、第一神经网络模型的输出结果与第一神经网络模型的真实样本的交并比、第二神经网络模型的输出结果与第二神经网络模型的真实样本的交并比、第一神经网络模型中数据的归一化数值或第二神经网络模型中数据的归一化数值。
本申请实施例中,第一神经网络模型的置信度可以为,利用第一神经网络模型输出预测的第一三维信息的准确率;第二神经网络模型的置信度可以为,利用第二神经网络模型输出预测的二维信息的准确率。例如,利用神经网络模型识别车辆,则置信度表示利用该神经网络模型识别出物体的分类为车辆的准确率。
示例性的,当第三神经网络模型的损失函数,与第一神经网络模型的置信度Ci以及第二神经网络模型的置信度Cp相关时,该损失函数loss满足下述公式:
loss=f((CiX2+(1-Ci)X1),(CiY2+(1-Ci)Y1),((1-Cp)Z2+CpZ1),(CiW2+(1-Ci)W1),(CiH2+(1-Ci)H1),((1-Cp)L2+CpL1)),其中0.5<Ci<1,0.5<Cp<1。
本申请实施例中,第一神经网络的输出结果与第一神经网络模型的真实样本的交并比可以理解为,利用第一神经网络模型可以输出的目标的预测立体框,真实样本中可以通过真实立体框框定样本中的目标,该交并比表示该预测立体框与该真实立体框的交叠比例;第二神经网络的输出结果与第二神经网络模型的真实样本的交并比可以理解为,利用第二神经网络模型可以输出的目标的预测平面框,真实样本中可以通过真实平面框框定样本中的目标,该交并比表示该预测平面框与该真实平面框的的交叠比例。
示例性的,当第三神经网络模型的损失函数,与第一神经网络模型的输出结果与第一神经网络模型的真实样本的交并比IoUi;第二神经网络模型的输出结果与第二神经网络模型的真实样本的交并比IoUp相关时,该损失函数loss满足下述公式:
loss=f((IoUiX2+(1-IoUi)X1),(IoUiY2+(1-IoUi)Y1),((1-IoUp)Z2+IoUpZ1),(IoUiW2+(1-IoUi)W1),(IoUiH2+(1-IoUi)H1),((1-IoUp)L2+IoUpL1)),其中0.5<IoUi<1,0.5<IoUp<1。
本申请实施例中,第一神经网络模型中数据的归一化数值表示为,对第一神经网络模型中输入的点云数据进行归一化处理的数值,使点云数据可以映射到一个特定区间内;第二神经网络模型中数据的归一化数值表示为,对第二神经网络模型中输入的图像数据进行归一化处理的数值,使图像数据可以映射到一个特定区间内。
示例性的,当第三神经网络模型的损失函数,与一神经网络模型中数据的归一化数值Ei,以及第二神经网络模型中数据的归一化数值Ep相关时,该损失函数loss满足下述公式:
loss=f((EiX2+(1-Ei)X1),(EiY2+(1-Ei)Y1),((1-Ep)Z2+EpZ1),(EiW2+(1-Ei)W1),(EiH2+(1-Ei)H1),((1-Ep)L2+EpL1)),其中0.5<Ei<1,0.5<Ep<1。
基于此,就可以利用损失函数和第三神经网络模型,得到更为准确的目标检测结果。
在图6对应的实施例的基础上,可能的实现方式中,S601包括:对图像数据进行三维重建,得到点云数据。
示例性的,该三维重建的步骤可以包括但不限于如下步骤:
S6011、利用相机采集图像数据。
本申请实施例中,相机可以为双目相机,双目相机可以采集得到不同角度的图像对数据,通过总线接口传输到自动驾驶车辆的处理设备中进行处理。其中,可以利用自动驾驶车辆的处理设备(如处理器)对图像数据进行处理,也可以利用服务器上独立的计算设备对相机拍摄得到的图像数据进行处理。
S6012、标定相机,获得相机的参数信息。
示例性的,对自动驾驶车辆中的双目相机进行标定时,可以采集多幅标定板图像数据,通过阈值分割找到标定板的内部区域;通过亚像素边缘提取方法得到标定板各个圆点的边缘,通过最小二乘圆拟合获取圆点的圆心坐标,确定圆心坐标与它们在图像数据中投影之间的对应关系以及标定板与相机之间大致的位置关系,为相机的外参初始值;调用Halcon库函数确定两个相机的内参数、外参数以及两个相机之间的相对位置关系;通过多次测量取平均值确定双目相机的相关参数信息。
S6013、对图像数据进行立体矫正。
示例性的,将从双目相机获取的图像数据校正为标准极线几何结构,并得到校正后的双目相机的相机参数。
S6014、图像数据预处理。
示例性的,预处理可以包括:把经过矫正后的彩色图像数据对通过加权平均法转化为灰度图像数据;进行直方图均衡化操作处理,使得图像数据的灰度分布趋向平均,图像数据所占有的像素灰度间距拉开,加大图像数据的反差,达到图像数据增强的目的;全局阈值分割,获取图像数据中感兴趣的区域。
S6015、立体匹配。
示例性的,通过极线约束及双目相机与目标物体的距离估计出的视差搜索空间,从而减少匹配的搜索范围;通过多重网格技术引进粗网格系列加速偏微分方程的收敛,提高匹配速度;通过细网格迭代,将残差从最细网格依次限制到粗糙的网格中,运用像素的灰度、梯度及平滑度相结合的相似度判断准则在粗网格搜索空间内寻找匹配点,得到视差值;将粗网格得到的视差值依次延拓到细网格,通过组合修正得到最终匹配点的视差值;按照以上步骤在整幅图像数据上进行遍历,直到得到完整连续的视差图。
S6016、点云重建。
示例性的,通过双目立体系统深度恢复原理,获取图像数据每个点的三维空间坐标,得到图像数据对应的点云数据;对点云数据进行基于移动最小二乘法的平滑滤波,获取平滑后的点云数据。
可以理解的是,对图像数据进行三维重建得到点云数据的方法也可以根据实际应用场景包括其他内容,本申请实施例中对其他可以对图像数据进行三维重建获取点云数据的方法不做限定。
基于此,就能够在自动驾驶的场景中,更加便捷的对自动驾驶车俩拍摄得到的图像数据进行处理,得到图像数据对应的点云数据。
在图6对应的实施例的基础上,可能的实现方式中,在自动驾驶过程中,可以利用单目相机拍摄一系列连续的图像数据,S604包括:获取自动驾驶过程中拍摄得到的图像数据的相邻图像数据;利用图像数据和图像数据的相邻图像数据计算图像数据的深度信息;融合图像数据的深度信息和图像数据的二维信息,得到第二三维信息。
本申请实施例中,单目相机可以是具有一个普通RGB摄像头的相机,其可以拍摄得到连续的图像数据。可以理解的是,该单目相机也可以为能够连续拍摄的拍摄设备,例如内置在车辆中的照相机等,本申请实施例中对单目相机的种类不做限制。
示例性的,可以利用单目相机拍摄得到的多个图像数据,以任一个图像数据和图像数据的相邻图像数据为例,计算图像数据的深度信息,过程可以包括:
根据图像数据和图像数据的相邻图像数据中的各图像数据的焦距和景深信息,获得像素点与单目相机镜头之间的距离范围和景深信息;对图像数据和图像数据的相邻图像数据进行对比匹配,对图像数据中显示为同一像素点建立映射关系;根据各图像数据的焦距、光圈、景深等信息,以及各图像数据的像素点与相机镜头之间的距离范围,通过平均值和其他方法计算出像素点与相机镜头间的准确距离;根据图像数据和图像数据的相邻图像数据进行对比匹配得到的清晰的像素点,以及像素点与相机镜头间的准确距离,从而获得图像数据中每个像素点的深度信息,后续融合图像数据的二维信息和图像数据的深度信息,可以得到第二三维信息。
其中,若图像数据和图像数据的相邻图像数据间的深度差值大于某个阈值时,可以通过差值及其他的转换处理算法进行深度信息的拟合。该景深信息表示,在拍摄图像数据的对焦过程中,通过镜头将在焦平面上清晰成像,所获得的包含图像数据的清晰的区间的信息。
该融合图像数据的深度信息和图像数据的二维信息可以为:对图像数据的二维信息中各像素点赋予该像素点对应的深度信息,得到第二三维信息。
基于此,就能够更加便捷的利用相机获取图像数据对应的三维信息。
在图6对应的实施例的基础上,可能的实现方式中,根据目标检测结果更新高精地图中的地标元素。
本申请实施例中,高精地图不仅可以描绘道路,还能够反映出每个道路中包含的车辆情况,能够更真实的反映驾驶过程中道路的实际样式。
示例性的,高精地图中的地标元素可以为标识地理位置的元素,该地标元素可以包括:每条车道和车道之间的车道线元素、道路标识牌元素、路灯元素、障碍物元素、绿化带元素等能够标识物体所在地理位置的地标元素。另外,高精地图中还可以包括更为丰富的道路信息元素,例如:道路形状以及每个车道的坡度、曲率、和侧倾的数据,每条车道和车道之间的车道线的样式,道路的限高情况,道路上的箭头和文字的内容等自动驾驶所需的道路信息元素。
利用本申请实施例中获得的目标检测结果,与高精地图中目标检测结果所在的位置相对照,可以更新高精地图中相应位置的地标元素。
基于此,将目标检测结果更新到高精地图中的地标元素后,就能够得到更为准确的高精地图,进而更加准确的指导车辆的自动驾驶。
在图6对应的实施例的基础上,可能的实现方式中,根据目标检测结果更新高精地图中的地标元素,包括:确定目标检测结果中用于表示地标的地标检测结果;确定地标检测结果在高精地图中的位置;根据地标检测结果在高精地图中的位置,在高精地图中添加地标。
本申请实施例中,确定目标检测结果中用于表示地标的地标检测结果可以为,在本申请实施例中获得的目标检测结果中,识别表示地标的地标检测结果。该识别地标检测结果的方式可以为,训练能够识别地标检测结果的神经网络模型,利用该神经网络模型识别目标检测结果中的物体的分类为地标的地标检测结果。该地标检测结果可以包括:该地标的位置信息和该地标的尺寸信息等其他类型的地标信息。
本申请实施例中,确定地标检测结果在高精地图中的位置可以为,确定地标检测结果的位置信息,将地标检测结果的位置信息与高精地图中的位置信息相对照,得到地标检测结果在高精地图中的具体位置。
本申请实施例中,根据地标检测结果在高精地图中的位置,在高精地图中添加地标可以为,若该地标检测结果在高精地图中所在的位置上不含有该地标元素,则在高精地图中添加该地标检测结果;若该地标检测结果在高精地图中所在的位置上含有地标元素,且高精地图中的地标与本申请实施例检测的地标结果不同时,可以用本申请实施例的地标检测结果替换高精地图中的地标。
基于此,将地标检测结果更新在高精地图所在的位置后,就能够得到更为实时和准确的高精地图,能够更加准确的指导车辆的自动驾驶。
在图6对应的实施例的基础上,可能的实现方式中,还包括:根据目标检测结果确定自动驾驶策略。
本申请实施例中,自动驾驶策略可以为,指导自动驾驶车辆运行的方式。其中,高精地图可以作为自动驾驶环节中确定自动驾驶策略的重要参考依据。
示例性的,自动驾驶策略可以包括:指导自动驾驶车辆拐弯、变道、变速、为其他车辆或行人让行等其他自动驾驶策略。
示例性的,当自动驾驶车辆检测到当前场景中的目标检测结果满足可以执行车辆变道的需求时,自动驾驶车辆将基于自动驾驶场景中车辆的实时变化情况,指示自动驾驶车辆执行变道策略。若在当前自动驾驶车辆在执行变道策略的过程中,自动驾驶车辆前方存在一个的忽然减速车辆,导致自动驾驶车辆无法继续满足自身的变道需求,则自动驾驶车辆可以放弃变道策略,在本车道线内继续驾驶。
示例性的,当自动驾驶车辆检测到当前场景中的目标检测结果显示,自动驾驶车辆前方有行人正在穿越道路时,自动驾驶车辆执行让行策略,停止行驶,等待行人穿行,等到行人穿越马路后,自动驾驶车辆继续行驶。
可以理解的是,自动驾驶策略根据实际场景的不同还包括其他内容,本申请实施例中对此不做限定。
基于此,目标检测结果能够识别出当前自动驾驶场景中复杂的道路情况,自动驾驶车辆就能够基于目标检测结果更加准确的进行自动驾驶。
通过上述对本申请方案的介绍,可以理解的是,上述实现各设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件单元。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
示例性的,图8为本申请实施例提供的一种目标检测装置,该目标检测的装置包括处理器800和存储器801。
处理器800负责管理总线架构和通常的处理,存储器801可以存储处理器800在执行操作时所使用的数据。
总线架构可以包括任意数量的互联的总线和桥,具体由处理器800代表的一个或多个处理器和存储器801代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。处理器800负责管理总线架构和通常的处理,存储器801可以存储处理器800在执行操作时所使用的数据。
本申请实施例揭示的流程,可以应用于处理器800中,或者由处理器800实现。在实现过程中,目标检测的流程的各步骤可以通过处理器800中的硬件的集成逻辑电路或者软件形式的指令完成。处理器800可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器801,处理器800读取存储器801中的信息,结合其硬件完成信号处理流程的步骤。
本申请实施例一种可选的方式,处理器800用于读取存储器801中的程序并以执行如图6所示的S601-S605中的方法流程。
图9为本申请实施例提供的一种芯片的结构示意图。芯片900包括一个或多个处理器901以及接口电路902。可选的,芯片900还可以包含总线903。其中:
处理器901可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器901可以是通用处理器、数字通信器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、MCU、MPU、CPU或者协处理器中的一个或多个。可以实现或者执行本申请实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
接口电路902可以用于数据、指令或者信息的发送或者接收,处理器901可以利用接口电路902接收的数据、指令或者其它信息,进行加工,可以将加工完成信息通过接口电路902发送出去。
可选的,芯片还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(NVRAM)。
可选的,存储器存储了可执行软件模块或者数据结构,处理器可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
可选的,芯片可以使用在本申请实施例涉及的目标检测装置中。可选的,接口电路902可用于输出处理器901的执行结果。关于本申请的一个或多个实施例提供的目标检测方法可参考前述各个实施例,这里不再赘述。
需要说明的,处理器901、接口电路902各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
如图10所示,本申请实施例提供一种目标检测的装置,所述装置包括至少一个处理单元1001。
本申请实施例还提供一种电子设备,在采用对应各个功能划分各个功能模块的情况下,该电子设备包括:处理单元,用于支持目标检测装置执行上述实施例中的步骤,例如可以执行S601至S605的操作,或者本申请实施例所描述的技术的其他过程。
当然,目标检测装置包括但不限于上述所列举的单元模块。并且,上述功能单元的具体所能够实现的功能也包括但不限于上述实例所述的方法步骤对应的功能,电子设备的其他单元的详细描述可以参考其所对应方法步骤的详细描述,本申请实施例这里不予赘述。
在采用集成的单元的情况下,上述实施例中所涉及的电子设备可以包括:处理单元、存储单元和通信单元。存储单元,用于保存电子设备的程序代码和数据。该通信单元用于支持电子设备与其他网络实体的通信,以实现电子设备的通话,数据交互,Internet访问等功能。
其中,处理单元用于对电子设备的动作进行控制管理。处理单元可以是处理器或控制器。通信单元可以是收发器、RF电路或通信接口等。存储单元可以是存储器。
进一步的,该电子设备还可以包括输入单元和显示单元。显示单元可以是屏幕或显示器。输入单元可以是触摸屏,语音输入装置,或指纹传感器等。
示例性的,处理单元1001,用于利用图像数据得到点云数据;处理单元,还用于利用第一神经网络模型输出点云数据的第一三维信息;第一三维信息包括用于表示图像数据中的至少一个第一目标的至少一个第一立体框的信息,第一立体框的信息包括用于表示第一立体框的位置的第一坐标,第一立体框用于框定第一目标。
处理单元1001,还用于利用第二神经网络模型输出图像数据的二维信息;二维信息包括用于表示图像数据中的至少一个第二目标的至少一个平面框的信息,平面框的信息包括用于表示平面框的位置的坐标;平面框用于框定第二目标。
处理单元1001,还用于根据图像数据的深度信息以及图像数据的二维信息确定第二三维信息;第二三维信息包括用于表示图像数据中的至少一个第二目标的至少一个第二立体框的信息,第二立体框的信息包括用于表示第二立体框的位置的第二坐标,第二立体框用于框定第二目标。
处理单元1001,还用于融合第一三维信息和第二三维信息中的相同目标,得到目标检测结果;其中,在融合第一三维信息和第二三维信息中的相同目标的过程中,第一三维信息中用于表示图像数据深度的信息的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
在一种可能的实现方式中,处理单元,具体用于利用第三神经网络模型融合第一三维信息和第二三维信息,得到目标检测结果;其中,第三神经网络模型的损失函数中,第一三维信息中用于表示图像数据深度的信息的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
在一种可能的实现方式中,第三神经网络模型的损失函数与下述一项或多项相关:第一神经网络模型的置信度、第二神经网络模型的置信度、第一神经网络模型的输出结果与第一神经网络模型的真实样本的交并比、第二神经网络模型的输出结果与第二神经网络模型的真实样本的交并比、第一神经网络模型中数据的归一化数值或第二神经网络模型中数据的归一化数值。
在一种可能的实现方式中,第一三维信息包括(X1Y1Z1,W1H1L1),X1Y1Z1为第一坐标,W1H1L1表示第一立体框的长宽高;第二三维信息包括(X2Y2Z2,W2H2L2),X2Y2Z2为第二坐标,W2H2L2表示第二立体框的长宽高;损失函数loss满足下述公式:
loss=f((αX2+(1-α)X1),(αY2+(1-α)Y1),((1-β)Z2+βZ1),(αW2+(1-α)W1),(αH2+(1-α)H1),((1-β)L2+βL1)),其中0.5<α<1,0.5<β<1。
在一种可能的实现方式中,处理单元,具体用于对图像数据进行三维重建,得到点云数据。
在一种可能的实现方式中,处理单元,具体用于获取自动驾驶过程中拍摄得到的图像数据的相邻图像数据;利用图像数据和图像数据的相邻图像数据计算图像数据的深度信息;融合图像数据的深度信息和图像数据的二维信息,得到第二三维信息。
在一种可能的实现方式中,处理单元,还用于根据目标检测结果更新高精地图中的地标元素。
在一种可能的实现方式中,处理单元,具体用于确定目标检测结果中用于表示地标的地标检测结果;确定地标检测结果在高精地图中的位置;根据地标检测结果在高精地图中的位置,在高精地图中添加地标。
在一种可能的实现方式中,处理单元,还用于根据目标检测结果确定自动驾驶策略。
如图11所示,本申请提供一种车辆,装置包括至少一个摄像器1101,至少一个存储器1102,以及至少一个处理器1103。
摄像器1101,用于获取图像,图像用于得到摄像头目标检测结果。
存储器1102,用于存储一个或多个程序以及数据信息;其中一个或多个程序包括指令。
处理器1103,用于利用图像数据得到点云数据;利用第一神经网络模型输出点云数据的第一三维信息;第一三维信息包括用于表示图像数据中的至少一个第一目标的至少一个第一立体框的信息,第一立体框的信息包括用于表示第一立体框的位置的第一坐标,第一立体框用于框定第一目标;利用第二神经网络模型输出图像数据的二维信息;二维信息包括用于表示图像数据中的至少一个第二目标的至少一个平面框的信息,平面框的信息包括用于表示平面框的位置的坐标;平面框用于框定第二目标;根据图像数据的深度信息以及图像数据的二维信息确定第二三维信息;第二三维信息包括用于表示图像数据中的至少一个第二目标的至少一个第二立体框的信息,第二立体框的信息包括用于表示第二立体框的位置的第二坐标,第二立体框用于框定第二目标;融合第一三维信息和第二三维信息中的相同目标,得到目标检测结果;其中,在融合第一三维信息和第二三维信息中的相同目标的过程中,第一三维信息中用于表示图像数据深度的信息的权重大于第二三维信息中用于表示图像数据深度的信息的权重,第一三维信息中用于表示图像数据平面的信息的权重小于第二三维信息中用于表示图像数据平面的信息的权重。
在一些可能的实施方式中,本申请实施例提供的目标检测的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序代码在计算机设备上运行时,程序代码用于使计算机设备执行本说明书中描述的根据本申请各种示例性实施方式的目标检测的方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本申请的实施方式的用于目标检测的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被通信传输、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由周期网络动作系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备。
本申请实施例针对目标检测的方法还提供一种计算设备可读存储介质,即断电后内容不丢失。该存储介质中存储软件程序,包括程序代码,当程序代码在计算设备上运行时,该软件程序在被一个或多个处理器读取并执行时可实现本申请实施例上面任何一种目标检测的方案。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
本申请结合多个流程图详细描述了多个实施例,但应理解,这些流程图及其相应的实施例的相关描述仅为便于理解而示例,不应对本申请构成任何限定。各流程图中的每一个步骤并不一定是必须要执行的,例如有些步骤是可以跳过的。并且,各个步骤的执行顺序也不是固定不变的,也不限于图中所示,各个步骤的执行顺序应以其功能和内在逻辑确定。
本申请描述的多个实施例之间可以任意组合或步骤之间相互交叉执行,各个实施例的执行顺序和各个实施例的步骤之间的执行顺序均不是固定不变的,也不限于图中所示,各个实施例的执行顺序和各个实施例的各个步骤的交叉执行顺序应以其功能和内在逻辑确定。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。