Apollo开发-ApolloScape数据集的下载和处理

数据准备

2.1 数据下载

训练集、测试集和脚本代码中分别有readme说明。

序号

名称

相关链接

说明

1

训练集

训练集下载链接

ApolloScape的训练数据集

2

测试集

测试集下载链接

ApolloScape的测试数据集

(分数榜单使用的数据集)

3

脚本代码

脚本代码下载链接

将ApolloScape数据集转换为KITTI数据集的脚本

将ApolloScape数据转换为record的脚本

2.2 adataset环境配置

adataset用于将apolloscape数据转化为apollo record格式,方便做端到端感知调试。

aem enter # 在application-perception目录下进入到容器内。如果已经在容器内,则不需要执行。

安装adataset

# 更新pip源

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

# 升级pip

python -m pip install --upgrade setuptools

# 安装adataset

pip install adataset

2.3 数据转化

在脚本代码中有apolloscape_to_records.py和apolloscape_to_kitti.py。

使用apolloscape_to_records.py将apolloscape转化成apollo records数据。


# -d表示apolloscape数据集。用a就好;

# -i表示数据数据集。这里目录就用训练集和测试集的目录;

# -o输出目录。注意:目录要提前创建好;

# -t类型。用rcd就好。

python scripts/apolloscape_to_records.py -d=a -i=train/ -o=train_records/ -t=rcd

使用apolloscape_to_kitti.py将apolloscape数据转化kitti格式,用于训练centerpoint模型。

注意:此步骤可在本地环境操作,不需要在容器中。本地需要具备pypcd库、numpy库和python2环境。

# --pcd_path: 点云数据路径,这里用的是pcl_pcd;

# --label_path: 标注结果。这里用的是detection_label;

# --output_path: 存放生成的数据,包括点云和标注两部分。

python2 scripts/apolloscape_to_kitti.py --pcd_path=train/pcl_pcd/ --label_path=train/detection_label/ --output_path=./kitti

Python2环境安装

  • https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html,安装miniconda;

  • 创建python2环境:conda create -n python2 python=2.7;

  • 切换到python2环境:conda activate python2;

  • 安装pypcd和numpy:

    • conda install numpy

    • pip install pypcd

  • 然后就可以使用上述命令将apolloscape数据集转化成kitti格式。

  以下为官方的教学课程,感兴趣的小伙伴上课学习吧~

 《Apollo开放平台9.0专项技术公开课》Apollo开发者社区_Apollo活动

《Apollo自动驾驶技术详解25讲》Apollo自动驾驶技术详解25讲_Apollo精品课

