인공지능으로 사진 흔들림 제거하기 – PyTorch + PyQt5로 만드는 AI 이미지 복원 앱 개발기
스마트폰, 디지털 카메라, 현미경, 드론… 사진은 일상과 산업 전반에서 활용됩니다. 하지만 조금만 손이 떨려도, 사진은 쉽게 흐려지고 맙니다. 일반 사용자는 이럴 때 포토샵을 쓰거나, 그냥 사진을 다시 찍습니다. 하지만 여러 장을 한 번에 촬영해놓았을 경우, AI를 활용해서 가장 선명한 이미지를 복원할 수 있습니다.
그래서 저는 딥러닝 모델을 이용해 다수의 흔들린 이미지를 한 장의 선명한 이미지로 복원하는 프로그램을 직접 개발해보기로 했습니다. 이 글은 그 첫 번째 기록입니다.
프로젝트 개요 및 목표
이번 프로젝트의 핵심은 다음과 같습니다:
- PyTorch를 사용해 딥러닝 모델 DeblurGANv2를 불러온다
- OpenCV를 통해 여러 장의 이미지를 정렬하고 모델에 전달한다
- 보정된 결과물을 이미지 파일로 저장한다
- PyQt5를 활용한 데스크탑 GUI에서 이 전체 과정을 쉽게 수행할 수 있게 한다
즉, 이건 단순한 모델 테스트가 아니라, 실제 유저가 사용할 수 있는 앱을 만드는 것이다.
프로젝트 폴더 구조
image_deblur_ai/
├── gui/
├── model/
├── input/
├── output/
├── main.py
├── requirements.txt
└── build/
DeblurGANv2란?
DeblurGAN은 GAN 구조를 기반으로 흐릿한 이미지를 복원하는 모델이다. 일반적인 이미지 복원 방식은 손실된 정보를 복원하기 어렵지만, GAN은 학습된 데이터를 바탕으로 결측된 세부 정보를 생성해낼 수 있다.
DeblurGANv2는 속도와 성능을 개선한 버전으로, 실시간 성능에 가까우며 고해상도 이미지도 처리할 수 있다. GitHub에서 오픈소스로 제공되고 있어 누구나 사용할 수 있다.
이미지 입력 및 처리 방식
- 사용자는 GUI를 통해 여러 장의 이미지를 선택한다
- OpenCV를 이용해 첫 번째 이미지를 기준으로 나머지를 정렬한다
- 정렬된 이미지를 모델에 입력한다
- 모델은 한 장의 선명한 이미지를 출력한다
- GUI에서 결과를 확인하고 저장할 수 있다
PyQt5를 이용한 GUI 구성
사용자의 편의를 위해 PyQt5 기반의 GUI를 제작했다. 주요 기능은 다음과 같다:
- 이미지 다중 선택
- 선택한 이미지 미리보기
- 보정 시작 버튼
- 결과 이미지 확인 및 저장
PyInstaller로 실행파일 만들기
아무리 좋은 AI도 코드로만 실행된다면 일반인은 사용하기 어렵다. 그래서 PyInstaller를 통해 이 프로젝트를 실행파일로 패키징한다.
pyinstaller --noconfirm --onefile --windowed main.py
이렇게 하면 하나의 실행파일로 묶여 누구나 다운로드 받아 바로 실행할 수 있다.
왜 이 프로젝트가 의미 있는가?
이 프로젝트는 단순히 모델을 불러와서 이미지를 처리하는 실험이 아니다. 다음을 학습하고 구현하게 된다:
- 오픈소스 AI 모델의 활용법
- 멀티 프레임 정합 기술
- PyQt5를 통한 GUI 프로그래밍
- 최종 배포를 위한 PyInstaller 활용
이러한 기술은 산업용 영상처리, 보안카메라 보정, 의학 영상 강화 등 다양한 분야에 직접 활용될 수 있다.
다음 글 예고
다음 포스트에서는 다음 내용을 다룰 예정이다:
- DeblurGANv2 모델 다운로드 방법
- Python으로 모델을 불러와 실행하는 코드 작성
- 샘플 이미지로 추론 결과 확인하기
마무리하며
사진이 흔들렸다고 해서 포기하지 말자. 인공지능은 이제 손상된 이미지를 복원하고, 흐릿한 순간을 다시 선명하게 되살릴 수 있는 도구가 되었다. 앞으로 이 시리즈를 통해 누구나 AI를 활용한 실전 프로젝트를 완성할 수 있을 것이다.
계속해서 실습 중심의 AI 프로젝트를 블로그로 연재할 예정이니, 즐겨찾기 추가와 댓글 부탁드린다.