Deep Learning

AdaIN으로 생성한 Data의 이름과 json을 수정해보자!

해시브라우니 2024. 1. 11. 19:31

앞서 말했듯이 이번 프로젝트로 진행중인 Yolo를 학습시키기 위해서 COCO Original Dataset과 AdaIN( https://github.com/xunhuang1995/AdaIN-style) 을 적용한 Dataset을 합쳐서 Training data로 사용하려고 하는데 AdaIN을 돌리면 파일명이 XXXXX-stlyized-XXXX.jpg 로 되어 있습니다...난감했던 부분,, 뒤에 XXXX가 Style Set의 무작위로 1개 찝어서 하기 때문에 모두 다르고, 이것들을 반영해 Json에 반영하기 보단 ,, 

 

1. Dataset의 stylized-XXXX에서 XXXX를 지우자

2. Annotation의 Images[file names]에 -stylized를 붙여주자

 

로 비교적 간단하게 표기 하기로 하였습니다. 

적용한 코드는 아래처럼 생겼고  #단 코드는 Train과 Val따로 경로 수정하면서 2번 진행하였습니다

import os
import glob
import json

def modify_filename(original_filename):
    new_filename = original_filename.replace('.jpg', '-stylized.jpg')
    return new_filename

image_dir = './coco/COCOstylizedval/' #이미지 경로

for image_path in glob.glob(os.path.join(image_dir, '*.jpg')): #모든 이미지
    basename = os.path.basename(image_path) #이름을 
    name, ext = os.path.splitext(basename) #이름과 확장명으로 split!
    
    parts = name.split('-stylized-') #Split 기준
    
    new_name = '{0}-stylized{1}'.format(parts[0], ext)
    new_path = os.path.join(image_dir, new_name)
    
    os.rename(image_path, new_path)

json_dir = './coco/annotations/instances_val2017.json'

with open(json_dir, 'r') as f:
    data = json.load(f)

for img in data['images']:
    img['file_name'] = modify_filename(img['file_name']) #Json filename 변경

with open('./coco/annotations/instances_val2017_stylized.json', 'w') as f: #새로운 json 저장
    json.dump(data, f)

이미지로 보면 편하니까, 

원래 이렇게 생긴 Json이

file_name에 -stylized.jpg가 들어간 것을 확인할 수 있습니다.

이미지 들도 뒤에 -XXXX부분없이 들어간 것을 확인할 수 있어서 성공적으로 코드가 작동한 것을 확인할 수 있습니다!!

 

이제 Yolo형식 (txt)로 바꾸고 최종적으로 통합시킨 후 Training을 돌리면 준비된 Data로 학습이 진행될거 같습니다.