arcsu1's picture
add face gen
1a96e8e
from transformers import GPT2Tokenizer, GPT2LMHeadModel
import torch
from datasets import load_dataset
import pandas as pd
import re
from numpy.random import randn
from keras.models import load_model
from matplotlib import pyplot
import matplotlib
import tensorflow as tf
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import chatbot
import textgen
import imagegen
app = FastAPI()
# Add CORS middleware to allow any origin
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows all origins
allow_credentials=True,
allow_methods=["*"], # Allows all methods (GET, POST, etc.)
allow_headers=["*"], # Allows all headers
)
@app.get("/")
def root():
return "Hello World"
# Define the Pydantic model to parse JSON input
from pydantic import BaseModel
class HistoryRequest(BaseModel):
user: list[str]
ai: list[str]
@app.post("/chatbot")
async def generate_response(history: HistoryRequest):
print("Chatbot request")
global model
try:
# check if model is already loaded
if not isinstance(model, chatbot.ChatBot):
model = chatbot.ChatBot(
'models/fine-tuned-gpt2',
GPT2Tokenizer.from_pretrained('models/fine-tuned-gpt2'),
GPT2LMHeadModel.from_pretrained('models/fine-tuned-gpt2'),
torch.device("cuda" if torch.cuda.is_available() else "cpu")
)
except NameError:
# if model is not defined, load
model = chatbot.ChatBot(
'models/fine-tuned-gpt2',
GPT2Tokenizer.from_pretrained('models/fine-tuned-gpt2'),
GPT2LMHeadModel.from_pretrained('models/fine-tuned-gpt2'),
torch.device("cuda" if torch.cuda.is_available() else "cpu")
)
response = model.generate_response(history)
return response
class TextGenInput(BaseModel):
user: str
@app.post("/text-gen")
async def generate_text(input: TextGenInput):
print("Generating text request")
global model
directory = 'models/fine-tuned-gpt2-textgen'
try:
# check if model is already loaded
if not isinstance(model, textgen.TextGen):
model = textgen.TextGen(
GPT2Tokenizer.from_pretrained(directory),
GPT2LMHeadModel.from_pretrained(directory),
torch.device("cuda" if torch.cuda.is_available() else "cpu")
)
except NameError:
# if model is not defined, load
model = textgen.TextGen(
GPT2Tokenizer.from_pretrained(directory),
GPT2LMHeadModel.from_pretrained(directory),
torch.device("cuda" if torch.cuda.is_available() else "cpu")
)
response = model.generate_text(input.user)
return response
@app.get("/face-gen")
async def generate_face():
print("Generating face image request")
global model
try:
# check if model is already loaded
if not isinstance(model, imagegen.FaceGen):
model = imagegen.FaceGen(
model = load_model('models/face-gen-gan/generator_model_100.h5'),
device = '/CPU:0'
)
except NameError:
# if model is not defined, load
model = imagegen.FaceGen(
model = load_model('models/face-gen-gan/generator_model_100.h5'),
device = '/GPU:0' if tf.config.list_physical_devices('GPU') else '/CPU:0'
)
response = model.generate_image(latent_dim=100,n_samples=128,seed=randn(100*128))
return response