赛事一览
路侧3D感知算法
  • 报名开始时间 2022-08-06
  • 报名结束时间 2022-10-07
  • 总奖金池 ¥1000000

一:项目概况

1、大赛介绍:

      数字经济时代,算法作为一种战略性科技要素已成为推进数字技术与实体经济深度融合的核心支撑。为发挥国家实验室作用,推动粤港澳大湾区大数据与人工智能算法生态体系建设,琶洲实验室(黄埔)受广州市黄埔区政府委托,自2022起创办《粤港澳大湾区(黄埔)国际算法算例大赛》(以下简称“大赛”),旨在打造大湾区首个以算法为主题的国际型竞赛,以此推动原始创新, 并带动数字经济的高质量发展。

     大赛以当前数字技术发展趋势和现实应用需求为牵引,面向全国遴选优质算法、汇聚全球高精尖技术、招揽国际算法高端人才。大赛坚持以科学性、引领性、实用性为原则,聚焦大数据、人工智能、物联网、云计算、元宇宙等新一代数字技术和互联网+、智能+等数字经济场景。 大赛采取每年聚焦不同主题的方式开展。首届算法大赛聚焦后深度学习时代AI 基础算法和智慧城市、智能制造等领域内的行业算法场景。

 

2、大赛赛程安排:

2022年8月6日-11月15日
07月20日:大赛开启预报名
08月06日10:00:大赛正式开赛,进行线上开发
10月07日12:00:截止提交结果

10月07日18:00-10月09日12:00:选手提交B榜成绩

10月09日12:00-10月10日18:00:B榜前25名进入初赛审核群,并提交成绩审核文件
10月11日-10月21日:进行成绩审核
10月26日:公布决赛名单
11月01日10:00-11月04日18:00:线上决赛训练及测试

11月05日10:00-11月06日18:00:提交审核文件

11月07日-11月15日:评测组评测及审核成绩

11月17日:公布最终答辩名单

 

3、大赛参赛人员

大赛面向全社会开放,个人、高等院校、科研单位、企业、创客团队等人员均可报名参赛;

每位选手仅能加入一支参赛队伍,每只队伍组队上限5人。

注:(1)大赛组织机构单位中除了擂台赛,涉及题目编写、数据接触的人员禁止参赛;
     (2)主办方和竞赛制赛道出题方可参赛,不参与排名。

 

“关于组队”

您需要以团队为单位来参与竞赛,即便您是单人参赛也需要创建一支队伍。

组队详情:点击https://www.cvmart.net/document


 

“关于平台使用”

此赛题属于线上全流程开发,如果您之前未使用过平台,请您先仔细阅读 《文档》(https://www.cvmart.net/document) ,遵照文档的说明进行操作能避免绝大部分新手问题,可以大大节省您的时间。

实操教程:

在线编码篇

https://www.bilibili.com/video/BV1TY4y1W7cV?spm_id_from=333.999.0.0&vd_source=e4649fd68df4b87a5edf4ef2a15b7e89
发起训练篇
https://www.bilibili.com/video/BV1AY4y1B7yT?spm_id_from=333.999.0.0&vd_source=e4649fd68df4b87a5edf4ef2a15b7e89
自动测试篇
https://www.bilibili.com/video/BV1TT4y1v7Kk?spm_id_from=333.999.0.0&vd_source=e4649fd68df4b87a5edf4ef2a15b7e89

 

“关于paddle对于dcu的教程”

https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/hardware_support/rocm_docs/index_cn.html

4、报名须知:

1)在琶洲实验室(琶洲)官方活动页面进行报名参赛,后登录极市平台进行下载数据集,线下开发后提交CSV预测结果文件;;

2)确保报名信息真实有效,一经发现,将取消参赛资格及激励;

3)参赛必读手册:https://www.cvmart.net/community/detail/6631

4)大赛官方微信群,扫码加入社群,及时获取大赛信息

 

二、赛制设置

1、竞赛制赛道介绍

      竞赛赛道瞄准行业领域发展的共性关键技术,聚焦智慧城市、智慧健康、智能制造、智慧金融等行业领域,开发优质算法,以人工智能技术作为推动力,实现革命性的产业创新。竞赛制赛道将由各领域的国内头部企业针对其发展的行业共性的“卡脖子”难题定义赛题任务,并提供真实场景数据,面向全球汇聚大数据与人工智能高精尖技术,招揽全球人工智能算法高端人才。

 

 

2、赛题介绍

