08.18
해야할 것
# git - autoaugment 불러오기 위해서 py 파일 다운받고 같은 디렉토리에 넣기
# 각각의 샘플에 대해 업데이트 수행
import os
from PIL import Image
from autoaugment import ImageNetPolicy
from torchvision import transforms
# 손상된 이미지를 부분적으로 로드할 수 있도록 Pillow에게 지시하는 방법
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
# 원본 이미지가 있는 폴더 경로
source_dir = "C:/Users/82102/Desktop/GCP/augment/akiec"
# 증강된 이미지를 저장할 폴더 경로
save_dir = "C:/Users/82102/Desktop/GCP/augment/akiec_aug"
# 증강을 위한 변환 설정
transform = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
ImageNetPolicy(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 만약 저장 디렉토리가 없다면 생성
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# source_dir 안의 모든 이미지 파일에 대해서
for img_name in os.listdir(source_dir):
if img_name.lower().endswith(('.png', '.jpg', '.jpeg')): # 이미지 파일만 처리
img_path = os.path.join(source_dir, img_name)
# 이미지 열기
pil_image = Image.open(img_path)
# 원본 이미지에 대해 2번의 증강을 수행
for i in range(2):
# 증강 및 변환 적용
augmented_image = transform(pil_image)
# Tensor를 PIL 이미지로 다시 변환
pil_image_aug = transforms.ToPILImage()(augmented_image)
# 증강된 이미지 저장
save_path = os.path.join(save_dir, f"augmented_{i+1}_{img_name}")
pil_image_aug.save(save_path)
print("Image augmentation completed!")
akiec (327장), akiec_aug (654장) > squamous_cell_carcinomas (981장) _원본 이미지에 대해 2번 증강
df (115장), df_aug (575장) > Dermatofibroma (690장) _원본 이미지에 대해 5번 증강 (이거 데이터ㅠ 그냥 삭제할까)
vasc (142장), vasc_aug (710장) > Vascular_skin_lesions (852장) _원본 이미지에 대해 5번 증강
일반적으로 이미지 증강은 2-5회가 적당
과적합 조심 !!
(이미지가 적은데도 굳이굳이 학습시킨 이유 >>> 메타데이터 csv 파일이 있기 때문에 이미지 데이터가 부족해도 예측을 더 정확하게 할 수 있는 방법이 있어서)
이미지 증강 완료 > 버킷에 올리는 과정 진행 (akiec(완료) > df(완료) > vasc(완료))
혹시 모르니까 코드 써서 개수 확인 > 완료