[python]Cityscapes Foggyデータセット回転yoloフォーマット(ターゲット検出タスク)


データセットダウンロード関連
  • 論文アドレス
  • データセットの著作権の問題に鑑み、このデータセットは公開ダウンロードされず、スクリプト変換しかできない.しかし、ここではネットユーザーが変換したデータセットを見つけることができます.
  • cityscapesから直接変換することもできます:SFSU_synthetic.

  • 前の内容
    cityscapes foggyデータセットはcityscapesに基づいているため、cityscapesのデータセットを先に取得し、関連スクリプト処理でyoloフォーマットに変換する必要があります.詳細は、[python]Cityscapesターゲット検出寸法回転YOLOフォーマットを参照してください.
    ps:getFine_trainvaltest.zipファイルだけをダウンロードして、上の文章のスクリプトを持って、スクリプトのleftImg8bitleftImg8bit_foggyに変更すればいいです.
    一般的に、この2つのペアリングデータセットは、移行学習またはドメイン適応を研究するために使用され、一緒に使用される.次のスクリプトを使用して、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}
    '
    ) with open(root_dir / f'yolo_{_t_}.txt', 'w') as f: # f.writelines(type_files)