CN116308998A - 基于cpu和gpu的任务处理方法、电子设备及存储介质 - Google Patents

基于cpu和gpu的任务处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN116308998A
CN116308998A CN202310334241.9A CN202310334241A CN116308998A CN 116308998 A CN116308998 A CN 116308998A CN 202310334241 A CN202310334241 A CN 202310334241A CN 116308998 A CN116308998 A CN 116308998A
Authority
CN
China
Prior art keywords
task
gpu
cpu
processed
algorithm model
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310334241.9A
Other languages
English (en)
Inventor
肖龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Changan Automobile Co Ltd
Original Assignee
Chongqing Changan Automobile Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing Changan Automobile Co Ltd filed Critical Chongqing Changan Automobile Co Ltd
Priority to CN202310334241.9A priority Critical patent/CN116308998A/zh
Publication of CN116308998A publication Critical patent/CN116308998A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

本申请提供一种基于CPU和GPU的任务处理方法、电子设备及存储介质。方法包括:CPU获取待处理任务对应的数据集,数据集包括摄像头采集的图像、雷达数据、地图数据、车辆的运动信息中的至少一种;CPU对数据集进行预处理,并将经过预处理的数据集发送至GPU;GPU调用与待处理任务对应的算法模型,并通过算法模型基于预处理的数据集,执行待处理任务,得到执行结果。如此,CPU和GPU协同执行任务时,可以根据不同的任务灵活调用算法模型,以实现多种类任务的执行,有利于提高任务的执行效率,能够改善现有的CPU和GPU协同执行的任务种类单一的问题。

Description

