Photo Selector 제작기 - AI로 사진 선별 시간을 줄이다
Photo Selector 제작기 - AI로 사진 선별 시간을 줄이다
사진을 많이 찍는 날이면 문제는 촬영이 아니라 선별에서 시작됩니다. 비슷한 구도, 살짝 다른 표정, 연속 촬영으로 쌓인 수백 장의 사진을 하나씩 넘기다 보면 좋은 사진을 고르는 데 생각보다 많은 시간이 들어갑니다.
이번에 공개한 Photo Selector는 이 과정을 줄이기 위해 만든 로컬 전용 웹앱입니다. 사진 폴더를 선택하면 AI가 비슷한 사진을 씬별로 묶고, 각 씬에서 가장 좋은 후보를 먼저 추천합니다. 사용자는 추천 결과를 그대로 쓰거나, 씬 안의 다른 사진으로 직접 바꾼 뒤 최종 선택본만 내보낼 수 있습니다.
왜 만들었나
기존 사진 정리 방식은 너무 수동적이었습니다. 마음에 드는 사진을 고르려면 전체 파일을 훑고, 비슷한 사진끼리 비교하고, 흔들림이나 눈 감음까지 직접 확인해야 했습니다.
제가 원했던 것은 사진을 완전히 자동으로 결정해주는 프로그램이 아니라, 검토해야 할 양을 먼저 줄여주는 도구였습니다. AI가 1차로 묶고 추천하되, 마지막 판단은 사람이 할 수 있는 구조가 필요했습니다.
핵심 기능
Photo Selector의 흐름은 단순합니다.
- 사진 폴더를 선택합니다.
- AI가 중복과 비슷한 컷을 줄이고, 씬 단위로 그룹화합니다.
- 구도, 미적 점수, 얼굴 선명도, 표정, 눈 감음 여부 등을 종합해 대표 컷을 추천합니다.
- 브라우저 UI에서 씬별 추천 사진을 검토합니다.
- 제외할 씬은 빼고, 필요한 경우 직접 다른 사진을 선택합니다.
- 최종 선택본만 원하는 폴더로 복사합니다.
두 번째 실행부터는 캐시를 불러와 분석 시간을 줄일 수 있게 했습니다. 사진이 많은 폴더를 반복해서 검토할 때 특히 체감이 큽니다.
기술적으로 신경 쓴 부분
이번 프로젝트는 Python 기반으로 구성했습니다. python app.py 한 줄로 Flask 웹앱이 실행되고, 브라우저에서 localhost:5000으로 접근하는 방식입니다.
분석 파이프라인에서는 CLIP 임베딩으로 사진 간 유사도를 비교하고, 미적 평가 모델로 기본 품질 점수를 계산했습니다. 얼굴이 있는 사진은 DeepFace와 OpenCV 기반 지표를 함께 사용해 표정, 얼굴 선명도, 눈 감음 가능성을 반영했습니다. 단순히 "비슷한 이미지"를 찾는 데서 끝내지 않고, 실제로 사람이 고를 만한 사진을 앞에 두는 데 집중했습니다.
또 하나 중요하게 본 부분은 보안입니다. 이 도구는 로컬 전용으로 설계했습니다. 앱 서버는 127.0.0.1에만 바인딩되며, 사진을 외부 서비스로 업로드하지 않는 구조입니다. 개인 사진을 다루는 도구이기 때문에 편의성보다 로컬 처리 원칙을 우선했습니다.
만들고 나서 느낀 점
AI 도구를 만들 때 가장 중요한 것은 "AI가 어디까지 결정하게 할 것인가"를 정하는 일이라고 생각합니다. Photo Selector는 최종 판단까지 AI에게 맡기는 도구가 아닙니다. 대신 사람이 봐야 할 범위를 줄이고, 비교 순서를 정리해주는 보조자에 가깝습니다.
이 정도의 역할 분리가 실제 사용성에서는 더 안정적이었습니다. 추천은 빠르게 받고, 마음에 걸리는 장면은 직접 바꿀 수 있으니 자동화와 수동 검수 사이의 균형이 맞았습니다.
프로젝트는 공개 저장소로 정리했습니다.