한동안 프로필 사진을 지브리 풍으로 바꾸는 것이 큰 유행이었던 적이 있었습니다.
당시에는 "AI 이미지 생성은 재미로 사용하는 기능" 정도로만 생각했습니다.
하지만 유튜버가 손으로 그린 썸네일 러프를 보고 생각이 달라졌습니다.
AI는 단순히 그림을 대신 그려주는 것이 아니라, 사람과 사람이 협업할 때 의사소통을 도와주는 도구가 될 수도 있다는 것을 알게 되었습니다.
대표적인 예가 Youtube 썸네일 제작입니다.
많은 유튜버들은 썸네일 디자니어와 협업합니다.
하지만 대부분의 운영자는 그림을 잘 그리지 못하기 때문에,
"이런 느낌으로 만들어 주세요."
라는 설명만으로 원하는 구도를 전달하기 어려운 경우가 있습니다.
물론 오래 함께 작업한 디자이너라면 어느 정도 의도를 파악할 수 있지만,
처음 협업하는 사람이라면 오해가 생긴 가능성이 큽니다.
이때 AI로 원하는 구도를 먼저 생성하여
"이런 느낌으로 만들어 주세요."
라고 전달하면 의사소통 시간이 크게 줄어들 것이라고 생각합니다.
일부 크리에이터는 AI만으로 썸네일을 제작하기도 하지만
저는 AI가 디자니어를 완전히 대체한다고 생각하지는 않습니다.
원하는 이미지를 얻기 위해서는 프롬프트를 계속 수정해야 하고,
생성 결과도 매번 달라질 수 있기 때문입니다.
결국 AI는 디자이너를 대신하는 도구라기 보다는 아이디어를 빠르게 시각화하는 도구에 가깝다고 생각합니다.
그래서 이번에는 Stable Diffusion을 이용하여 텍스트만 입력하면 이미지를 생성하는 프로그램을 만들어 보기로 했습니다.
프로젝트
이번 프로젝트에 사용하는 Stable Diffusion은 텍스트를 입력하면 이미지를 생성해 주는 대표적인 오픈소스 AI 모델입니다.
우리가 ChatGPT에게 글을 요청하는 것처럼,
Stable Diffusion은 문장을 입력받아 그에 맞는 이미지를 만들어 줍니다.
개발 과정
이전과 동일하게 개발에 사용하는 프롬프트는 단 3개 입니다.
- 콘솔에서 작동하는 프로그램을 만드는 프롬프트
- Flask 웹으로 변환하는 프롬프트
- Tailwind CSS로 웹을 꾸미는 프롬프트
항상 새로운 프로젝트를 시작할 때는 가상환경을 생성합니다.
파이션 가상환경 생성: python -m venv venv
파이션 가상환경 활성화: .\venv\Scripts\activate
가상환경을 사용하는 이유는 프로젝트마다 필요한 라이브러리를 독립적으로 관리하기 위해서입니다.
.1 이미지 생성 모델 만드는 프롬프트
프롬프트 1: Python과 diffusers 라이브러리를 사용하여 텍스트로 이미지 생성하는 AI 프로그램을 만들어줘. runwayml/stable-diffustion-v1-5와 같은 모델을 사용해서, 사용자가 텍스트 프롬프트를 입력하면 이미지를 생성해줘.
추가 옵션은 추론 단계 수, 프롬프트 준수 강도, 생성할 이미지 너비, 생성할 이미지 높이, 랜덤 시드 지정하게 해줘.
처음 실행시 텍스트와 추가 옵션은 자동으로 설정해서 이미지를 만들어줘.


- runwayml/stable-diffustion-v1-5 모델
추가 프롬프트
프롬프트 1-1: 해당 파이션을 실행하기 위해 필요한 의존성 패키지 requirement.txt 파일을 생성해주고, 프로젝트 소개 및 기능 설명을 담은 문서 README.md 파일을 생성해줘.
라이브러리 리스트 설치: pip install -r requirements.txt
py파일 실행: python text_to_image.py

처음 실행했을 때 Stable Diffusion 모델(약 4GB)을 다운로드하는 과정에서 Python이 종료되었습니다.
다행히 모델 일부가 캐시에 저장되어 있었기 때문에 다시 실행하니 정상적으로 다운로드가 완료되었고 이후에는 문제없이 사용할 수 있었습니다.

.2 Flask 앱으로 변환하고 꾸미는 프롬프트
프롬프트 2: web으로 실행하기 위해 flask 기능의 파일을 만들어줘. 파일은 app.py을 flask 실행을 위해 파일로 만들고 templates 폴더안에 index.html을 만들고 static 폴더 안에 필요한 css, js 파일을 만들어줘.
프롬프트 3: Tailwind CSS를 적용해서 예쁘게 만들어줘.


CSS와 JavaScript 파일을 static/css, static/js가 아니라 static 폴더 바로 아래에 생성하여
Flask에서는 경로가 달라지면서 CSS가 적용되지 않았고 화면은 HTML 형식으로만 표시되었습니다.

실시간으로 출력은 되지 않았지만 실제로는 이미지가 생성되는 것을 볼수 있습니다.
이전과 동일한 기본값 프롬프트로 이미지를 생성하였지만 다른 그림을 생성한 것을 볼 수 있습니다.
여러 번 "Tailwind CSS가 적용되지 않았어요." 라고 질문했지만 해결되지 않았습니다.
이유는 AI가 잘못된 답을 해서가 아니라, 제가 문제를 정확하게 설명하지 못했기 때문입니다.
AI는 오류 메시지나 프로젝트 구조처럼 구체적인 정보를 제공할수록 더 정확한 답을 제시합니다.
이번 경험을 통해 "AI에게 질문하는 능력도 개발자의 중요한 역량이다." 라는 점을 다시 느꼈습니다.
이번 프로젝트에서 배운 점
- Stable Diffusion 모델은 처음 실행 시 약 4GB 이상의 모델을 다운로드한다.
- 모델은 한 번만 로드하고 여러 번 재사용하는 구조가 효율적이다.
- Flask는 templates와 static 폴더 구조를 정확히 따라야 한다.
- AI가 생성한 코드도 실행하면서 반드시 검증해야 한다.
- 문제를 해결하려면 "결과"보다 "원인"을 설명하는 질문이 더 중요하다.
- AI는 개발자를 대신하는 것이 아니라 시행착오를 줄여 주는 협업 도구에 가깝다.
'데이터 분석 > IT' 카테고리의 다른 글
| Cursor AI와 Claude AI로 뉴스 기사 자동 요약 프로그램 만들기 (Flask + KoBART 프로젝트) (0) | 2026.07.24 |
|---|---|
| Flask를 배우기 전에 꼭 알아야 할 웹의 기본 원리 (HTTP, Request, Response) (0) | 2026.07.09 |
| Cursor AI로 AI 이미지 분석기 만들기 | Hugging Face API + Flask 프로젝트 (0) | 2026.07.07 |
| Cursor AI로 AI 챗봇 만들기 | Rule-based 챗봇부터 Flask 웹 구현까지 (0) | 2026.07.02 |
| Cursor AI로 손글씨 숫자 인식 AI를 만들어본 후기 (3) | 2026.06.06 |