ChatGPT로 파이썬 코드 짜보기(이미지 자르기)
나는 C++, C#을 주력으로 하고 이제까지 이외에 개발언어는 딱히 사용해 본 경험이 없었다.
그런데 최근에 StyleGan3, Stable Diffusion 이라는 AI모델을 돌려보면서 처음으로 머신러닝, 파이썬에 대해서 좀 공부를 해보게 되었다.
그중 파이썬이 굉장히 매력적인 언어라고 느꼈는데,
C로 짜려면 굉장히 여러 과정을 거쳐야 하는 기능을 파이썬에서는 패키지를 받고 코드 한 두줄이면 끝나버리는 걸 보고 참 편한 언어라는 걸 느꼈다.
뭐 성능이 느리다니 뭐니 여러 말이 많지만, 생산성 측면에서는 내가 사용해온 C++, C#에 비해 굉장히 압도적이다라는 생각이 들었다.
약간 공부를 해놓고 사용할일이 생길 때 파이썬을 쓴다면 무척 유용할 거라 생각이 들었다.
그리고 최근 굉장히 핫한 ChatGPT를 요즘 사용해보고 있는데, 항상 맞는 정답을 알려주지는 않지만 적절히 ChatGPT를 사용하면 구글링 시간을 많이 단축해 준다.
새로운 것들을 공부할 때 간단한 개념이나 용어(+코드)들에 대해 공부할 때 ChatGPT를 쓰면 굉장히 유용한 거 같다.
그러나 틀린 답변도 굉장히 그럴싸하게 답변한다.
StyleGan3-T 와 StyleGan3+R이 어떤 차이가 있냐고 물어봤다.
T - Training , R - Redering 이라는 자신감 넘치는 답변을 했지만
정답은 T - Translation , R - Rotation이다.
어느 정도 배경지식이 있는 상태라면 상관이 없지만
배경지식이 없는 상태에서는 ChatGPT가 하는 소리가 맞는지 아닌지 분간이 어렵다.
설명이 진짜 그럴싸해서…
ChatGPT는 2021년 이후 데이터는 아직 학습이 잘되지 않았다고 한다.
그래서 비교적 최근에 나온 StyleGan3에 대해서 잘 모른 거일 수도 있고..
어쨌든 StyleGan3를 트레이닝시킬 데이터셋을 크롤링하고 크롭 하는걸 파이썬으로 짜보려고 하는데
오늘은 우선 기존에 있던 이미지를 트레이닝 데이터 사이즈에 맞도록(512 x 512) 크롭 하는 코드를 ChatGPT를 통해 짜보겠음.
우선 VS Code로 파이썬을 돌릴 예정이기에 셋업 하는 방법을 물어봤다.
파이썬 홈페이지에서 최신버전을 인스톨하고 VS Code에도 Extension을 받아줌.
그리고 Chat GPT에 물어본 것들은
폴더에서 모든 이미지를 순차적으로 읽어오는 법,
python code, Image crop function that are in folder
이미지 사이즈를 구하고 가운데를 중심으로 512,512로 크롭 하는 코드
python code, Getting Image size and cropping by 512, 512 around the center
그 후 순차적으로 인덱스를 먹여서 다른 폴더에 저장하는 코드 등
python code, image save and naming in order
몇 차례 질문을 하고 답변이 온 코드들을 조합시켜서 동작하는 코드를 완성했다.
최종 코드
import os
from PIL import Image
folder_path = 'ImageTest'
# Get a list of all image files in the directory
image_files = [f for f in os.listdir(folder_path) if f.endswith(".jpg") or f.endswith(".png")]
# Sort the list of image files alphabetically
#image_files.sort()
# 폴더 내 모든 파일에 대해서 반복문 실행
for i, file_name in enumerate(image_files):
# 파일 경로 생성
file_path = os.path.join(folder_path, file_name)
# 이미지 파일 열기
image = Image.open(file_path)
width, height = image.size
# Set the crop dimensions
crop_width, crop_height = 512, 512
left = (width - crop_width) / 2
top = (height - crop_height) / 2
right = (width + crop_width) / 2
bottom = (height + crop_height) / 2
# Crop the image around the center
cropped_image = image.crop((left, top, right, bottom))
# Save the cropped image as a new file
new_file_name = f"image_{i:03d}.jpg"
cropped_image.save("des/"+new_file_name)
# 이미지 보여주기
# image.show()
같은 경로에 존재하는 ImageTest라는 폴더에 존재하는 이미지들을 읽어서
중심을 기준으로 512,512로 자르고 des라는 폴더에 저장시키는 코드이다.
잘 작동한다.
잘 작동한다.
잘 작동한다.
나는 파이썬에 대해서 공부를 해본 적이 단 한 번도 없지만 ChatGPT 몇 번 검색으로 간단한 코드는 바로 돌려 볼 수 있을 거 같다.
다음번엔 웹 크롤링 코드를 돌려봐야지