Skip to content

Curso Completo de Gradio ​

Índice ​

  1. Introdução ao Gradio
  2. Instalação e Configuração
  3. Interface Básica
  4. Componentes e Inputs
  5. Integração com Machine Learning
  6. Layouts e Estilização
  7. Projeto Final

Introdução ao Gradio ​

O que é Gradio? ​

Gradio é uma biblioteca Python open-source que permite criar interfaces web interativas para modelos de machine learning e demonstrações de código. É especialmente útil para criar demonstrações de IA, protótipos e interfaces para modelos de deep learning.

Por que usar Gradio? ​

  • Interface simples e intuitiva
  • Suporte a múltiplos tipos de inputs/outputs
  • Integração fácil com frameworks de ML (TensorFlow, PyTorch, etc.)
  • Deploy rápido e compartilhamento fácil
  • Comunidade ativa e documentação extensa

Instalação e Configuração ​

Requisitos ​

  • Python 3.7+
  • pip (gerenciador de pacotes Python)

Instalação ​

bash
pip install gradio

Primeiro App ​

python
import gradio as gr

def saudacao(nome):
    return f"Olá, {nome}!"

demo = gr.Interface(
    fn=saudacao,
    inputs="text",
    outputs="text"
)

demo.launch()

Interface Básica ​

Componentes Fundamentais ​

python
import gradio as gr

def processar_texto(texto):
    return texto.upper()

# Interface básica
demo = gr.Interface(
    fn=processar_texto,
    inputs=gr.Textbox(label="Digite seu texto"),
    outputs=gr.Textbox(label="Resultado"),
    title="Processador de Texto",
    description="Digite um texto para convertê-lo em maiúsculas"
)

demo.launch()

Exercício 1 ​

Crie uma interface que:

  1. Aceite um número como input
  2. Calcule seu quadrado
  3. Retorne o resultado formatado

Componentes e Inputs ​

Tipos de Inputs ​

python
import gradio as gr

def processar_inputs(texto, numero, checkbox, radio):
    return f"Texto: {texto}\nNúmero: {numero}\nCheckbox: {checkbox}\nRadio: {radio}"

demo = gr.Interface(
    fn=processar_inputs,
    inputs=[
        gr.Textbox(label="Texto"),
        gr.Number(label="Número"),
        gr.Checkbox(label="Opção"),
        gr.Radio(["Opção 1", "Opção 2", "Opção 3"], label="Escolha")
    ],
    outputs="text"
)

Tipos de Outputs ​

python
import gradio as gr
import numpy as np
import matplotlib.pyplot as plt

def gerar_grafico():
    x = np.linspace(0, 10, 100)
    y = np.sin(x)
    plt.plot(x, y)
    return plt

demo = gr.Interface(
    fn=gerar_grafico,
    inputs=None,
    outputs="plot"
)

Exercício 2 ​

Crie uma interface que:

  1. Aceite uma imagem como input
  2. Aplique um filtro (ex: escala de cinza)
  3. Mostre a imagem original e a processada lado a lado

Integração com Machine Learning ​

Exemplo com Modelo de Classificação ​

python
import gradio as gr
import numpy as np
from sklearn.ensemble import RandomForestClassifier

# Treinar um modelo simples
X = np.random.rand(100, 4)
y = np.random.randint(0, 2, 100)
model = RandomForestClassifier()
model.fit(X, y)

def predict(feature1, feature2, feature3, feature4):
    prediction = model.predict([[feature1, feature2, feature3, feature4]])
    return "Classe 1" if prediction[0] == 1 else "Classe 0"

demo = gr.Interface(
    fn=predict,
    inputs=[
        gr.Number(label="Feature 1"),
        gr.Number(label="Feature 2"),
        gr.Number(label="Feature 3"),
        gr.Number(label="Feature 4")
    ],
    outputs="text",
    title="Classificador"
)

Exercício 3 ​

Crie uma interface para um modelo de regressão que:

  1. Aceite múltiplas features numéricas
  2. Faça a predição
  3. Mostre o resultado com um gráfico de dispersão

Layouts e Estilização ​

Layouts Personalizados ​

python
import gradio as gr

def processar_dados(texto, numero):
    return f"Processado: {texto} - {numero}"

with gr.Blocks() as demo:
    gr.Markdown("# Interface Personalizada")
    
    with gr.Row():
        with gr.Column():
            texto = gr.Textbox(label="Texto")
            numero = gr.Number(label="Número")
        with gr.Column():
            output = gr.Textbox(label="Resultado")
    
    btn = gr.Button("Processar")
    btn.click(fn=processar_dados, inputs=[texto, numero], outputs=output)

Estilização ​

python
import gradio as gr

css = """
.container {
    max-width: 800px;
    margin: auto;
    padding: 20px;
}
"""

with gr.Blocks(css=css) as demo:
    gr.Markdown("# Interface Estilizada")
    # ... componentes ...

Exercício 4 ​

Crie uma interface com:

  1. Layout em duas colunas
  2. Estilização personalizada
  3. Múltiplos componentes interativos
  4. Feedback visual para o usuário

Projeto Final ​

Aplicação de Processamento de Imagens ​

Objetivo ​

Criar uma aplicação completa que:

  1. Aceite upload de imagens
  2. Aplique diferentes filtros
  3. Mostre resultados em tempo real
  4. Permita download das imagens processadas

Código Base ​

python
import gradio as gr
import numpy as np
from PIL import Image, ImageFilter

def aplicar_filtro(imagem, filtro):
    img = Image.fromarray(imagem)
    if filtro == "Blur":
        img = img.filter(ImageFilter.BLUR)
    elif filtro == "Sharpen":
        img = img.filter(ImageFilter.SHARPEN)
    elif filtro == "Edge":
        img = img.filter(ImageFilter.EDGE_ENHANCE)
    return np.array(img)

with gr.Blocks() as demo:
    gr.Markdown("# Processador de Imagens")
    
    with gr.Row():
        with gr.Column():
            input_image = gr.Image(label="Imagem Original")
            filtro = gr.Radio(["Blur", "Sharpen", "Edge"], label="Filtro")
        with gr.Column():
            output_image = gr.Image(label="Imagem Processada")
    
    btn = gr.Button("Processar")
    btn.click(
        fn=aplicar_filtro,
        inputs=[input_image, filtro],
        outputs=output_image
    )

Exercício Final ​

Desenvolva uma aplicação Gradio para análise de sentimentos que inclua:

  1. Input de texto
  2. Processamento com modelo de ML
  3. Visualização do resultado
  4. Interface responsiva e intuitiva
  5. Documentação clara

Recursos Adicionais ​

Próximos Passos ​

  1. Explorar componentes avançados
  2. Implementar autenticação
  3. Fazer deploy no Hugging Face Spaces
  4. Integrar com APIs externas

Conclusão ​

Este curso forneceu uma base sólida para começar a desenvolver interfaces interativas com Gradio. Continue praticando e explorando as diversas funcionalidades disponíveis na biblioteca.

Lembre-se: A melhor maneira de aprender é praticando! Crie seus próprios projetos e experimente diferentes recursos do Gradio.

Todos os direitos reservados.