본문 바로가기

만들고 싶은거 만들기

광고 수익을 창출할 웹사이트 만들어보기 2-1 (flask 개발환경 만들기)

2단계를 시작해보자

 

채찍피티가 말해준대로 수행할거다.

내 자아는 없다.


2단계: 기술 스택 선정

AI 모델

  • Stable Diffusion: 간단한 이모티콘 이미지를 생성하기에 적합.
  • LoRA 학습: 이모티콘 스타일(간단하고 귀여운 이미지)을 추가 학습.

백엔드

  • Python (Flask/Django): AI 모델과 사용자 요청 처리.
  • 이미지 생성 후 저장(임시 URL 제공).

프론트엔드

  • React.js 또는 Vue.js: 사용자가 입력과 결과를 확인할 수 있는 인터페이스 구축.

이미지 저장 및 공유

  • AWS S3: 생성된 이미지를 저장하고 URL로 접근.
  • 카카오톡/디스코드 API: 공유 기능 구현.

일단 이모티콘을 생성해주는 이미지를 생성해주는 AI 모델을 생성해야 한다.

Stable Diffusion 서버를 로컬환경에 직접 띄울수 있게 만들어보겠다.

 

적당한 D:/ 드라이브에 적당한 네이밍의 폴더를 하나 만든다.

 

 

 

이름은 emoji-generator 로 하겠다. 적당해 보이는군.

 

바로 VS코드 켜서 폴더를 열어준다. 개발은 여기서 진행할꺼임

 

일단 처음 세팅해줘야하는 가상환경을 만들어주겠다.

Python 가상환경을 만들어 필요한 라이브러리를 독립적으로 관리해주기 때문에 사용한다.

vs코드에서 터미널 열고 입력해준다.

python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

 

위 명령어를 vs터미널에 입력해주면 venv라는 가상환경이 생성되고

venv\Scripts\activate 명령어는 가상환경에 들어가는거다.

 

여기서 Stable Diffusion 및 Flask/Django 관련 라이브러리 설치해준다.

pip install flask torch transformers diffusers Pillow boto3
그럼 뭐가 막 다운로드 되면서 venv/lib 안에 알아서 설치된다. (체감 상 5분정도 걸리니까 화장실 갔다온다)
 
  • Flask: 파이썬 웹 프레임워크, 웹 애플리케이션 개발에 사용.
  • Torch: PyTorch, 딥러닝 프레임워크로 모델 훈련과 추론에 사용.
  • Transformers: NLP 및 AI 모델(예: GPT, BERT)을 위한 라이브러리.
  • Diffusers: 생성 AI 모델(예: Stable Diffusion)을 위한 라이브러리.
  • Pillow: 이미지 처리 라이브러리, 이미지 열기/저장/편집 가능.
  • boto3: AWS 서비스와 통신하기 위한 Python SDK.

 

일단 flask로 개발할 백앤드 환경은 만들어졌다.

백앤드에서 해야할 일은 아래와 같다.


Flask 서버에서 해야 할 작업:

  1. 이미지 생성 API 구현:
    • 사용자가 입력한 프롬프트를 받아 이미지를 생성하는 API 작성.
  2. 테스트 데이터 반환:
    • Stable Diffusion을 나중에 연결하기 전에, 기본적으로 잘 작동하는지 확인하기 위해 간단히 텍스트나 이미지 데이터를 반환하도록 설정.
  3. 파일 구조 정리:
    • Flask 프로젝트의 파일을 깔끔히 정리.

이미지 생성 API 부터 구현 해보자

 

vs코드에서 app.py를 생성하고 아래 코드를 추가하여 프롬프트를 처리하는 API를 만든다.

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/generate', methods=['POST'])
def generate_image():
    # 사용자가 입력한 프롬프트 받기
    data = request.json
    prompt = data.get("prompt", "default prompt")

    # 테스트 응답: 생성된 이미지를 대신하여 텍스트 응답 반환
    response = {
        "status": "success",
        "message": f"Image generated for prompt: {prompt}"
    }
    return jsonify(response)

if __name__ == "__main__":
    app.run(debug=True)

 

app.py의 로직을 대략적으로 설명한다면

/generate 경로로 POST 요청을 받아 JSON 데이터에서 prompt를 추출하고,

해당 프롬프트에 기반한 이미지 생성 결과(현재는 테스트용 메시지)를 JSON으로 응답한다.
이미지 생성 로직은 미구현 상태이며, 클라이언트는 prompt를 포함한 JSON을 보내야 한다.


서버는 디버그 모드로 실행되며, 개발 중 테스트와 디버깅에 적합하다.


 

일단 실제 이미지를 반환하는 대신, 간단한 JSON 데이터를 반환하도록 한다.(테스트 목적)

python app.py

 

이후 터미널에서 위 명령어로 서버를 띄운 후 자주 사용하는 Postman으로 테스트해보자

 

서버는 잘 기동됬고 ,

 

POST요청 보내니까 응답도 잘 온다. 굿~


 

다음 순서는 실제 스테이블 디퓨전 테스트를 진행해보겠다.