030 프로젝트
수동/자동 배경제거 편집기
수동 편집기와 Autoencoder 기반 자동 배경제거를 구현한 인턴 프로젝트
ETRI 인턴 기간에 2인 팀으로 진행한 AI 기반 영상 배경제거 프로젝트입니다. 수동 편집기와 자동 배경제거 실험, 성능 확인 흐름을 구현하고 2페이지 분량의 짧은 페이퍼로 결과를 정리했습니다.
- Python 기반 수동/자동 배경제거 편집기 구현
- OpenCV GrabCut과 Keras Autoencoder를 활용한 영상 배경제거 실험
- F-measure 성능 확인 및 2페이지 짧은 페이퍼 작성
프로젝트 개요
ETRI 인턴 기간에 진행한 수동/자동 배경제거 편집기 및 성능 파악 프로젝트입니다.
영상의 첫 프레임에서 전경과 배경을 구분하고, 그 기준을 영상 전체에 적용할 수 있는 흐름을 만드는 것이 핵심이었습니다. 수동으로 배경을 보정하는 편집기와 Autoencoder 기반 자동 배경제거 실험, 결과 성능 확인까지 함께 진행했습니다.
기술 스택
언어
Python
3.6
편집기와 자동 배경제거 실험 구현
플랫폼
Tkinter
데스크톱 편집기 UI 구성
프레임워크
OpenCV
영상 프레임 처리, GrabCut, 마스크 생성, 비디오 입출력
Pillow
이미지 로딩과 수동 편집 흐름에 활용
NumPy
프레임과 마스크 데이터를 배열 단위로 처리
Keras
Autoencoder 모델 구성과 학습
기타
scikit-learn
F-measure 성능 확인에 활용
AI/ML
첫 프레임의 전경/배경 기준을 영상 전체에 적용하는 실험
팀 구성
- Python 개발 / AI 모델 적용 / 편집기 구현 / 성능 확인 2명 - 2인 팀으로 인턴 과제를 수행
기획 배경
인턴 기간 동안 맡은 키워드는 인터랙티브 미디어였습니다.
영상 편집 과정에서 첫 프레임의 전경/배경 정보를 기준으로 이후 프레임에 적용할 수 있는 방식을 탐색했고, 이를 위해 먼저 사람이 보정할 수 있는 편집기와 자동화 실험을 함께 준비했습니다.
목표와 구현 범위
프로젝트 범위는 크게 수동 편집기, 자동 배경제거 실험, 성능 확인으로 나뉘었습니다.
수동 편집기에서는 영상 프레임을 불러와 브러시로 배경과 전경을 보정하고, 프레임 이동, 색상 선택, 저장, 영상 프레임 추출과 재합성 흐름을 다뤘습니다. 자동 배경제거 실험에서는 첫 프레임에서 얻은 배경 정보를 Autoencoder 학습에 활용하고, 영상 전체 프레임에 결과를 적용하는 흐름을 구현했습니다. 자동 결과의 성능을 확인하려면 비교 기준이 필요했기 때문에, 수동으로 보정한 결과를 기준 데이터처럼 활용하는 구조도 함께 잡았습니다.
내 역할과 기여
2인 팀으로 과제를 수행하며 예시로 정리한 구현 범위를 모두 진행했습니다.
Python 기반 데스크톱 편집기 구현, OpenCV GrabCut을 활용한 배경 보정, Keras Autoencoder를 활용한 자동 배경제거 실험, 마스크 영상 생성과 F-measure 기반 성능 확인을 진행했습니다. 최종적으로 결과를 2페이지 분량의 짧은 페이퍼로 정리했습니다.
실제 구현/기여 상세
- Tkinter와 Pillow를 활용해 수동 배경제거 편집기 UI와 편집 흐름을 구현했습니다.
- OpenCV로 영상 프레임 추출, 마스크 처리, 비디오 저장 흐름을 구현했습니다.
- 첫 프레임의 보정 결과를 바탕으로 Keras Autoencoder 자동 배경제거 실험을 진행했습니다.
- 자동 결과와 수동 기준 영상을 비교하기 위해 F-measure 기반 성능 확인 흐름을 구성했습니다.
- 프로젝트 결과를 2페이지 짧은 페이퍼로 정리했습니다.
설계와 구현
수동 편집기는 Tkinter 기반 UI와 OpenCV/Pillow 이미지 처리 흐름으로 구성했습니다. 브러시 크기 조절, 배경/전경 색상 선택, 프레임 이동, Undo/Redo, 영상 자르기와 저장 흐름을 포함했습니다.
자동 배경제거 실험은 첫 프레임에서 전경과 배경을 분리한 결과를 학습 데이터로 사용하고, Keras Autoencoder를 통해 이후 프레임에 배경제거 결과를 적용하는 방식으로 진행했습니다. 프레임을 10x10, 20x20, 40x40 단위로 나누어 학습하는 실험을 비교했고, 성능 확인을 위해 마스크 영상을 생성해 수동 결과와 자동 결과를 비교했습니다.
어려웠던 점과 해결
Python과 AI 모델을 업무에 바로 적용해야 했기 때문에 학습과 구현을 동시에 진행해야 했습니다.
특히 영상은 이미지 한 장과 달리 프레임 단위의 일관성이 중요했습니다. GPU 환경에서 모델을 돌리며 CNN/Autoencoder 로직을 개선하고 loss를 낮추는 기준을 잡는 것도 쉽지 않았습니다. 케이스와 영상 품질에 따라 결과가 달라졌기 때문입니다.
처음에는 범용적으로 잘 분리하는 모델을 기대했지만, 인턴 기간 안에서 안정적으로 검증하기에는 범위가 컸습니다. 그래서 목표를 “한 영상의 한 프레임을 기준으로 최적화하고, 그 기준을 영상 전체에 적용해보는 것”으로 재설계해 문제를 좁혔습니다.
결과와 배운 점
수동/자동 배경제거 편집기와 성능 확인 흐름을 구현했고, 결과를 2페이지 분량의 짧은 페이퍼로 정리했습니다.
실험에서는 10x10, 20x20, 40x40 단위 비교를 진행했습니다. F-measure는 각각 0.9614, 0.9702, 0.9787로 확인했고, loss는 0.0035, 0.0020, 0.0014로 낮아졌습니다. 대신 학습 시간은 420초, 1014초, 1320초로 늘어났기 때문에 결과 품질과 학습 비용을 함께 비교했습니다.
페이퍼에는 수동 기준 결과와 자동화 실험 결과를 비교하며, 연구 전후의 결과와 한계를 함께 정리했습니다.
이 프로젝트를 통해 Python, OpenCV, Keras를 실제 과제에 적용해보았고, 이미지 처리와 영상 편집 도메인에서 AI를 실험적으로 적용하는 흐름을 경험했습니다.