本竞赛赛题聚焦路侧相机视角下的单目3D检测任务,参赛队伍基于百度公司提供的路侧图像数据及标注信息,设计单目3D检测算法,实现对路侧感兴趣区域内的障碍物目标类别、2D框、3D位置、长宽高、朝向等信息的预测。

 

3、赛题比赛规则

大赛分为初赛和决赛两个比赛环节。

 

- 线上初赛

初赛时间:2022年8月1日-10月07日

初赛形式:线上完成算法开发,对本赛题出题方提供的数据进行算法设计,并针对各个任务一次性提交结果,主办方进行评测并返回结果;数据集分为AB测试集,测试时间待公开;

初赛晋级规则:赛题的排行榜总分排名进行成绩审核代码,无作弊行为,前15名队伍进入决赛阶段。

初赛审核规则:初赛排行榜前20队伍,提供readme.md,里面包括了较详细的复现脚本命令说明文档。

提交邮箱:ruonan.zhang@extremevision.com.cn

初赛审核群:扫码添加极市小助手极小新企业微信进入初赛审核群

- 线上决赛 

决赛时间:2022年11月1日-11月15日

决赛形式:评测结果+线下答辩

决赛评选规则:

  • 参赛者需要选择初赛榜中的结果提交到决赛榜作为最后比赛成绩,决赛榜参与排名在线比赛结束后公布。
    注:每次最多可提交两个历史结果;可多次提交,但系统仅保留最后一次的提交记录。

 

4、注意事项

  • 初赛及决赛采用不同的测试集;

  • 本竞赛仅可使用比赛主办方提供的数据,其他任何数据,如公开数据集、合成数据、私有数据等不可参与模型训练,亦不可使用由其他数据训练出的网络参数;

  • 参赛者对训练数据的读取,算法设计及模型训练,测试数据的预测及结果提交均在大赛提供的线上平台完成,不允许通过线下方式上传除程序代码以外的任何数据到比赛平台。 

  • 初赛前20名及决赛前15名,同意主办方对其完整的训练与测试代码、模型参数以及详细的训练流程说明(包括GPU设置,数据使用情况、模型情况、训练参数设置、训练流程等)进行官方复现与测试,并能在合理的时间内完成复现。在主办方进行代码测试和复现过程中,相关的队伍有义务配合主办方进行代码复现(包括合成数据的复现)。不同意提供代码进行测试及复现的队伍、或不配合进行代码测试及复现的队伍,将被取消获奖资格,并进行官网通报及禁赛;

  • 各决赛参赛队伍提交的代码版权归主办方及各相应提供方所有;

  • 若发现有队伍存在违规作弊行为,决赛名额以及最终排名依照综合性能指标顺延;


    违规作弊行为包括但不限于:
    (1). 模型代码与文档描述不符
    (2). 提交代码无法复现出评测结果
    (3). 违规使用第三方数据进行训练
    (4). 违规使用预训练模型进行训练

  • (5).其它存在违反本次比赛规则的行为


一、背景及意义

      自动驾驶在帮助减少交通事故、提高交通效率方面发挥着至关重要的作用。而当前的感知系统主要为移动车辆配备激光雷达或车载摄像机传感器。自动驾驶车在行驶的过程中,车辆的感知系统不能长时间观察周围环境。此外,由于安装的传感器高度相对较低(通常在车辆顶部),感知范围相对有限,容易受到遮挡的影响。相反,从路边摄像头捕获的数据在遮挡鲁棒性和长时间大范围的预测方面具有其固有的优势,因为它们是从安装在距离地面几米高的杆子上的相机收集的。

      路侧感知的重要性如下:

(1)协同车载自动驾驶,实现车路协同。由于存在视野盲区,车载感知仍然面临安全挑战和不受控制的威胁。相反,路侧视图可以覆盖盲点,与车载视角相比有额外的优势:远距离全局视角,可在空间和时间上扩展车辆的感知场,并进行全局轨迹预测以确保安全。例如,在某个静止车辆后面行走的行人可能会突然撞上正在行驶的车辆,因为车辆传感器由于感知范围有限或严重遮挡而无法检测到环境的突然变化。相反,路侧视角能够及时进行行为预测。

