[18日目]Dataset file check


※ Notification
この投稿に誤字や誤字がある場合は、コメントで訂正します:)

Intro


本稿では、DataSetを構成する際に、データファイルとlabelファイルが同じかどうかを説明します.

Datset file check


Datasetは、Datafile nameとLabel file nameと一致する必要があります.
ただし、ファイルの一部が失われたり、データセットの作成が間違ったりして、データファイルとlableファイルの名前が一致しない場合があります.
この場合、これらのデータを処理する必要があります.これらのデータの処理手順を見てみましょう.

プロセス


データファイルとlabelファイルが一致することを確認するには、さまざまな方法があります.
しかしながら、本明細書では、set()を用いて処理するプロセスについて論じる.
大まかな処理過程は以下の通りである.
  • ディレクトリ変数宣言
  • list,set宣言
  • 反復文によるファイル名
  • の抽出
  • を用いる集合演算の数比較
  • import os
    
    DATA_ROOT_DIR = '/data_directory_path'
    
    IMAGE_DATA_DIR = os.path.join(DATA_ROOT_DIR,'/images')
    LABEL_DATA_DIR = os.path.join(DATA_ROOT_DIR,'/labels')
    
    IMAGE_EXTENSION = '.jpg'
    LABEL_EXTENSION = '.txt'
    まず、ディレクトリと拡張子変数を宣言します.
    image_file_list = []
    label_file_list = []
    
    image_file_name_list = []
    label_file_name_list = []
    
    image_file_name_set = set()
    label_file_name_set = set()
    
    image_label_difference_set = set()
    image_label_intersection_set = set()
    次にfile nameを含むlist変数とset変数を宣言します.
    image_file_list = os.listdir(IMAGE_DATA_DIR)
    label_file_list = os.listdir(LABEL_DATA_DIR)
    
    image_file_list.sort()
    label_file_list.sort()
    
    # image file name 추출
    for index in range(len(image_file_list)):
        image_name = image_file_list[index].split(IMAGE_EXTENSION)[0] # image file name
        image_file_name_list.append(image_name)
        
    image_file_name_set = set(image_file_name_list)  # 이미지 파일 이름 집합생성
    
    
    # label file name 추출
    for index in range(len(label_file_list)):
        label_name = label_file_list[index].split(LABEL_EXTENSION)[0]  # label file name
        label_file_name_list.append(label_name) # 정답 파일 이름 집합생성
    ディレクトリのfile nameをインポートするために、次のコードを作成します.
    label_file_name_set = set(label_file_name_list)  # 정답 파일 이름 집합생성
    
    # image file / label file name 비교
    image_label_difference_set = image_file_name_set - label_file_name_set  # 차집합
    
    if len(image_label_difference_set) == 0:
        print('※ image is exactly same as label ※')
    else:
    	print('※ image is not same as label ※')
    	
        # TO_DO code
    画像ファイルが存在するが、答えファイルが存在しない場合は役に立たないので、答えファイルに基づいて比較します.その後、コードを記述し、image file namelabel file nameに同じブート文を出力させる.image file namelabel file nameが異なる場合は、個別の処理コードを記述して処理する.

    Outro

    Data file namelabel file nameはもちろん同じだとは思わないでください.
    特に、データセットを整理するときは、これらの内容を覚えておいてください.