Text Prompt + Super Resolution

프로젝트 ②

Text Prompt + SR 프롬프트 기반 선택적 4x 업스케일링

파이프라인

1
입력
- 활용 이미지 업로드
- 한글 프롬프트 입력
2
프롬프트 번역
- Helsinki-NLP를 활용한
   한→영 번역
3
객체 영역 탐지
- Grounding DINO를
   활용한 객체 위치 탐지
6
4x 업스케일링
- SwinIR을 활용한
   객체 4x 업스케일링
5
대상 선택
- 탐지된 객체 중 원하는
   대상 선택
4
객체 마스킹
- SAM2를 활용해 정교한
   객체 마스크 생성

사용 기술

업스케일링 모델 SwinIR
객체 탐지 모델 Grounding Dino, SAM2
번역 모델 Helsinki-NLP (Opus-MT, ko→en)
프레임워크 PyTorch
백엔드 FastAPI
클라우드 Google Cloud Platform
배포 Docker
이미지 처리 Pillow, OpenCV

결과

ㆍ 프롬프트 번역 결과

     "왼쪽에 있는 갈색 강아지 찾아줘"  →  "Find the brown puppy on the left."


ㆍ 원본 이미지


ㆍ Grounding DINO 처리 결과


ㆍ SAM2 처리 결과


ㆍ 업스케일 처리 결과

Before
After

체험해 보기


고찰

ㆍ 초기 문제점
      - 여러 객체 탐지 되어도 스코어가 가장 높은 1개만 출력 되도록 설정
        └ 정확도가 떨어지는 문제 발생
      - 사전 학습된 SAM2모델의 기본 자동 Segment만 사용
        └ 배경만 추출되거나, 객체의 일부가 짤리는 현상 발생
      - 입력된 프롬프트와 다른 의미로 번역되는 번역 모델의 한계

ㆍ 개선 과정
      - 여러 결과를 출력 후 사용자에게 선택권을 맡김
      - 모폴로지 처리, GDINO 처리 결과 크롭 이미지의 중심엔 반드시 객체가
         존재하는 아이디어를 이용해 중앙부, 외곽부 차이를 활용하는 후처리 적용
      - 제한적인 비용 및 환경으로 Google Translation API 같은 고급 언어 모델 사용 못함
        └ HuggingFace 공개 모델 중 파인튜닝된 모델로 보완

ㆍ 느낀 점
      - 무조건적인 사전 학습된 모델의 신뢰는 결과에 악영향을 끼침을 깨달음
        └ 추가적인 보정으로 인해 결과가 천차만별로 나타날 수 있음을 느낌
      - 제한적인 비용 및 환경 등으로 다양한 번역 모델에 관한 실험이 어려웠지만,           공개된 모델을 검색 및 적용 과정 자체가 큰 경험이 되었음