KITTI数据集
二、重要说明- 在monodepth2复现过程中,训练数据的格式是:
# kitti数据集的真实路径 /media/yoyo/新加卷/Downloads/kitti_data # 训练数据集的路径 /home/yoyo/Mydocuments/PyProjects/monodepth2/kitti_data/2011_09_28/2011_09_28_drive_0016_sync # 训练数据集创建软链接 sudo ln -s /media/yoyo/新加卷/Downloads/kitti_data /home/yoyo/Mydocuments/PyProjects/monodepth2/kitti_data
- monodepth2训练需要的 KITTIRaw 数据集
2011_09_26_calib.zip 2011_09_26_drive_0001/2011_09_26_drive_0001_sync.zip 2011_09_26_drive_0002/2011_09_26_drive_0002_sync.zip 2011_09_26_drive_0005/2011_09_26_drive_0005_sync.zip 2011_09_26_drive_0009/2011_09_26_drive_0009_sync.zip 2011_09_26_drive_0011/2011_09_26_drive_0011_sync.zip 2011_09_26_drive_0013/2011_09_26_drive_0013_sync.zip 2011_09_26_drive_0014/2011_09_26_drive_0014_sync.zip 2011_09_26_drive_0015/2011_09_26_drive_0015_sync.zip 2011_09_26_drive_0017/2011_09_26_drive_0017_sync.zip 2011_09_26_drive_0018/2011_09_26_drive_0018_sync.zip 2011_09_26_drive_0019/2011_09_26_drive_0019_sync.zip 2011_09_26_drive_0020/2011_09_26_drive_0020_sync.zip 2011_09_26_drive_0022/2011_09_26_drive_0022_sync.zip 2011_09_26_drive_0023/2011_09_26_drive_0023_sync.zip 2011_09_26_drive_0027/2011_09_26_drive_0027_sync.zip 2011_09_26_drive_0028/2011_09_26_drive_0028_sync.zip 2011_09_26_drive_0029/2011_09_26_drive_0029_sync.zip 2011_09_26_drive_0032/2011_09_26_drive_0032_sync.zip 2011_09_26_drive_0035/2011_09_26_drive_0035_sync.zip 2011_09_26_drive_0036/2011_09_26_drive_0036_sync.zip 2011_09_26_drive_0039/2011_09_26_drive_0039_sync.zip 2011_09_26_drive_0046/2011_09_26_drive_0046_sync.zip 2011_09_26_drive_0048/2011_09_26_drive_0048_sync.zip 2011_09_26_drive_0051/2011_09_26_drive_0051_sync.zip 2011_09_26_drive_0052/2011_09_26_drive_0052_sync.zip 2011_09_26_drive_0056/2011_09_26_drive_0056_sync.zip 2011_09_26_drive_0057/2011_09_26_drive_0057_sync.zip 2011_09_26_drive_0059/2011_09_26_drive_0059_sync.zip 2011_09_26_drive_0060/2011_09_26_drive_0060_sync.zip 2011_09_26_drive_0061/2011_09_26_drive_0061_sync.zip 2011_09_26_drive_0064/2011_09_26_drive_0064_sync.zip 2011_09_26_drive_0070/2011_09_26_drive_0070_sync.zip 2011_09_26_drive_0079/2011_09_26_drive_0079_sync.zip 2011_09_26_drive_0084/2011_09_26_drive_0084_sync.zip 2011_09_26_drive_0086/2011_09_26_drive_0086_sync.zip 2011_09_26_drive_0087/2011_09_26_drive_0087_sync.zip 2011_09_26_drive_0091/2011_09_26_drive_0091_sync.zip 2011_09_26_drive_0093/2011_09_26_drive_0093_sync.zip 2011_09_26_drive_0095/2011_09_26_drive_0095_sync.zip 2011_09_26_drive_0096/2011_09_26_drive_0096_sync.zip 2011_09_26_drive_0101/2011_09_26_drive_0101_sync.zip 2011_09_26_drive_0104/2011_09_26_drive_0104_sync.zip 2011_09_26_drive_0106/2011_09_26_drive_0106_sync.zip 2011_09_26_drive_0113/2011_09_26_drive_0113_sync.zip 2011_09_26_drive_0117/2011_09_26_drive_0117_sync.zip 2011_09_28_calib.zip 2011_09_28_drive_0001/2011_09_28_drive_0001_sync.zip 2011_09_28_drive_0002/2011_09_28_drive_0002_sync.zip 2011_09_29_calib.zip 2011_09_29_drive_0004/2011_09_29_drive_0004_sync.zip 2011_09_29_drive_0026/2011_09_29_drive_0026_sync.zip 2011_09_29_drive_0071/2011_09_29_drive_0071_sync.zip 2011_09_30_calib.zip 2011_09_30_drive_0016/2011_09_30_drive_0016_sync.zip 2011_09_30_drive_0018/2011_09_30_drive_0018_sync.zip 2011_09_30_drive_0020/2011_09_30_drive_0020_sync.zip 2011_09_30_drive_0027/2011_09_30_drive_0027_sync.zip 2011_09_30_drive_0028/2011_09_30_drive_0028_sync.zip 2011_09_30_drive_0033/2011_09_30_drive_0033_sync.zip 2011_09_30_drive_0034/2011_09_30_drive_0034_sync.zip 2011_10_03_calib.zip 2011_10_03_drive_0027/2011_10_03_drive_0027_sync.zip 2011_10_03_drive_0034/2011_10_03_drive_0034_sync.zip 2011_10_03_drive_0042/2011_10_03_drive_0042_sync.zip 2011_10_03_drive_0047/2011_10_03_drive_0047_sync.zip三、关键步骤
- 下载 格物钛数据集 - KITTIRaw
其他下载方式,参考博客 KITTI数据集
. ├── KITTIRaw_calibration.zip ├── KITTIRaw_campus.zip ├── KITTIRaw_city.zip ├── KITTIRaw_person.zip ├── KITTIRaw_residential.zip └── KITTIRaw_road.zip ...
- 解压zip文件
每一个zip文件都很大,需要逐个解压
# 以KITTIRaw_campus.zip为例,进行解压 unzip KITTIRaw_campus.zip
. ├── campus │ ├── 2011_09_28_drive_0016 │ ├── 2011_09_28_drive_0021 │ ├── 2011_09_28_drive_0034 │ ├── 2011_09_28_drive_0035 │ ├── 2011_09_28_drive_0037 │ ├── 2011_09_28_drive_0038 │ ├── 2011_09_28_drive_0039 │ ├── 2011_09_28_drive_0043 │ ├── 2011_09_28_drive_0045 │ └── 2011_09_28_drive_0047 ...
- 查看二级目录结构
# 以 2011_09_28_drive_0016 为例 # /media/yoyo/新加卷/Downloads/campus/2011_09_28_drive_0016 2011_09_28_drive_0016 ├── 2011_09_28_calib.zip ├── 2011_09_28_drive_0016_extract.zip └── 2011_09_28_drive_0016_sync.zip ...
- 再解压三级目录里的zip文件
# 2011_09_28_drive_0016_sync.zip 文件 unzip 2011_09_28_drive_0016_sync.zip
# /media/yoyo/新加卷/Downloads/campus/2011_09_28_drive_0016/2011_09_28/2011_09_28_drive_0016_sync . ├── 2011_09_28_drive_0016 │ ├── 2011_09_28 │ │ └── 2011_09_28_drive_0016_sync │ │ ├── image_00 │ │ ├── image_01 │ │ ├── image_02 │ │ ├── image_03 │ │ ├── oxts │ │ └── velodyne_points ...
- 从KITTIRaw原始zip压缩文件中,挑选出需要的zip文件
- 用python解压所有的zip文件
import os
import zipfile
import shutil
dir_one_zip_example = '/home/yoyo/Mydocuments/PyProjects/202109/20210905/2011_09_26_drive_0001_sync.zip'
# /media/yoyo/新加卷/Downloads/kitti_data
'''
├── kitti_data
│ ├── 2011_09_26_calib.zip
│ ├── 2011_09_26_drive_0001_sync.zip
│ ├── 2011_09_26_drive_0002_sync.zip
│ ├── 2011_09_26_drive_0005_sync.zip
│ ├── 2011_09_26_drive_0009_sync.zip
│ ├── 2011_09_26_drive_0011_sync.zip
│ ├── 2011_09_26_drive_0013_sync.zip
│ ├── 2011_09_26_drive_0014_sync.zip
│ ├── 2011_09_26_drive_0015_sync.zip
│ ├── 2011_09_26_drive_0017_sync.zip
│ ├── 2011_09_26_drive_0018_sync.zip
│ ├── 2011_09_26_drive_0019_sync.zip
│ ├── 2011_09_26_drive_0020_sync.zip
│ ├── 2011_09_26_drive_0022_sync.zip
│ ├── 2011_09_26_drive_0023_sync.zip
│ ├── 2011_09_26_drive_0027_sync.zip
│ ├── 2011_09_26_drive_0028_sync.zip
│ ├── 2011_09_26_drive_0029_sync.zip
│ ├── 2011_09_26_drive_0032_sync.zip
│ ├── 2011_09_26_drive_0035_sync.zip
│ ├── 2011_09_26_drive_0036_sync.zip
│ ├── 2011_09_26_drive_0039_sync.zip
│ ├── 2011_09_26_drive_0046_sync.zip
│ ├── 2011_09_26_drive_0048_sync.zip
│ ├── 2011_09_26_drive_0051_sync.zip
│ ├── 2011_09_26_drive_0052_sync.zip
│ ├── 2011_09_26_drive_0056_sync.zip
│ ├── 2011_09_26_drive_0057_sync.zip
│ ├── 2011_09_26_drive_0059_sync.zip
│ ├── 2011_09_26_drive_0060_sync.zip
│ ├── 2011_09_26_drive_0061_sync.zip
│ ├── 2011_09_26_drive_0064_sync.zip
│ ├── 2011_09_26_drive_0070_sync.zip
│ ├── 2011_09_26_drive_0079_sync.zip
│ ├── 2011_09_26_drive_0084_sync.zip
│ ├── 2011_09_26_drive_0086_sync.zip
│ ├── 2011_09_26_drive_0087_sync.zip
│ ├── 2011_09_26_drive_0091_sync.zip
│ ├── 2011_09_26_drive_0093_sync.zip
│ ├── 2011_09_26_drive_0095_sync.zip
│ ├── 2011_09_26_drive_0096_sync.zip
│ ├── 2011_09_26_drive_0101_sync.zip
│ ├── 2011_09_26_drive_0104_sync.zip
│ ├── 2011_09_26_drive_0106_sync.zip
│ ├── 2011_09_26_drive_0113_sync.zip
│ ├── 2011_09_26_drive_0117_sync.zip
│ ├── 2011_09_28_calib.zip
│ ├── 2011_09_28_drive_0001_sync.zip
│ ├── 2011_09_28_drive_0002_sync.zip
│ ├── 2011_09_29_calib.zip
│ ├── 2011_09_29_drive_0004_sync.zip
│ ├── 2011_09_29_drive_0026_sync.zip
│ ├── 2011_09_29_drive_0071_sync.zip
│ ├── 2011_09_30_calib.zip
│ ├── 2011_09_30_drive_0016_sync.zip
│ ├── 2011_09_30_drive_0018_sync.zip
│ ├── 2011_09_30_drive_0020_sync.zip
│ ├── 2011_09_30_drive_0027_sync.zip
│ ├── 2011_09_30_drive_0028_sync.zip
│ ├── 2011_09_30_drive_0033_sync.zip
│ ├── 2011_09_30_drive_0034_sync.zip
│ ├── 2011_10_03_calib.zip
│ ├── 2011_10_03_drive_0027_sync.zip
│ ├── 2011_10_03_drive_0034_sync.zip
│ ├── 2011_10_03_drive_0042_sync.zip
│ ├── 2011_10_03_drive_0047_sync.zip
'''
def unzip_one_file(dir_one_zip=dir_one_zip_example):
'''
解压单个zip文件
/media/yoyo/新加卷/Downloads/campus/2011_09_28_drive_0016/2011_09_28_drive_0016_sync.zip
:param dir_one_zip: zip的路径
:return:
'''
dir_path = os.path.split(dir_one_zip)[0]
if not zipfile.is_zipfile(dir_one_zip): # 如果不可以解压
print(dir_one_zip, 'is not a zipfile!') # 打印不可解压的zip文件
return
with zipfile.ZipFile(dir_one_zip) as zf: # 打开zip压缩文件
if 'drive' in dir_one_zip: # 如果类似于 2011_09_28_drive_0016_sync.zip 的文件
dir_date_first = dir_one_zip.split('_drive')[0] # /media/yoyo/新加卷/Downloads/campus/2011_09_28_drive_0016/2011_09_28
prefix_name = os.path.split(dir_date_first)[-1] # 2011_09_28
if not os.path.exists(dir_date_first): # 如果文件夹不存在,创建文件夹
os.mkdir(dir_date_first)
temp_dir = os.path.join(dir_path, 'temp_dir') # 存放解压文件的临时文件夹
dir_date_second = os.path.join(temp_dir, prefix_name)
if not os.path.exists(temp_dir): # 创建临时文件夹
os.mkdir(temp_dir)
zf.extractall(temp_dir) # 解压到临时文件夹
obj_dir = os.listdir(dir_date_second)
if len(obj_dir) == 1:
src_dir = os.path.join(dir_date_second, obj_dir[0])
shutil.move(src_dir, dir_date_first) # 移动解压后的文件夹
shutil.rmtree(dir_date_second) # 删除解压后的文件夹
def unzip_all_file(dir_all_zip):
'''
解压zip根目录的所有zip文件
/media/yoyo/新加卷/Downloads/kitti_data:param dir_all_zip: zip根目录
:return:
'''
dir_zip_list = os.listdir(dir_all_zip)
for idx, zip_item in enumerate(dir_zip_list):
dir_one_zip = os.path.join(dir_all_zip, zip_item)
unzip_one_file(dir_one_zip) # 解压单个zip文件
print(idx+1, dir_one_zip)
if __name__ == '__main__':
dir_all_zip = '/media/yoyo/新加卷/Downloads/kitti_data' # zip文件根目录,待解压
unzip_all_file(dir_all_zip)



