스테이블 디퓨전(Stable Diffusion)의 많은 활용사례가 쏟아지고 있는 가운데, 이미지 압축에서도 활용해보는 연구(by Matthias Bühlmann in Medium)가 있네요. 기본 스테이블 디퓨전에서는 VAE의 decoder, U-NET, Text encoder이 사용되는데, 이미지 압축 및 복원 모델에서는 VAE의 encoder와 decoder 그리고 U-NET이 사용됩니다. VAE encoder을 이용하여 입력 이미지에 대한 잠재벡터를 구한 뒤, 이 잠재벡터를 양자화 시킨 후 복원해도 성능이 좋다는 것입니다(물론 손실압축입니다). 아래는 AIHub에서 제공하는 위성영상 객체판독 데이터셋으로 테스트 해본 것입니다.
원문으로 보면 이미지 압축에 사용하는 데 있어서 콘텐츠에 따라 제약사항도 원문에서 설명하고 있지만, 스테이블 디퓨전이 텍스트 2 이미지외에 여러 태스크에 확산된다는 것이 고무적이네요~ 여러 영상처리 태스크의 활약도 기대해볼만 하네요.
코드 실행 가이드
원문에 포함된 코랩 코드 실행하기 위해 설정해줘야 할 부분에 대해서 설명드립니다. 코랩에 가이드가 나와있긴 하지만, 대부분 그냥 돌려보고 안되면 포기하는 경우가 많아서, 정리해봤습니다.
- 코랩의 Import Libraries 셀을 실행한 후, 출력 창에 생기는 “RESTART RUNTIME”이란 버튼을 클릭합니다.
- 허깅페이스(huggingface)에 가입한 후, Profile > Access Tokens > User Access Tokens 를 실행하여(또는 https://huggingface.co/settings/tokens 에서) 토큰을 하나 만듭니다.
- 2번에서 만든 토큰을 코랩의 Settings의 huggingface_token 값을 설정합니다.
- https://huggingface.co/CompVis/stable-diffusion-v1-4 에 접속하여 라이센스 정책을 읽어보고 아래 동의 체크 및 “Access repository” 버튼을 클릭합니다.
- 입력 폴더에 테스트할 파일을 업로드 합니다. “/content/drive/MyDrive/compression_test/input/” 폴더를 만든 뒤 테스트할 파일을 업로드 합니다.
원문 및 참조
- 원문 및 코드 : https://pub.towardsai.net/stable-diffusion-based-image-compresssion-6f1f0a399202
- 위성영상 데이터셋 : https://www.aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100