Exemplo de primeiros passos do Gradio

    Com a popularidade de estruturas de diálogo de robôs, como chat-gpt, uma estrutura chamada Gradio também é popular. Essa estrutura pode abrir um serviço http e possui uma interface de entrada e saída, o que pode fazer com que projetos de inteligência artificial de diálogo sejam executados rapidamente.

    A Gradio afirma ser capaz de implantar rapidamente projetos de visualização de IA.

    Vamos sentir isso através de dois exemplos: Primeiro, precisamos instalar a biblioteca gradiente.

pip install gradio

    Em seguida, escreva o seguinte código: O usuário insere uma string xxx. Após o envio, um hello e xxx são gerados.

import gradio as gr


def hello(name):
    return "hello," + name + "!"


def launch():
    demo = gr.Interface(fn=hello, inputs='text', outputs='text')
    demo.launch()


if __name__ == '__main__':
    launch()

    Ao executar este código, você pode abrir a porta 7860 para ouvir o serviço http. Quando o navegador acessar http://localhost:7860, você pode abrir a seguinte interface:

     Escreva outro exemplo sobre reconhecimento de imagem. O código é o seguinte:

import torch
from PIL import Image
from torchvision import transforms
import gradio as gr
import json

with open('imagenet-simple-labels.json', 'r') as load_f:
    labels = json.load(load_f)
model = torch.hub.load("pytorch/vision:v0.6.0", "resnet18", pretrained=True).eval()


def predict(inp):
    inp = Image.fromarray(inp.astype("uint8"), "RGB")
    inp = transforms.ToTensor()(inp).unsqueeze(0)
    with torch.no_grad():
        prediction = torch.nn.functional.softmax(model(inp)[0], dim=0)
    return {labels[i]: float(prediction[i]) for i in range(1000)}


inputs = gr.Image()
outputs = gr.Label(num_top_classes=3)
demo = gr.Interface(fn=predict, inputs=inputs, outputs=outputs)

if __name__ == '__main__':
    demo.launch()


    Execute o código, ele fará o download da versão pytorch/vision:v0.6.0 e baixará um arquivo de modelo resnet18: resnet18-f37072fd.pth para o diretório .cache\torch\hub\checkpoints\ no diretório do usuário.

    As informações de impressão em execução são as seguintes:

    Abrimos o navegador http://localhost:7860 e selecionamos na interface as imagens de leopardo e cachorro que preparamos antecipadamente:

    Um leopardo é identificado aqui, mostrando uma chita.

    Tente novamente com um cachorro diferente:

    O resultado foi um labrador.

    Os três resultados mais prováveis ​​são definidos no código, outputs = gr.Label( num_top_classes=3 ), portanto, as três situações mais prováveis ​​estão listadas aqui.

     Quando o código acima é executado, um aviso é relatado:

D:\Program Files\Python\Python310\lib\site-packages\torchvision\models\_utils.py:208: UserWarning: O parâmetro 'pretrained' está obsoleto desde 0.13 e pode ser removido no futuro, use 'pesos' em vez de.
  warnings.warn(
D:\Program Files\Python\Python310\lib\site-packages\torchvision\models\_utils.py:223: UserWarning: Argumentos diferentes de enum de peso ou `None` para 'pesos' estão obsoletos desde 0.13 e pode ser removido no futuro. O comportamento atual é equivalente a passar `weights=ResNet18_Weights.IMAGENET1K_V1`. Você também pode usar `weights=ResNet18_Weights.DEFAULT` para obter os pesos mais atualizados. warnings.warn(
  msg )

    Isso significa que quando torch.hub.load carrega o modelo, os parâmetros pré-treinados ficam desatualizados e podem ser substituídos por pesos=ResNet18_Weights.DEFAULT.

    Após a modificação do código, o aviso não será mais reportado. Do seguinte modo:

    Um exemplo no site oficial, há um arquivo no artigo de https://git.io/JJkYN , que não pode mais ser baixado, mas pode ser encontrado diretamente no github: https://raw.githubusercontent.com /anishathalye/imagenet-simple-labels /master/imagenet-simple-labels.json

    Aqui ele é baixado antecipadamente e depois lido em JSON. O conteúdo é de 1000 tags de destino. 

Acho que você gosta

Origin blog.csdn.net/feinifi/article/details/130816960
Recomendado
Clasificación