基于CPU和GPU的任务处理方法、电子设备及存储介质
技术领域
本发明涉及技术领域,具体而言,涉及一种基于CPU和GPU的任务处理方法、电子设备及存储介质。
背景技术
传统的数据处理通常利用CPU(Central Processing Unit,中央处理器)来计算;GPU(Graphics Processing Unit,图形处理器)通常做图像和图形相关运算。目前,存在CPU+GPU异构系统,以对传统数据和图像数据进行处理。然而,CPU+GPU异构系统能够执行的任务种类较为单一,无法实现多种类任务的执行。
发明内容
有鉴于此,本申请实施例的目的在于提供一种基于CPU和GPU的任务处理方法、电子设备及存储介质,能够改善CPU和GPU协同执行任务时,无法灵活实现多种类任务处理的问题。
为实现上述技术目的,本申请采用的技术方案如下:
第一方面,本申请实施例提供了一种基于CPU和GPU的任务处理方法,应用于具有CPU和GPU的电子设备,所述方法包括:
所述CPU获取待处理任务对应的数据集,所述数据集包括摄像头采集的图像、雷达数据、地图数据、车辆的运动信息中的至少一种;
所述CPU对所述数据集进行预处理,并将经过所述预处理的数据集发送至所述GPU;
所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果。
结合第一方面,在一些可选的实施方式中,所述CPU对所述数据集进行预处理,并将经过所述预处理的数据集发送至所述GPU,包括:
所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,M为大于1的整数;
所述CPU将经过所述预处理的数据集发送至所述GPU,以使GPU执行所述M个子任务。
结合第一方面,在一些可选的实施方式中,所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,包括:
当所述待处理任务为目标检测任务时,所述CPU对所述数据集中的初始图像进行下采样,得到多个不同下采样尺寸的中间图像;
所述CPU根据所有所述中间图像中的anchor总个数,将所有anchor划分为M组,以将所述待处理任务划分为M个子任务。
结合第一方面,在一些可选的实施方式中,所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果,包括:
所述GPU调用与所述目标检测任务的子任务对应的算法模型,以作为第一算法模型;
针对M组anchor中的每组anchor,通过所述第一算法模型选择置信度大于第一预设阈值的anchor以作为候选anchor;
通过所述第一算法模型对所述候选anchor进行解码,以得到所述候选anchor对应的位置数据;
根据解码得到的所述候选anchor对应的位置数据,通过非极大值抑制NMS算法计算交并比IOU;
将IOU大于等于第二预设阈值的位置数据进行剔除;
重复执行步骤将小于所述第二预设阈值的位置数据,通过所述NMS算法计算交并比IOU,并将IOU大于等于所述第二预设阈值的位置数据进行剔除,直至得到与每个子任务的待识别目标对应的最优anchor的位置数据;
对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果。
结合第一方面,在一些可选的实施方式中,对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果,包括:
对所述M个子任务各自的最优anchor的位置数据进行合并;
当合并所有最优anchor的位置数据后,若存在重叠的所述待识别目标,则对重叠的所述待识别目标对应的最优anchor的位置数据,通过所述NMS算法确定所述目标检测任务的最终anchor的位置数据,以作为所述执行结果。
结合第一方面,在一些可选的实施方式中,所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果,包括:
当所述待处理任务为轨迹预测任务时,所述GPU调用与所述轨迹预测任务对应的算法模型,以作为第二算法模型;
所述GPU根据所述数据集中车辆的运动信息,进行笛卡尔坐标与Frenet坐标的转换,或进行Frenet与笛卡尔坐标的转换,以进行坐标格式的统一,所述运动信息包括车辆的位置、行驶方向、车速及加速度;
所述GPU将统一坐标格式后的运动信息,输入所述第二算法模型,预估得到车辆在当前时间之后的预设时段内的行驶轨迹,以作为所述执行结果。
结合第一方面,在一些可选的实施方式中,所述方法还包括:
所述GPU通过加锁方式将所述执行结果发送至所述CPU。
结合第一方面,在一些可选的实施方式中,当存在多个待处理任务或多个子任务时,每个算法模型一一对应一个CUDA stream,以并行执行相应的任务。
第二方面,本申请实施例还提供一种电子设备,所述电子设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行上述的方法。
第三方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行上述的方法。
采用上述技术方案的发明,具有如下优点:
在本申请提供的技术方案中,由CPU收集数据集,并对数据集进行预处理,然后由GPU调用与待处理任务对应的算法模型,并通过所调用的算法模型根据预处理后的数据集来执行待处理任务。如此,CPU和GPU协同执行任务时,可以根据不同的任务灵活调用算法模型,以实现多种类任务的执行,能够改善现有的CPU和GPU协同执行的任务种类单一的问题。
附图说明
本申请可以通过附图给出的非限定性实施例进一步说明。应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备执行任务的流程示意图。
图2为本申请实施例提供的基于CPU和GPU的任务处理方法的流程示意图。
具体实施方式
以下将结合附图和具体实施例对本申请进行详细说明,需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号,附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请实施例提供一种电子设备可以包括处理模块及存储模块。存储模块内存储计算机程序,当计算机程序被所述处理模块执行时,使得电子设备能够执行下述任务处理方法中的相应步骤。
其中,处理模块可以包括CPU和GPU,CPU和GPU可以相互配合实现任务的协同处理。
在本实施例中,电子设备可以应用在汽车上,电子设备可以为汽车上的硬件系统。即,汽车可以利用电子设备中的CPU和GPU协同处理任务,在能够实现多种类任务灵活处理的同时,还有利于提高任务处理的效率。
请参照图1,CPU可以从摄像头、地图系统、雷达等数据源获取到相应的数据集,并对数据集进行预处理。GPU上可以部署有多个算法模型,比如,算法模型1、算法模型2、…、算法模型n等,n可以为大于2的整数。GPU可以通过调用相应的算法模型,来对CPU输入的经过预处理的数据执行任务,最后得到执行结果。其中,执行结果可以返回至CPU,由CPU进行后处理。
在本实施例中,在CPU上进行数据获取与处理算法的部署,可以包括:
将多个车载摄像头,采集到的图片进行数据融合补充的预处理,然后,再将预处理后的数据,送入GPU中的推理模型;
将多个毫米波雷达捕捉的雷达数据输入CPU,做障碍物识别;以及进行障碍物的交叉信息判断,重复识别的去重操作;
将动态地图和静态地图输入CPU,获取当前车的车速,加速度,航向角,当前路况红绿灯信息,融合信息;另外,车辆记录规矩信息,如道路的行驶准则;
GPS坐标系,与自车坐标系,frenet坐标,utm坐标的转换;全局定位采用GPS定位,自车行驶过程当中,以前进方向为横坐标,水平方向为纵坐标,随时更新车辆的自车坐标系;当需要在弯道上替换笛卡尔坐标时,先采用frenet坐标系,再进行frenet坐标与笛卡尔坐标的替换;在其他实施方式中,坐标的转换可以由GPU来实现;
行驶的历史轨迹跟踪;人与车目标跟踪,以及特征的历史记录,并开发Protobuf的数据个数转成CPPjson的数据格式。
在本实施例中,GPU上推理算法的部署,可以包括:目标检测基于深度学习算法(如深度卷积神经网络),进行人、车、障碍物等检测,以及利用车道线的语义分割算法,进行车道线的检测;部署LSTM算法,RASTER算法进行轨迹预测;其中,在高速道路上,场景更加适合LSTM算法进行轨迹预测;在城区更适合RASTER算法进行轨迹预测。
在电子设备中,可以将车道线信息,轨迹信息,速度,加速度等信息,在CPU上做预处理。CPU通过numcpp,再转成xtensor数据,底层调用cblas库作为向量化的计算。
对各个Xtensor直接分配CPU内存和GPU内存。从CPU拷贝到GPU进行计算。GPU以CUDA算子进行处理。Xtensor是支持广播和惰性计算的多维数组算法库,可以使用多维数组表达式进行数值分析。
请参照图2,本申请还提供一种基于CPU和GPU的任务处理方法,简称为任务处理方法。其中,该任务处理方法可以应用于上述的电子设备中,由电子设备执行或实现方法的各步骤,该方法可以包括如下步骤:
步骤110,所述CPU获取待处理任务对应的数据集,所述数据集包括摄像头采集的图像、雷达数据、地图数据、车辆的运动信息中的至少一种;
步骤120,所述CPU对所述数据集进行预处理,并将经过所述预处理的数据集发送至所述GPU;
步骤130,所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果。
在本实施例中,由CPU收集数据集,并对数据集进行预处理,然后由GPU调用与待处理任务对应的算法模型,并通过所调用的算法模型根据预处理后的数据集来执行待处理任务。如此,CPU和GPU协同执行任务时,可以根据不同的任务灵活调用算法模型,以实现多种类任务的执行,有利于提高任务执行效率,能够改善现有的CPU和GPU协同执行的任务种类单一的问题。
下面将对任务处理方法的各步骤进行详细阐述,如下:
在步骤110中,CPU可以周期性地收集汇总待处理任务对应的数据集。收集数据集的周期可以根据实际情况灵活设置。需要说明的是,针对不同的待处理任务,CPU所收集的数据集可以存在差异。
例如,当待处理任务为目标检测任务时,CPU收集的数据集可以包括摄像头拍摄的环境图像。目标检测任务可以是从环境图像中,检测其他车辆、行人、红绿灯等目标,可理解地,欲检测的目标可以根据实际情况灵活设置,这里不作具体限定。
当待处理任务为轨迹预测任务时,CPU收集的数据集可以包括雷达数据、地图数据、车辆的运动信息等。其中,运动信息可以包括车辆的行驶方向、车速、加速度、定位信息等。
在步骤120中,CPU在对数据集进行预处理时,针对不同种类的待处理任务,对应数据集的预处理方式可以存在差异。
例如,当所述待处理任务为目标检测任务时,作为一种可选的实施方式,步骤120可以包括:
所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,M为大于1的整数;
所述CPU将经过所述预处理的数据集发送至所述GPU,以使GPU执行所述M个子任务。
其中,所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,包括:
当所述待处理任务为目标检测任务时,所述CPU对所述数据集中的初始图像进行下采样,得到多个不同下采样尺寸的中间图像;
所述CPU根据所有所述中间图像中的anchor总个数,将所有anchor划分为M组,以将所述待处理任务划分为M个子任务。
在本实施例中,待处理任务可以根据需求,被划分成多个子任务,子任务数量M可以根据实际情况灵活设置,例如,M可以为2、3、4、5等数量。
初始图像可理解为摄像头拍摄的环境图像。下采样的倍数可以为8,16,32等倍数。
在将所有anchor划分为M组时,划分方式可以为均分的方式。若无法均分为M组,则可以在所有anchor中通过填充空值,来增加anchor,以使anchor的总数能整除M。
当所述待处理任务为目标检测任务时,步骤130可以包括:
所述GPU调用与所述目标检测任务的子任务对应的算法模型,以作为第一算法模型;
针对M组anchor中的每组anchor,通过所述第一算法模型选择置信度大于第一预设阈值的anchor以作为候选anchor;
通过所述第一算法模型对所述候选anchor进行解码,以得到所述候选anchor对应的位置数据;
根据解码得到的所述候选anchor对应的位置数据,通过非极大值抑制NMS算法计算交并比IOU;
将IOU大于等于第二预设阈值的位置数据进行剔除;
重复执行步骤将小于所述第二预设阈值的位置数据,通过所述NMS算法计算交并比IOU,并将IOU大于等于所述第二预设阈值的位置数据进行剔除,直至得到与每个子任务的待识别目标对应的最优anchor的位置数据;
对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果。
在本实施中,GPU上预先部署有多种算法模型,用于执行不同种类的任务。其中,第一算法模型可以是但不限于R-CNN算法模型、Yolo算法模型,可以用于目标检测、行为检测等。下述的第二算法模型可以是但不限于LSTM算法模型、RASTER算法模型,可以用于轨迹预测。
当然,GPU上还可以部署有其他算法模型。例如,GPU上还可以部署用于车道线检测的语义分割算法模型。
在本实施例中,Anchor可理解为针对图像中各目标的锚框。在中间图像中,所生成的锚框anchor的尺寸有大有小。在图像中生成anchor的方式为常规方式,这里不再赘述。通过步骤130的处理,目的是从大量的anchor中,针对每个目标选择一个最优的anchor。
需要说明的是,在中间图像的多个目标中,可能存在需要检测的目标,也可能不存在需要检测的目标。另外,置信度对应的第一预设阈值、交并比对应的第二预设阈值均可以根据实际情况灵活确定。
在本实施例中,对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果,包括:
对所述M个子任务各自的最优anchor的位置数据进行合并;
当合并所有最优anchor的位置数据后,若存在重叠的所述待识别目标,则对重叠的所述待识别目标对应的最优anchor的位置数据,通过所述NMS算法确定所述目标检测任务的最终anchor的位置数据,以作为所述执行结果。
作为一种可选的实施方式,步骤130可以包括:
当所述待处理任务为轨迹预测任务时,所述GPU调用与所述轨迹预测任务对应的算法模型,以作为第二算法模型;
所述GPU根据所述数据集中车辆的运动信息,进行笛卡尔(Cartesian)坐标与Frenet坐标的转换,或进行Frenet与笛卡尔坐标的转换,以进行坐标格式的统一,所述运动信息包括车辆的位置、行驶方向、车速及加速度;
所述GPU将统一坐标格式后的运动信息,输入所述第二算法模型,预估得到车辆在当前时间之后的预设时段内的行驶轨迹,以作为所述执行结果。
在本实施例中,方法还可以包括:所述GPU通过加锁方式将所述执行结果发送至所述CPU。
可理解地,GPU通过加锁的方式,将执行结果发送至CPU,可以避免发送的数据冲突而影响执行结果的正常传输,有利于提高数据传输的可靠性。CPU在收到执行结果后,可以对执行结果进行后处理。例如,CPU可以控制车辆的显示屏输出执行结果,若检测到的目标、在地图上显示预测的车辆轨迹等。
当存在多个待处理任务或多个子任务时,每个算法模型一一对应一个CUDAstream,以并行执行相应的任务。如此,有利于提高执行任务的效率。
下面将以待处理任务为目标检测任务和轨迹预测任务,分别举例阐述方法的实现过程,如下:
当待处理任务为目标检测任务时,CPU收集到的图像以800×800尺寸的初始图像为例,做retina目标检测。CPU以8,16,32倍对初始图像进行下采样,得到下采样尺寸是100×100,50×50,25×25的中间图像。其中,每个特征图(即中间图像)的像素点有6个aspect_rations,并且有两个尺寸。三个中间图像的anchor总个数为:
(100×100+50×50+25×25)×6×2=157500
在CPU上,若设置taskDim=4,也就是将目标检测任务划分为4个子任务,此时,相当于有4个并行的子任务。总共157500个anchor,可以均分成4个子任务进行处理,单个任务要处理的数据为39375个anchor。CPU在完成数据划分后,可以将每个子任务对应的数据(即39375个anchor)送入GPU进行处理。
GPU在接收到每个子任务对应的39375个anchor时,可以调用目标检测任务对应的算法模型来执行相应的子任务,该算法模型即为第二算法模型。然后,利用所调用的第二算法模型,根据每个anchor的置信度进行比较、统计与筛选。比如,选择置信度大于第一预设阈值的anchor以作为候选anchor。其中,筛选数据存储的结果位置可以为_dst,针对location数据和landmark数据的存放结构,在对应位置筛选即可。另外,第一预设阈值可以根据实际情况灵活确定,比如第一预设阈值可以为0.4。
然后,GPU基于第二算法模型对每个子任务的候选anchor,进行解码。解码可理解为计算每个anchor的位置坐标、宽高等信息。
接着,由GPU利用NMS算法,对图像中目标的候选anchor进行优化,使得每个目标仅对应一个anchor,以作为最优anchor。比如,直接查找最大置信度anchor的索引位置与置信值,并取出来赋值成256维度的向量。再与其他anchor的位置坐标计算IOU,对IOU大于等于第二预设阈值的再标记并删除所标记的anchor,然后再将剩余IOU小于第二预设阈值的这部分anchor数据,继续这样的操作,即,在剩余的anchor中,直接查找最大置信度的anchor,再与剩余的anchor中的其他anchor的位置坐标计算IOU,对IOU大于等于第二预设阈值的再标记并删除所标记的anchor,直至每个目标仅剩余1个anchor,以作为该目标的最优anchor。
最后,GPU进行多线程的结果同步与优化。上述目标检测任务被分成4个子任务后,每个子任务对应一个线程,以实现任务的并行处理,每个子任务的结果存储在NRAM,然后同步到GRAM。经过同步合并后,每个子任务的最优anchor合并后可能会产生重叠目标,这时候需要再次做NMS算法处理,使得同一个目标仅保留一个anchor,以作为该目标的最终anchor,也就是经过优化后的anchor。
由于存储结果的位置_dst是各线程都可以访问的信息,比如,在进行batch_size大小的统计时,若进行并发访问,则会出错。在本实施例中,对_dst中的数据的修改都是加锁的,然后再__sync_all同步,以避免并发访问出错。
在执行推理任务(如目标检测)时,GPU可以通过ONNX RUNTIME方式进行推理,后端可以利用CPU,以OPENVION,TENSORRT的方式进行后处理。即,先将推理的算法模型转成ONNX的形式。其中,ONNX RUNTIME主要用于ONNX模型的推理,本质是创建推理会话,定义模型图的输入节点和输出节点,再进行模型推理。
或者,在执行推理任务时,采用另一中推理方式。比如,GPU直接用TENSORRT的Nvinfer的方式进行推理。建立一个logger日志;创建一个builder;创建一个netwok,这时候netWork只是一个空架子;建立一个onnx模型的paser,用来解析模型文件的;建立engine,进行层之间融合或者校准方式,可以fp32、fp16或者int8;建立一个context,这个是用来做inference推断的。
在本实施例中,电子设备可以进行多batchsize的推理优化与动态batchsize的优化。一帧图像数据一帧图像数据送入推理模型是比较慢的过程。在本实施例中,可以将多帧图像叠加在一起,并送入推理模型,起到加速作用。比如,CPU可以采用2的整数幂倍数量帧(比如16帧,32帧,64帧,128帧,等等)的图像数据作为输入,不够的填充0或常数数据。或者,运行batchsize,根据硬件显存大小灵活调整输入图像帧的数量大小。
在本实施例中,电子设备可以为不同的算法模型分配不同的CudaStream_t流,各个流不互相影响,独立并行运行。算法模型本身的推理可以采用异构多线程推理。
当待处理任务为轨迹预测任务时,CPU可以进行动态地图的获取,如车辆位置,车道,隧道,收费站,匝道,导航信息等。另外,CPU还可以进行静态地图数据的获取,如获取路段信息,轨迹历史信息。CPU可以对历史轨迹信息进行拼接,以及对多个时刻的信息进行组合拼接。
在本实施例中,CPU或者GPU可以对车辆的坐标和周围车坐标进行转换,以将各个的坐标信息统一成相同的格式,然后,再送入GPU的轨迹预测算法模型中。
例如,在本实施例中,自车笛卡尔(Cartesian)坐标与frenet坐标的转换方式可以为:
Figure BDA0004155876600000091
Frenet坐标系表示为
Figure BDA0004155876600000092
Cartesian坐标系表示为:
Figure BDA0004155876600000093
在公式中,各参数的含义如下:
s表示Frenet纵坐标;
Figure BDA0004155876600000101
表示Frenet纵坐标对时间的导数,也即沿base frame的速度;/>
Figure BDA0004155876600000102
表示沿base frame的加速度;
l表示Frenet横坐标;
Figure BDA0004155876600000103
表示Frenet横向速度;
Figure BDA0004155876600000104
表示Frenet横向加速度;
Figure BDA0004155876600000105
表示Frenet横向坐标对纵向坐标的导数;
Figure BDA0004155876600000106
表示Frenet横向坐标对纵向坐标的二阶导;
Figure BDA0004155876600000107
表示为对应Cartesian坐标系下的坐标,是一个向量;
θx表示Cartesian坐标系下的朝向;
Figure BDA0004155876600000108
表示Cartesian坐标系下的加速度;
vx表示Cartesian坐标系下的线速度;
Figure BDA0004155876600000109
表示曲率;
kr表示:
Figure BDA00041558766000001010
kr'表示:/>
Figure BDA00041558766000001011
θr表示投影的速度与横轴的夹角;
xx表示笛卡尔坐标系下的横坐标;
xr表示投影点的横坐标;
yx表示笛卡尔坐标系下的纵坐标;
yr表示投影点的纵坐标。
Frenet坐标转换为笛卡尔坐标的方式可以为:
Figure BDA0004155876600000111
在坐标完成转换统一后,可以将统一后的数据输入第二算法模型,预估得到车辆在当前时间之后的预设时段内的行驶轨迹,以作为执行结果。预设时段可以根据实际情况灵活设置,比如为8秒、10秒等较短时长。
在本实施例中,执行的任务涉及预测(如轨迹预测),决策(如刹车决策),规划(如路径规划),控制(如油门控制)等,可以以Protobuf的数据格式进行传送。另外,可以将protobuf格式数据转出Json Value的格式进行存储。在获取数据的节点存在各个层级的信息处理,对此,可以将数据转成JsonCpp的格式。
电子设备可以以Numcpp和Xtensor作为数据的存储格式。获取的轨迹信息计算frenet的过程当中,可以以NUMCPP和Xtensor的方式进行加速计算。
不同算法分配不同CUDA stream,做并行算法推理。给每个模型建立不同的CUDAstream,进行不同的模型推理流处理。
在CPU窗口信息的删除与更新。保存8秒钟的轨迹信息。不断地删除最早的时间节点的数据,添加最新的时间节点的数据。
在执行任务过程中的前处理算子和后处理算子,可以通过对CUDA算子改写得到。在GPU上多核并行计算,采用每个核处理不同地址的数据,在以加锁方式将结果返回到CPU内存上。
在本实施例中,处理模块可以是一种集成电路芯片,具有信号的处理能力。上述处理模块可以是通用处理器。例如,该处理器可以是中央处理器、数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
存储模块可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器,可擦除可编程只读存储器,电可擦除可编程只读存储器等。在本实施例中,存储模块可以用于存储数据集、多类算法模型、第一预设阈值、第二预设阈值等。当然,存储模块还可以用于存储程序,处理模块在接收到执行指令后,执行该程序。
需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的电子设备的具体工作过程,可以参考前述方法中的各步骤对应过程,在此不再过多赘述。
本申请实施例还提供一种计算机可读存储介质。计算机可读存储介质中存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行如上述实施例中所述的任务处理方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现,基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本申请各个实施场景所述的方法。
综上所述,本申请实施例提供一种基于CPU和GPU的任务处理方法、电子设备及存储介质。在本方案中,由CPU获取数据集,并对数据集进行预处理,然后由GPU调用与待处理任务对应的算法模型,并通过所调用的算法模型根据预处理后的数据集来执行待处理任务。如此,CPU和GPU协同执行任务时,可以根据不同的任务灵活调用算法模型,以实现多种类任务的执行,能够改善现有的CPU和GPU协同执行的任务种类单一的问题。
在本申请所提供的实施例中,应该理解到,所揭露的装置、系统和方法,也可以通过其它的方式实现。以上所描述的装置、系统和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种基于CPU和GPU的任务处理方法,其特征在于,应用于具有CPU和GPU的电子设备,所述方法包括:
所述CPU获取待处理任务对应的数据集,所述数据集包括摄像头采集的图像、雷达数据、地图数据、车辆的运动信息中的至少一种;
所述CPU对所述数据集进行预处理,并将经过所述预处理的数据集发送至所述GPU;
所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果。
2.根据权利要求1所述的方法,其特征在于,所述CPU对所述数据集进行预处理,并将经过所述预处理的数据集发送至所述GPU,包括:
所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,M为大于1的整数;
所述CPU将经过所述预处理的数据集发送至所述GPU,以使GPU执行所述M个子任务。
3.根据权利要求2所述的方法,其特征在于,所述CPU对所述数据集进行预处理,以及将所述待处理任务划分为M个子任务,包括:
当所述待处理任务为目标检测任务时,所述CPU对所述数据集中的初始图像进行下采样,得到多个不同下采样尺寸的中间图像;
所述CPU根据所有所述中间图像中的anchor总个数,将所有anchor划分为M组,以将所述待处理任务划分为M个子任务。
4.根据权利要求3所述的方法,其特征在于,所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果,包括:
所述GPU调用与所述目标检测任务的子任务对应的算法模型,以作为第一算法模型;
针对M组anchor中的每组anchor,通过所述第一算法模型选择置信度大于第一预设阈值的anchor以作为候选anchor;
通过所述第一算法模型对所述候选anchor进行解码,以得到所述候选anchor对应的位置数据;
根据解码得到的所述候选anchor对应的位置数据,通过非极大值抑制NMS算法计算交并比IOU;
将IOU大于等于第二预设阈值的位置数据进行剔除;
重复执行步骤将小于所述第二预设阈值的位置数据,通过所述NMS算法计算交并比IOU,并将IOU大于等于所述第二预设阈值的位置数据进行剔除,直至得到与每个子任务的待识别目标对应的最优anchor的位置数据;
对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果。
5.根据权利要求4所述的方法,其特征在于,对所述M个子任务各自的最优anchor的位置数据进行合并,以得到所述执行结果,包括:
对所述M个子任务各自的最优anchor的位置数据进行合并;
当合并所有最优anchor的位置数据后,若存在重叠的所述待识别目标,则对重叠的所述待识别目标对应的最优anchor的位置数据,通过所述NMS算法确定所述目标检测任务的最终anchor的位置数据,以作为所述执行结果。
6.根据权利要求1所述的方法,其特征在于,所述GPU调用与所述待处理任务对应的算法模型,并通过所述算法模型基于所述预处理的数据集,执行所述待处理任务,得到执行结果,包括:
当所述待处理任务为轨迹预测任务时,所述GPU调用与所述轨迹预测任务对应的算法模型,以作为第二算法模型;
所述GPU根据所述数据集中车辆的运动信息,进行笛卡尔坐标与Frenet坐标的转换,或进行Frenet与笛卡尔坐标的转换,以进行坐标格式的统一,所述运动信息包括车辆的位置、行驶方向、车速及加速度;
所述GPU将统一坐标格式后的运动信息,输入所述第二算法模型,预估得到车辆在当前时间之后的预设时段内的行驶轨迹,以作为所述执行结果。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
所述GPU通过加锁方式将所述执行结果发送至所述CPU。
8.根据权利要求1-6中任一项所述的方法,其特征在于,当存在多个待处理任务或多个子任务时,每个算法模型一一对应一个CUDA stream,以并行执行相应的任务。
9.一种电子设备,其特征在于,所述电子设备包括相互耦合的处理器及存储器,所述存储器内存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述电子设备执行如权利要求1-8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-8中任一项所述的方法。
CN202310334241.9A 2023-03-29 2023-03-29 基于cpu和gpu的任务处理方法、电子设备及存储介质 Pending CN116308998A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310334241.9A CN116308998A (zh) 2023-03-29 2023-03-29 基于cpu和gpu的任务处理方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310334241.9A CN116308998A (zh) 2023-03-29 2023-03-29 基于cpu和gpu的任务处理方法、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116308998A true CN116308998A (zh) 2023-06-23