(2)全局感知。现有视图数据集中更近的物体会遮挡更多物体(即使使用环视传感器),从而导致视野盲区。现在有了安装在头顶的路侧摄像头,可以看到不可见的区域。此外,由于路侧视图是全局感知的,因此当队列中有一辆死车时,可以通知自动驾驶汽车选择更快的车道。

  (3) 具有绿色低成本效益。在成本方面,通过协作感知和成本效益来确保安全是值得的,因为来自路边摄像头的信息可以广播到所有周围的自动驾驶车。

 (4)智能交通控制。路侧感知还有助于智能交通控制和流量管理。

 

     路侧单目3D检测与传统自动驾驶3D检测任务相比,本任务需要解决3个难点。首先,由于每个路侧相机具有不同的配置,例如相机内参数、俯仰角、安装高度,因此存在歧义性,这在很大程度上增加了单目3D检测任务的难度。其次,由于路侧相机安装在杆子上,而不在车顶的正上方,因此相机光轴与地面平行的假设不再成立,无法直接应用具有此先验的单目3D检测方法。第三,由于路侧视角下的感知范围更大,能观察到更多的物体,增加了感知系统的密度和难度。所有这些差异都表明了直接应用大多数现有的3D检测方法不可行。因此,需要将现有的单目3D检测方法改进后适配到路侧应用,提升感知精度。

                                                  图 1 相机视图

图1. (a) 车载相机前视图和 (b) 路侧相机俯视图。车端视角着重关注正面区域,而路侧相机拥有更大的观察范围。车辆在前视图中很容易被附近的物体遮挡,在路侧视图中可以缓解这种风险。例如,对于车端视图 (a),白色货车被黑色吉普车遮挡,而在路侧视图 (b) 中,它们都是可见的,对应于 (c) 中的白色和粉红色 3D 框。三角形标记表示同一辆安装激光雷达的车。

 

二、算法目标描述

提高算法在路端测试集上的单目3D目标检测精度。 

 

三、算法输入输出需求     

输入:图像输入:路端数据(图像),以及标定文件。

输出:路侧感兴趣区域内的障碍物目标类别、2D框、3D位置、长宽高、朝向等。

                                                    图 2 3D真值标签

 

四、参赛要求

本次比赛严格要求train from scratch,单纯比较算法能力,比赛要求如下:

1、本竞赛仅可使用比赛主办方提供的数据,其他任何数据,如公开数据集、合成数据、私有数据等不可参与模型训练,亦不可使用由其他数据训练出的网络参数

2、比赛阶段,每支队伍每天可在磅单上提交固定限制次数的评测,排名每天刷新,排名取各队伍历史最佳的成绩进行排序给出

3、进入决赛的队伍,需要向主办方提供完整的训练与测试代码、模型参数以及详细的训练流程说明进行官方复现与测试,并能在合理的时间内完成复现。在主办方进行代码测试和复现过程中,相关的队伍有义务配合主办方进行代码复现,无法提供代码进行测试及复现的队伍、或不配合进行代码测试及复现的队伍,将被取消获奖资格,其他队伍顺延

4、若发现有队伍存在违规作弊行为,违规作弊行为包括但不限于模型代码与文档描述不符、提交代码无法复现出评测结果、违规使用第三方数据进行训练、其它存在违反本次比赛规则的行为,决赛名额以及最终排名依照综合性能指标顺延

 

五、软硬件要求      

1、软件要求

Centos7.6、Jittor1.3.4.15、DTK21.10.1、Python3.8.3

CentOS7.6、PytTorch1.10.0、DTK22.04.1、Python3.7

CentOS7.6、PaddlePaddle2.2.2、 DTK22.04.1、Python 3.7

2、硬件要求

DCU 卡*1 CPU 8核 24G 内存 

基于jittor 框架曙光相关配置说明:

1.配置环境变量 export  HIP_VISIBLE_DEVICES=0

2.配置是否使用GPU 加速 jittor.flags.use_cuda=1 

 

关于此次大赛使用服务器说明:

  • 此次大赛采用国产算力作为平台支持资源,其宗旨是为了推广国产软硬件生态,所有选手将在同一起跑线出发,共同构建未来国产算法生态。如出现不熟悉算力环境的情况,可参阅参赛必读中的相关技术文档,也可查阅其他资料,大赛相关技术人员也会尽力解答所有问题,共同进步共同探索,也期待有大牛能分享相关经验。

  • 另外,百度赛题推荐使用飞桨框架,如果使用其他框架可能会涉及到算子适配问题,需要选手自行与硬件驱动层适配,可能难度较大,我们技术人员也会提供一些协助。但是涉及比赛公平性问题,技术协助不会过多。

  • 经过举办方测试,仅使用基础OP搭建网络即可完成比赛的研发工作,无需编译和安装第三方依赖库,另外本赛要求不能使用预训练权重和其他第三方数据,如果发现安装第三方依赖举办方审核无法复现即取消比赛成绩,请大家专注算法本身的技术研发(技术参考SMOKE,M3DRPN,RTM3D等单目3D检测方向的文章)

 