《自动驾驶新人之旅》自动驾驶新人之旅_Apollo精品课

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: import json from os.path import join import numpy as np# ApolloScape格式 apollo_ann_file = "./apollo_annotation.json"# Coco格式 coco_ann_file = "./coco_annotation.json"# 读取Apollo格式的注释文件 with open(apollo_ann_file) as f: apollo_ann = json.load(f)# 初始化Coco格式的注释文件 coco_ann = { "info": { "year": 2020, "version": "1.0", "description": "ApolloScape to Coco Conversion", "contributor": "ChatGPT", "url": "https://github.com/openai/chatgpt" }, "images": [], "annotations": [], "categories": [] }# 遍历ApolloScape格式的注释文件 for image_info in apollo_ann['images']: # 构建Coco格式的图像信息 image_id = image_info['id'] image_width = image_info['width'] image_height = image_info['height'] coco_image_info = { "id": image_id, "width": image_width, "height": image_height } coco_ann['images'].append(coco_image_info) # 构建Coco格式的标注信息 for label_info in image_info['labels']: category_id = label_info['category_id'] bbox = label_info['box2d'] coco_annotation_info = { "image_id": image_id, "category_id": category_id, "bbox": [bbox['x1'], bbox['y1'], bbox['x2'] - bbox['x1'], bbox['y2'] - bbox['y1']], "area": (bbox['x2'] - bbox['x1']) * (bbox['y2'] - bbox['y1']) } coco_ann['annotations'].append(coco_annotation_info)# 构建Coco格式的类别信息 for category_info in apollo_ann['categories']: category_id = category_info['id'] category_name = category_info['name'] coco_category_info = { "id": category_id, "name": category_name } coco_ann['categories'].append(coco_category_info)# 将Coco格式的注释文件写入文件 with open(coco_ann_file, "w") as f: json.dump(coco_ann, f) ### 回答2: 实现ApolloScape数据集格式转换为COCO数据集格式的代码如下: ```python import json from PIL import Image # 读取ApolloScape数据集标注文件 with open('apollo_annotation.json', 'r') as f: apollo_data = json.load(f) # 创建COCO数据集格式的字典 coco_data = { "info": {}, "licenses": [], "images": [], "annotations": [], "categories": [] } # 遍历ApolloScape数据集的每个图像 for image_data in apollo_data['images']: image_id = image_data['id'] image_name = image_data['file_name'] image_file = f'apollo_images/{image_name}' # ApolloScape图像文件夹路径 # 读取图像尺寸 image = Image.open(image_file) width, height = image.size # 添加图像信息到COCO数据集字典中 coco_data['images'].append({ 'id': image_id, 'file_name': image_name, 'width': width, 'height': height }) # 遍历ApolloScape数据集的每个标注 for annotation in apollo_data['annotations']: if annotation['image_id'] == image_id: category_id = annotation['category_id'] bbox = annotation['bbox'] area = bbox[2] * bbox[3] # 添加标注信息到COCO数据集字典中 coco_data['annotations'].append({ 'id': annotation['id'], 'image_id': image_id, 'category_id': category_id, 'bbox': bbox, 'area': area, 'iscrowd': 0 }) # 保存COCO格式数据集为JSON文件 with open('coco_annotation.json', 'w') as f: json.dump(coco_data, f) ``` 此段代码通过读取ApolloScape数据集的标注文件,将其转换为COCO数据集格式的字典,然后保存为JSON文件。代码首先读取ApolloScape数据集的标注文件,然后创建一个COCO数据集格式的空字典。接着遍历每个ApolloScape数据集中的图像,读取图像的尺寸,并将图像信息添加到COCO数据集字典中。然后遍历每个标注,找到与图像ID匹配的标注,获取标注的类别ID、边界框、面积等信息,并将标注信息添加到COCO数据集字典中。最后将COCO格式的数据集字典保存为JSON文件。 ### 回答3: import json from PIL import Image # 读取ApolloScape标注文件 with open('annotations.json', 'r') as f: annotations = json.load(f) coco_data = { "info": {}, "licenses": [], "images": [], "annotations": [], "categories": [] } # 添加categories category_mapping = {} # 用于记录类别映射关系 for i, category in enumerate(annotations["categories"]): category_mapping[category["id"]] = i + 1 coco_data["categories"].append({"id": i + 1, "name": category["name"], "supercategory": ""}) # 转换images和annotations for image in annotations["images"]: img = Image.open(image["file_name"]) width, height = img.size coco_data["images"].append({ "id": image["id"], "file_name": image["file_name"], "width": width, "height": height, }) for ann in annotations["annotations"]: if ann["image_id"] == image["id"]: coco_data["annotations"].append({ "id": ann["id"], "image_id": ann["image_id"], "category_id": category_mapping[ann["category_id"]], "segmentation": [ann["segmentation"]], "bbox": ann["bbox"], "area": ann["area"], }) # 保存为coco格式文件 with open('coco_annotations.json', 'w') as f: json.dump(coco_data, f) 以上代码用于将ApolloScape数据集的标注文件annotations.json转换为COCO数据集格式的标注文件coco_annotations.json。首先,我们读取ApolloScape标注文件中的内容。然后,创建一个空的COCO数据集格式字典,并为annotations中的每个类别创建一个映射关系。接着,我们遍历ApolloScape数据集中的每张图片,在COCO数据集中添加相应的images信息,并将annotations中对应的标注信息转换为COCO数据集中的annotations格式。最后,将转换后的COCO数据集格式字典保存为coco_annotations.json文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值