7. Stable Diffusion Web UI 알아보기: ChatGPT로 만든 영화 줄거리를 Stable Diffusion으로 이미지화 해보기
- 본 포스팅은 내용은 상상 속 장면(일본에 소행성이 떨어졌을 때)을 이미지로 묘사하는 것이 목적입니다 -
Stable Diffusion Web UI를 통해 활용해본 기능은 아래와 같다.
Txt2Img: 프롬프트에 작성된 문구를 통해 새로운 이미지를 생성하는 기능
Img2Img: 프롬프트와 입력 이미지를 기반으로 새로운 이미지를 생성하는 기능
Inpaint: 입력 이미지에서 변경하고자 하는 구역을 설정하여, 프롬프트를 기반으로 특정 구역만 변경하는 기능
Web UI를 통해 사용할 수 있는 대표적인 기능은 몇 번씩 사용해보았다.
활용하면서 느낀 점은,
비록 별도의 프로그래밍은 필요 없지만, 상상과 가까운 결과 이미지를 얻기 위해선
구체적이고 창의적인 프롬프트 작성이 필요하고,
센스와 더불어 다양한 키워드를 알아두면 좋기 때문에 프롬프트 작성이 은근 어려웠다는 것이었다.
이미지 생성 인공지능과 더불어 요즘 유행하는 ChatGPT도 종종 활용해보며 기술을 체감하고 있는데
가장 흥미로웠던 것 중 하나는,
어떤 가정을 던져주었을 때 그에 해당하는 소설이나 시를 훌륭하게 작성해준다는 것이었다.
ChatGPT를 통해 생성된 글을 Stable Diffusion에 이용하면
인공지능의 상상으로 구현된 장면을, 인공지능의 상상을 가미하여 시각화 할 수 있지 않을까 기대하면서
ChatGPT를 활용하여 프롬프트를 작성해보고자 한다.
Stable Diffusion Web UI 설치 및 실행은 아래 게시글을 참고하면 된다.
https://kosonkh7.tistory.com/73
1. Stable Diffusion Web UI 알아보기: 설치 및 실행
https://youtu.be/emObTucGMOA 유튜버 조코딩님의 영상을 따라해보며 Stable Diffusion Web UI를 알아보고자 한다. api 등을 활용하여 코드를 작성할 수도 있겠지만, 최신 인공지능 동향을 알아보며 즐거운 마음
kosonkh7.tistory.com
1. 영화 속 장면을 ChatGPT로 묘사하기
요즘 SF 드라마를 즐겨보고, 일본 여행 계획을 세우는데 시간을 쏟고 있다.
최근 관심사를 반영하여 오사카에 소행성이 충돌했을 때의 장면을 그려보고자 한다.
우선 ChatGPT 에게 물어보았다.

지구가 멸망할 것 같냐는 질문에 조심스레 운석 충돌 가능성도 제기하더라
만약에 지구가 충돌한다면 피난처로 도망가면 좋은데, 그보다 충돌 가능성이 매우 낮다는 말이 더 많다.
아무래도 사실이 아닌 것을 전할 땐, 알려준다는 말투가 아니라 극히 조심스러워 하는 모습을 보인다.
위 답변이 듣고자 하는 영화 속 한 장면이었다.
오사카에 운석이 떨어진 직후의 장면을 글로 묘사하고 있다.
다섯 번째 단락은 결말에 해당하는 내용이기 때문에
네 번째 단락까지의 내용을 Stable Diffusion을 통해 각각 이미지로 구현해보려 한다.
2. Stable Diffusion으로 줄거리를 이미지로 묘사하기
곧바로 원하는 이미지가 나오지 않을 수 있겠지만
우선 첫 단락을 프롬프트에 그대로 복사 붙여넣기 해주었고,
이미지 해상도와 CFG Scale, 배치 사이즈를 적절하게 조정해주었다.
Scene 1
첫 장면은 번화한 오사카 거리에 운석이 충돌하면서 도시 전체에 충격파가 전해지는 내용이다.
운석 충돌 장면은 묘사되지 않았지만,
아마 충격파를 묘사하기 위해 선명한 이미지가 아니라 역동적이고 떨리는 듯한 결과로 출력된 것이 아닌가 싶다.
Scene 2
두 번째 장면은 건물이 무너지고, 자동차가 날라가고, 연기로 가득한 도시를 묘사한다.
배경 설정을 위하여 두 번째 단락 내용에 오른쪽 키워드만 적어주었을 뿐인데 (Over the city of Dotonbori in Osaka, Japan)
정말 놀라운 결과물이 나왔다.
사실 결과 이미지가 만족스럽지 않다면, 프롬프트에 여러 키워드를 추가할 각오를 하고 있었는데
단지 한 차례 생성만에 완벽한 결과 이미지들을 얻을 수 있었다.
Scene 3
세 번째 장면도 두 번째 장면과 유사한 내용이다.
다만 기대한대로(?) 예쁜 야경만 묘사되었고 디테일이 빠졌다.
디테일이 빠진 이유로는
1. 도톤보리라는 단어가, 번화하고 반짝이는 야경 이미지와 강력하게 연관되어 있고,
2. bright 등의 단어가 문장에서 의미하는 바와 달리, 그 단어 자체가 가진 뜻만으로 결과에 반영되는 것이 아닌가 싶었다.
문장의 배치 순서와, 단어 등을 바꿔 주어 원하는 결과 이미지를 얻고자 하였다.
단락 내용에서 중요한 부분을 소괄호 ()를 통해 강조하고, CFG Scale을 상향 조정하여
텍스트 내용을 살린 이미지 결과를 얻어보고자 한다.
수정한 프롬프트
Landscape of destruction and chaos of Dotonbori, Japan city, where (buildings all collapsed). ((Meteor shower)) in the Night Sky, creating (massive craters). dark, doom, distroyed city
부정 프롬프트: lively, positive, structured, (people), glittering sign, bright, signature, text
시행착오가 많았기에 추려낸 결과 이미지도 많다.
강조한 키워드(유성우가 떨어지는 밤하늘)가 전부 반영되지 않았지만,
그럼에도 상상한 것과 유사한 이미지를 제법 얻을 수 있었다.
Scene 4
4번째 장면은 폐허가 된 고요한 도시에서 유일한 생존자를 포커싱하는 장면이다.
이것도 프롬프트 가장 앞에 배경을 선정할 city of Dotonbori in Osaka 키워드만 붙여주었음에도 만족스러운 결과 이미지가 나왔다.
종종 여러 사람들이 나오곤 하는데, 부정 프롬프트에 (people)을 입력하여 조정을 시도하였다.
꼭 뜻대로 되지는 않았다.
이미지 구석에 알 수 없는 워터마크도 부정 프롬프트로 조정하면 좋았을 것 같다.
3. 느낀점 및 최종 결과물
여태 Stable Diffusion을 통해 이미지 생성하기 위해서 프롬프트 작성 시 정말 많은 시도 및 시행착오를 겪어야 했다.
특히 디테일한 부분을 상상하는대로 구현하는 것이 매우 어려웠다.
이번엔 ChatGPT가 완전한 문장을 생성해낸 덕인지
오랜 시간 들이지 않고도 정말 마음에 드는 이미지를 많이 생성한 것 같다.
해당 이미지 생성 목적은 그저 흥미였지만,
목적이 뚜렸하면 더욱 생성 인공지능을 통한 이미지 생성을 즐길 수 있을 것 같다는 생각을 했다.
최종적으로 추려낸 영화 속 장면을 이어 붙여보았다.