六、数据集说明     

1、采集设备

路侧数据采集传感器有两种,一种是安装在路灯杆上或红绿灯杆上的路侧相机,另一种是安装在停放或者行驶的车辆上的LiDAR,用于获取同一场景的3D点云。对于传感器同步,我们采用最近时间匹配策略找到图像和点云对,时间误差控制在5毫秒内。

 

lidar:

  • (1) HESAI Pandar 40P 40线激光雷达,采样帧率为10/20Hz,探测距离精度<=2cm,水平FOV 360◦ ,垂直FOV -25◦ ~+15◦ , 最大探测范围

  • (2) Jaguar Prime from Innovusion 300线激光雷达,采样帧率6-20hz,探测距离精度<=3cm,水平FOV 100◦,垂直FOV 40◦,最大探测范围

Cameras:传感器类型为1/1.8”CMOS,采样帧率为30-60hz,图像格式为RGB格式,按1920x1080分辨率压缩保存为JPEG图像.


 

2、标定和坐标系

数据集中使用了三个坐标系:世界坐标系(UTM Coord.)、相机坐标系以及激光雷达坐标系。为了获得准确的2D-3D 联合标注结果,需要在不同传感器之间进行校准。

 

首先,通过棋盘格检测来对相机进行标定获得相机内参数。然后通过车辆定位模块进行 Lidar坐标系到世界坐标系的校准。对于世界坐标到相机坐标系的校准,首先将包含车道和人行横道端点的高清地图投影到 2D 图像上进行匹配,获得初步变换矩阵,然后通过捆绑调整优化得到最终转换矩阵。最后将Lidar-to-World 和 World-to-Camera 转换矩阵相乘获得 Lidar-to-Camera 转换矩阵。得到三个坐标系之间的转换关系后,可以利用相机坐标系中的地面点 [x,y,z] 来拟合地平面,从而计算出地面方程G(α, β, γ, d),其中αx+βy+γz+d=0.

图2.数据采集和标注流程。标注平台的输入是路侧相机采集的图像,安装在停放或行驶车辆上的 LiDAR 扫描到的点云。通过多个传感器之间的校准和标定,得到了LiDAR、世界坐标系和相机坐标系之间的变换,以及地平面方程和相机内参。通过将点云投影到图像上并手动调整3D框位置来适配2D框 来进行2D-3D 联合标注。对于未被lidar扫描到的物体,仅在图像上进行2D补充标注。例如在(d)中,由于缺少3D点,一些物体只有白色的2D框标注没有3D彩色标注。

 

3、 数据标注

针对采样得到的路端相机数据和lidar点云数据,利用2D&3D联合标注技术,标注图像中道路障碍物目标的2D和3D框,同时标注障碍物类别、遮挡和截断等信息。

  • - 障碍物类别:一共4大类,包括小车、大车、行人、非机动车,细化为9小类,具体为:Car、Van 、Truck、Bus、Pedestrian、Cyclist、Motorcyclist, Barrow and Tricyclist.

  • - 障碍物截断:从[0, 1, 2]中取值,分别表示不截断、横向截断、纵向截断

  • - 障碍物遮挡:从[0, 1, 2]中取值,分别表示不遮挡、0%~50%遮挡,50%~100%遮挡

  • - 2D box:图像中2D bounding box框

  • - 3D box:3D bounding box, 基于相机坐标系,包括 (height, width, length, x_loc, y_loc, z_loc, orientation),其中orientation表示障碍物绕Y轴旋转角度.

  • 其中,每张图片都有对应txt格式的标注文件,如下所示:

  • Car 0 2 1.924 385.959 167.884 493.861 235.018 1.545 1.886 4.332 -16.361 -10.232 68.357 1.689

  • 第1个字符串:代表物体类别;

  • 第2个数:代表物体是否被截断;

  • 第3个数:代表物体是否被遮挡;

  • 第4个数:alpha,物体的观察角度,范围:-pi~pi,(在相机坐标系下,以相机原点为中心,相机原点到物体中心的连线为半径,将物体绕相机y轴旋转至相机z轴,此时物体方向与相机x轴的夹角);

  • 第5~8这4个数:物体的2维边界框(xmin,ymin,xmax,ymax);

  • 第9~11这3个数:3维物体的尺寸(高、宽、长),单位为米;

  • 第12~14这3个数:3维物体的位置(x、y、z),单位为米;

  • 第15个数:3维物体的空间方向:rotation_y,在相机坐标系下,物体的全局方向角(物体前进方向与相机坐标系x轴的夹角),范围:-pi~pi。

 