Family

ID=86837791

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310334241.9A Pending CN116308998A (zh) 2023-03-29 2023-03-29 基于cpu和gpu的任务处理方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116308998A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407179A (zh) * 2023-12-15 2024-01-16 成都凯迪飞研科技有限责任公司 一种基于协同处理的加速子卡处理方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407179A (zh) * 2023-12-15 2024-01-16 成都凯迪飞研科技有限责任公司 一种基于协同处理的加速子卡处理方法及系统
CN117407179B (zh) * 2023-12-15 2024-04-02 成都凯迪飞研科技有限责任公司 一种基于协同处理的加速子卡处理方法及系统

Similar Documents

Publication Publication Date Title
EP3759562B1 (en) Camera based localization for autonomous vehicles
US10437252B1 (en) High-precision multi-layer visual and semantic map for autonomous driving
CN111133447B (zh) 适于自主驾驶的对象检测和检测置信度的方法和系统
US10794710B1 (en) High-precision multi-layer visual and semantic map by autonomous units
US10872531B2 (en) Image processing for vehicle collision avoidance system
EP3707469B1 (en) A point clouds registration system for autonomous vehicles
CN108372857B (zh) 自主驾驶系统的通过事件发生和情节记忆回顾进行有效情景感知
US10471955B2 (en) Stop sign and traffic light alert
US11899458B2 (en) Identifying a route for an autonomous vehicle between an origin and destination location
EP3605390A1 (en) Information processing method, information processing apparatus, and program
JP2021516183A (ja) 自動運転車のためのポイントクラウドゴースト効果検出システム
CN111797187A (zh) 地图数据的更新方法、装置、电子设备和存储介质
CN116685874A (zh) 摄像机-激光雷达融合对象检测系统和方法
WO2020139961A1 (en) Distributed system task management using a simulated clock
JP7376992B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
KR20200095387A (ko) 협업 주행을 수행하는 자동차들로부터 획득된 주행 이미지들을 통합하는 방법 및 이를 이용한 주행 이미지 통합 장치
US20230222671A1 (en) System for predicting near future location of object
CN116308998A (zh) 基于cpu和gpu的任务处理方法、电子设备及存储介质
US20220028262A1 (en) Systems and methods for generating source-agnostic trajectories
CN112765302B (zh) 位置信息的处理方法、装置及计算机可读介质
US11397610B2 (en) Architecture for simulation clock-based simulation of distributed systems
CN116311114A (zh) 一种可行驶区域生成方法、装置、电子设备及存储介质
JP2022091474A (ja) 情報処理装置、情報処理方法、プログラムおよび車両制御システム
JP7261892B2 (ja) 占有格子地図管理装置
US20230296407A1 (en) Apparatus, method, and computer program for determining sections for map update

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination