[18일 차] Dataset file check

Kimsoohyun·2022년 4월 15일
0
post-thumbnail

※ Notification
본 게시글에서 오탈자나 잘못된 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다 :)

Intro

본 포스팅에서는 Dataset을 구성할 때 Data file과 label file이 동일한지 확인하는 과정을 다루겠다.

Datset file check

Dataset은 Data file name과 label file name이 동일하게 매칭되어야 한다.
하지만 간혹 파일의 일부가 손실되거나, Dataset이 잘못 만들어진 경우 Data file과 lable file의 이름이 일치하지 않는 경우가 있다.

이러한 경우 해당 Data에 대하여 처리가 필요한데, 그 처리 과정을 알아보자.

처리 과정

Data file과 label file이 모두 매칭되는지 확인하기 위해 다양한 방법이 존재할 것이다.
하지만 본 포스팅에서는 set()을 이용한 처리 과정에 대해 이야기하겠다.

대략적인 처리 과정은 다음과 같다.

  • Directory 변수 선언
  • list, set 선언
  • 반복문을 통한 file name 추출
  • 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이 당연히 같을 것이라고 생각하지 말자.
특히나 데이터셋을 구성할 때 해당 내용을 잘 기억하도록 하자.

profile
어제보다 나은

0개의 댓글