PyTorch based Web Demo app


Install
pip install piedemo==2.0.6

Documentation

piedemo

git clone https://github.com/NVlabs/stylegan3  
cd stylegan3  
piedemo web gen_images:generate_images  

telegram-cloud-photo-size-2-5206465743007367175-y telegram-cloud-photo-size-2-5206465743007367176-y telegram-cloud-photo-size-2-5206465743007367178-y

from PIL import Image
import torch
from torchvision.models import resnet50
from torchvision.transforms import transforms as T
import pandas as pd
from piedemo.checkpoint import PretrainedCheckpoint
from piedemo.fields.outputs.piegraph import PieGraph


ckpt = PretrainedCheckpoint(
    url="https://raw.githubusercontent.com/xmartlabs/caffeflow/master/examples/imagenet/imagenet-classes.txt",
    filename="imagenet_classes.txt")
with open(str(ckpt.download()), "r") as f:
    categories = [s.strip() for s in f.readlines()]
model = resnet50(pretrained=True)
model.eval()
preprocess = T.Compose([
    T.Resize([256, 256]),
    T.CenterCrop(224),
    T.PILToTensor(),
    T.ConvertImageDtype(torch.float),
    T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])


def classify(img: Image.Image):
    print(img)
    if img.size == (0, 0):
        return {
            "output": pd.DataFrame({}),
            "pie": PieGraph()
        }
    batch = preprocess(img).unsqueeze(0)
    prediction = model(batch).squeeze(0).softmax(0)
    class_ids = prediction.argsort()[-5:].tolist()[::-1]
    scores = [prediction[class_id].item() for class_id in class_ids]
    names = [categories[class_id] for class_id in class_ids]

    return {
        "output": pd.DataFrame({
            'categories': names,
            'scores': scores
        }),
        "pie": PieGraph([{"label": n, "prob": s} for n, s in zip(names, scores)])
    }

piedemo web infer_resnet_imagenet:classify

image

image

image

Set up rclone tool for better experience:

curl https://rclone.org/install.sh | sudo bash
rclone config

After that use Google Drive hosting and verify your account. If you use remote connection, verify your account via port forwarding.
ssh -L localhost:53682:localhost:53682 ...

You can simply host your file in Google Drive and use it everywhere you want:

python -m piedemo host 1.txt
Host model option
Transferred:              0 B / 0 B, -, 0 B/s, ETA -
Checks:                 1 / 1, 100%
Elapsed time:         1.7s
Url: 
https://drive.google.com/open?id=1nN64iU6EY490YMjI3GHfNQhbN4tVmhtu
Filename: 
1.txt
Code:
PretrainedCheckpoint(gdrive='1nN64iU6EY490YMjI3GHfNQhbN4tVmhtu',
                     filename='1.txt')