GithubHelp home page GithubHelp logo

lipao12 / image2story Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 8.12 MB

O usuário escolhe uma imagem, então o programa cria uma história a partir dessa imagem

JavaScript 5.54% HTML 1.89% Python 26.95% TypeScript 61.04% CSS 4.58%

image2story's Introduction

Image to Story

Este projeto possui um frontend simples que, inicialmente, é assim:

  • Imagem 1:

    Início da página

Ao clicar no botão “Aleatório”, o site faz uma requisição à API https://api.unsplash.com utilizando o seguinte endpoint /photos/random?query=landscape&client_id= para obter uma imagem aleatória.

Como estou utilizando os modelos de Machine Learning, nesse caso Large Lenguage Model, eu preferi utilizar a linguagem Python. Para integrar o meu frontend com o backend, criei uma API em Python utilizando a biblioteca Flask.

Ao ser selecionada a imagem, serão realizadas as seguintes etapas:

  1. Chamada ao endpoint /convert_image (Método GET):

    Aqui será chamada a função img2text que utilizará pipeline("image-to-text", model="Salesforce/blip-image-captioning-base"). Inicialmente, o modelo não está treinado.

    Este modelo, por algum motivo, apenas aceita URLs de imagens como entrada.

    O modelo retornará o texto em inglês, então utilizei o método Translator da biblioteca googletrans para traduzir o cenário gerado para o português.

    O endpoint retornará: return jsonify({'title': translated_text, 'title_english': text}), 200.

    OBS: O modelo tem quase 1 GB de tamanho.

  2. Chamada ao endpoint /create_story (Método GET):

    Aqui a função text2story será chamada. Nela, estou utilizando o modelo gpt2 para criar a história a partir do cenário retirado da imagem em /convert_image.

    A história será em inglês, então utilizei o método Translator da biblioteca googletrans para traduzir a história gerada para o português.

    O endpoint retornará: return jsonify({'story': story_translated, 'story_english': story}), 200.

    Obs: Estou utilizando a API inference, já que é uma aplicação de demonstração, além de que eu não tenho muito espaço para utilizar o modelo completo. Utilizei a seguinte URL da API: API_URL = "https://api-inference.huggingface.co/models/gpt2". Ao utilizar isso, eu poderia fazer pelo JavaScript, mas como eu criei uma API para o primeiro modelo em Python, preferi continuar assim.

  3. Chamada ao endpoint /convert_speech (Método GET):

    Aqui estou utilizando, novamente, a API inference. A URL do modelo é: API_URL = "https://api-inference.huggingface.co/models/espnet/kan-bayashi_ljspeech_vits". Basicamente, chamarei a função text2speech e passarei a história criada em inglês.

    Esta função criará um áudio e retornará o caminho desse áudio.

    O endpoint retornará este caminho.

Com a imagem selecionada e tudo funcionando corretamente, temos isto:

  • Imagem 2:
    Resultado com Imagem Selecionada Resultado com História Gerada

Para realizar o upload local da imagem e utilizá-la nos modelos, eu tive que hospedar essa imagem. Para isso, criei o endpoint /upload e para ter acesso à imagem /uploads/<filename>. Para realizar o upload, toda vez que este endpoint for chamado, eu apago a pasta chamada uploads e depois a recrio, assim, eu não fico ocupando muito espaço com as imagens selecionadas localmente.

image2story's People

Contributors

lipao12 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.