File size: 1,788 Bytes
01f6bb0
 
 
 
 
 
 
 
 
 
 
 
 
16f4b98
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
be0cb7a
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import gradio as gr
from transformers import pipeline
from PIL import Image

import librosa
import numpy as np
import torch

from transformers import AutoProcessor, AutoModelForCausalLM

ic_processor = AutoProcessor.from_pretrained("microsoft/git-base")
ic_model = AutoModelForCausalLM.from_pretrained("microsoft/git-base")

def remove_background(image):
  pipe = pipeline("image-segmentation", model="briaai/RMBG-1.4", trust_remote_code=True)
  pillow_mask = pipe(image, return_mask = True)
  pillow_image = pipe(image)

  return pillow_image, predict(image)


def predict(image):
    pixel_values = ic_processor(images=image, return_tensors="pt").pixel_values
    text_ids = ic_model.generate(pixel_values=pixel_values, max_length=50)
    text = ic_processor.batch_decode(text_ids, skip_special_tokens=True)[0]
    
    return text

theme = gr.themes.Glass(
    primary_hue="gray",
    secondary_hue="green",
    neutral_hue="gray",
)

with gr.Blocks(theme=theme) as app:

  gr.Markdown('# Publicação de Produto')
  gr.Markdown('Esta aplicação realiza de forma automática a preparação de um produto de e-commerce, removendo o fundo e gerando a descrição do produto a partir da imagem enviada.')

  with gr.Row():

    with gr.Column():
      gr.Markdown('## Selecione a imagem a ser tratada')
      imagem_in=gr.components.Image(type='pil')
    with gr.Column():
      gr.Markdown('## Imagem tratada')
      imagem_out=gr.components.Image(type='pil', format='png')
      gr.Markdown('## Descrição do anúncio da image, a partir da imagem enviada.')
      destino_texto=gr.components.Textbox(value='')

  botao=gr.Button('Gerar Anuncio')
  botao.click(
      fn=remove_background, 
      inputs=imagem_in, 
      outputs=[imagem_out, destino_texto]
  )

app.launch(share=True)