4. 数据文件结构

数据集

数据集介绍

train

训练集

denorm/xxx.txt

地平面在相机坐标系下的方程式

depth/xxx.jpg

图片对应的深度图

extrinsics/xxx.yaml

相机坐标系到世界坐标系的外参

image/xxx.jpg

路侧图像

label/xxx.txt

障碍物在像素坐标系上的二维标注和相机坐标系上的三维标注

train.txt

训练集的数据列表

calib/xxx.txt

相机内参

 

 

七、自动测试说明

Python接口

用户需要按照要求实现如下函数接口,发起测试时,系统会调用文件/project/ev_sdk/src/ji.py,并将测试图片逐次送入process_image接口。 接口实现范例如下:

import json
import cv2

def init():       # 模型初始化
    model = "您的深度学习模型"  ###开发者需要自行设计深度学习模型
    return model

def process_image(net, input_image, args=None):   
    dets = net(input_image)  
    '''
        假如 dets数据为
        dets = [['pedestrian', '0', '0', '1.9921350550721388', '783.46228', '256.193909', '807.102356', '305.991242', '1.501095', '0.443502', '0.599597', '-6.30840572763', '-7.24883889889', '74.6925154711', '1.90787668151'], 
                ['car', '0', '0', '-1.4957292038451553', '1513.208984', '221.756866', '1582.604248', '285.019531', '1.138008', '1.533378', '4.259202', '15.9548793918', '-6.77630765403', '61.575159005', '-1.24219284167'], 
                ['car', '0', '1', '1.819301750914212', '1047.92334', '258.272095', '1138.018677', '326.640473', '1.201635', '1.402634', '4.360323', '3.16898439105', '-5.66824359768', '61.0786524493', '1.87113893629']]
        数据含义与数据集中标注含义一致
       * 如需,可以在args参数中获取calib等参数文件,返回内容为文件路径:
            args = json.loads(args)
            calib = args.get('calib')
            denorm = args.get('denorm')
            extrinsics = args.get('extrinsics')
            depth = args.get('depth')
    '''
    result = {"model_data": {"objects": dets}}
    return json.dumps(result)

if __name__ == '__main__':
    predictor = init()
    original_image = cv2.imread('xxx.jpg')   # 读取图片
    result = process_image(predictor, original_image)
    print(result)

'''
ev_sdk输出json样例
{
"model_data": {
    "objects": [
        [
            "pedestrian",
            "0",
            "0",
            "1.9921350550721388",
            "783.46228",
            "256.193909",
            "807.102356",
            "305.991242",
            "1.501095",
            "0.443502",
            "0.599597",
            "-6.30840572763",
            "-7.24883889889",
            "74.6925154711",
            "1.90787668151"
        ],
        [
            "car",
            "0",
            "0",
            "-1.4957292038451553",
            "1513.208984",
            "221.756866",
            "1582.604248",
            "285.019531",
            "1.138008",
            "1.533378",
            "4.259202",
            "15.9548793918",
            "-6.77630765403",
            "61.575159005",
            "-1.24219284167"
        ],
        [
            "car",
            "0",
            "1",
            "1.819301750914212",
            "1047.92334",
            "258.272095",
            "1138.018677",
            "326.640473",
            "1.201635",
            "1.402634",
            "4.360323",
            "3.16898439105",
            "-5.66824359768",
            "61.0786524493",
            "1.87113893629"
        ]
    ]
    }
}
'''

八、评测标准

 

总指标Ropescore(结合mAP与4个相似度),分数越高排名约靠前:

其中分别设置为8与2。

AP为针对车辆、行人等不同类别目标,计算边框的尺寸、位置和置信度,基于不同的IoU阈值计算检测精度(Average Precision, AP),最终计算所有类别AP的平均值(mean Average Precision, mAP)。

除了mAP以外,为了便于对某个因素(例如方向)进行全面评估,我们将综合指标解耦为几个子指标还分别提供了细方向的误差评价方案。

 

  • 平均地面中心相似度(ACS):地平面上物体之间的距离表示碰撞的风险,因此我们通过将物体中心点投影到地平面上来计算地面欧氏距离:

  • 平均朝向角相似度(AOS):

  • 平均面积相似度(AAS):

  • 平均底面四点相似度(AGS):