[18일 차] Dataset file check
※ 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 name
과 label file name
이 동일한지 안내 문구를 출력해주도록 코드를 작성하였다. image file name
과 label file name
이 동일하지 않을 경우 별도의 처리 코드를 작성해 처리해주도록 하자.
Outro
Data file name
과 label file name
이 당연히 같을 것이라고 생각하지 말자.
특히나 데이터셋을 구성할 때 해당 내용을 잘 기억하도록 하자.
Author And Source
이 문제에 관하여([18일 차] Dataset file check), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimsoohyun/18일-차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)