[Python]Cityscapes Foggy数据集转yolo格式(目标检测任务)

数据集下载相关

  • 论文地址
  • 鉴于数据集的版权问题,这个数据集不公开下载,只能通过脚本转换;但是这里可以找到网友已经转化过的数据集。
  • 也可以选择直接从cityscapes转化:SFSU_synthetic。

前置内容

由于cityscapes foggy数据集是基于cityscapes的,因此你需要先得到cityscapes的数据集,并用相关脚本处理转为yolo格式,详见:[Python]Cityscapes目标检测标注转YOLO格式。

ps:可以只下getFine_trainvaltest.zip文件,然后拿我上面那篇文章里的脚本,把脚本里的leftImg8bit改为leftImg8bit_foggy即可。

一般情况下,这两个配对数据集是用来研究迁移学习或者域适应的,是一起用的;你可以使用下面的脚本,直接把cityscapes的yolo标注转为foggy的。

转制脚本

处理@gist

import json
import os
from pathlib import Path
import re
from tqdm import tqdm
import shutil


def mkdir(url):
    if not os.path.exists(url):
        os.makedirs(url)


if __name__ == '__main__':
    root_dir = Path(__file__).parent
    image_dir = root_dir / 'leftImg8bit_foggy'
    image_output_root_dir = root_dir / 'images'
    label_output_root_dir = root_dir / 'labels'  # 来自cityscapes的yolo txt标注文件

    foggy_rates = [0.01, 0.02, 0.005]  # 根据实际情况调整

    for _t_ in tqdm(['train', 'test', 'val']):
        mkdir(image_output_root_dir / _t_)
        # 'berlin_000000_000019_leftImg8bit.png' -> 'berlin_000000_000019_leftImg8bit_foggy_beta_0.01.png'
        # 复制标签
        for label_file in os.listdir(label_output_root_dir / _t_).copy():
            for fr in foggy_rates:
                shutil.copy(label_output_root_dir / _t_ / label_file,
                            label_output_root_dir / _t_ / f'{Path(label_file).stem}_foggy_beta_{fr}.txt')
            os.remove(label_output_root_dir / _t_ / label_file)
        # 复制文件
        type_files = []
        for city_name in os.listdir(image_dir / _t_):
            for img_file in os.listdir(image_dir / _t_ / city_name):
                shutil.copy(image_dir / _t_ / city_name / img_file, image_output_root_dir / _t_ / img_file)  # 复制移动
                type_files.append(f'./images/{_t_}/{img_file}\n')

        with open(root_dir / f'yolo_{_t_}.txt', 'w') as f:  # 记录训练样本等的具体内容
            f.writelines(type_files)

你可能感兴趣的:(Python,Matlab,机器学习,数据挖掘,数学模型,python,人工智能,机器学习,目标检测,cityscape,foggy)