본문 바로가기
Lectures/BoostCamp -Naver

level 2 Data-Centric, 2. makeing validset

by yooom 2024. 2. 5.

ipynb 파일 형식으로,

되도록 복사붙여넣기하면 그대로 실행되게끔 유도했는데

그냥 깃허브를 공유하는 게 낫겠지만 나는 깃허브 공유하기엔 부끄럽다. 뫄하하하

 

# train.json → save_train.json

import json
import os

json_file_path = "../data/medical/ufo/train.json"
new_file_path = "../data/medical/ufo/save_train.json"

# save_train.json 파일이 존재하지 않을 때만 이름 변경 실행
if not os.path.exists(new_file_path):
    os.rename(json_file_path, new_file_path)
    print('변경 완료')
    with open(new_file_path, 'r') as json_file:
        data = json.load(json_file)
else:
    with open(new_file_path, 'r') as json_file:
        data = json.load(json_file)
    print("save_train.json이 이미 존재")

원본 train.json을 save_train.json으로 이름을 바꿔

원본을 save해두자.

 

# Valid Set 제작

'''
drp.en_ko.in_house.deepnatural_002441  구겨진 이미지 # 일반적인 특징을 모르겠어서 직접 보면서 나눴다
drp.en_ko.in_house.deepnatural_002469  스캔 도장
drp.en_ko.in_house.deepnatural_002474  뒷배경 갈색
drp.en_ko.in_house.deepnatural_002491  흐린 이미지
drp.en_ko.in_house.deepnatural_002496  뒷배경 하얀색
drp.en_ko.in_house.deepnatural_002544  가로 배경있음
drp.en_ko.in_house.deepnatural_002624  가로 기울어짐
drp.en_ko.in_house.deepnatural_002628  구겨짐
drp.en_ko.in_house.deepnatural_002850  정상 스캔
drp.en_ko.in_house.deepnatural_003234 가로  흐림
drp.en_ko.in_house.deepnatural_003252  기울어짐
drp.en_ko.in_house.deepnatural_003347  흐림
drp.en_ko.in_house.deepnatural_003435  정상 스캔
drp.en_ko.in_house.deepnatural_003729  가로 글자 작음
drp.en_ko.in_house.deepnatural_003762  배경 있음
drp.en_ko.in_house.deepnatural_003778  스캔, 흐림
drp.en_ko.in_house.deepnatural_003787  뒷 배경 흰색
drp.en_ko.in_house.deepnatural_003811  정상 스캔
drp.en_ko.in_house.deepnatural_003903  정상 사진
drp.en_ko.in_house.deepnatural_003958  기울어진 사진
#drp.en_ko.in_house.deepnatural_003979  정상 사진
'''

img_list = ['drp.en_ko.in_house.deepnatural_002441.jpg',
'drp.en_ko.in_house.deepnatural_002469.jpg',
'drp.en_ko.in_house.deepnatural_002474.jpg',
'drp.en_ko.in_house.deepnatural_002491.jpg',
'drp.en_ko.in_house.deepnatural_002496.jpg',
'drp.en_ko.in_house.deepnatural_002544.jpg', 
'drp.en_ko.in_house.deepnatural_002624.jpg',
'drp.en_ko.in_house.deepnatural_002628.jpg',
'drp.en_ko.in_house.deepnatural_002850.jpg',
'drp.en_ko.in_house.deepnatural_003234.jpg',
'drp.en_ko.in_house.deepnatural_003252.jpg',
'drp.en_ko.in_house.deepnatural_003347.jpg',
'drp.en_ko.in_house.deepnatural_003435.jpg',
'drp.en_ko.in_house.deepnatural_003729.jpg',
'drp.en_ko.in_house.deepnatural_003762.jpg',
'drp.en_ko.in_house.deepnatural_003778.jpg',
'drp.en_ko.in_house.deepnatural_003787.jpg',
'drp.en_ko.in_house.deepnatural_003811.jpg',
'drp.en_ko.in_house.deepnatural_003903.jpg',
'drp.en_ko.in_house.deepnatural_003958.jpg',]

 

train_ann = dict()
valid_ann = dict()

train_ann['images'] = {img: data['images'][img] for img in data['images'] if img not in img_list}
valid_ann['images'] = {img: data['images'][img] for img in data['images'] if img in img_list}

 

print('train 개수 : ', len(train_ann['images']))
print('valid 개수 : ', len(valid_ann['images']))

>>> train 개수 :  80
>>> valid 개수 :  20

 

with open('../data/medical/ufo/valid.json', 'w', encoding='utf-8') as file:
    json.dump(valid_ann, file, ensure_ascii=False, indent=4)

with open('../data/medical/ufo/train.json', 'w', encoding='utf-8') as file:
    json.dump(train_ann, file, ensure_ascii=False, indent=4)

이렇게 하면  json 파일은 생성됐다.

 

이제 폴더와 json파일을 저장해보자

 

# train, valid img 폴더 제작

import shutil

train_folder = "/data/ephemeral/home/level2-cv-datacentric-cv-10/data/medical/img/train"
valid_folder = "/data/ephemeral/home/level2-cv-datacentric-cv-10/data/medical/img/valid"

# 폴더 복사
if not os.path.exists(valid_folder):
    shutil.copytree(train_folder, valid_folder)
    print("폴더 복사 완료")
else:
    print("valid 폴더가 이미 존재")

valid폴더에는 train폴더의 모든 이미지가 복사되어 들어있다.

그리고 json에는 80장, 20장의 이미지가 선정되어 새로 제작했다.

 

 

728x90

댓글