Spaces:
Sleeping
Sleeping
File size: 2,647 Bytes
00a6912 efc44a0 c56fecd efc44a0 00a6912 c56fecd bdf731b 2608dfa 74a6a5b 2608dfa 7381a80 74a6a5b 2608dfa 2bc3360 efc44a0 2bc3360 ee3b2a7 d323796 2bc3360 d323796 c56fecd bdf731b c56fecd 74a6a5b c56fecd bdf731b 49f046a c56fecd 74a6a5b | 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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | import streamlit as st
import PIL
import sys
import zipfile
from fastai import *
import numpy as np
import pandas as pd
import os
import timm
from timm import create_model
from fastai.vision.all import *
import torchvision.transforms as T
torch.device('cpu')
def seed_everything(seed):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.backends.cudnn.deterministic = True
seed_everything(42)
test = {
'Id': ['2022-12-21 00.49.46.jpg', '2022-12-21 00.49.46.jpg'],
'Eyes': [0.3, 0.2],
}
train_df = pd.DataFrame(test)
print(train_df)
dls = DataBlock(blocks=(ImageBlock, CategoryBlock),
get_x=ColReader('Id'),
get_y=ColReader('Eyes'),
splitter=RandomSplitter(0.2),
item_tfms=Resize(224),
batch_tfms=setup_aug_tfms([Brightness(), Contrast(), Hue(), Saturation(), Flip(size=224)]),
)
paw_dls = dls.dataloaders(train_df, batch_size=8, seed=12, device='cpu')
test = paw_dls.test_dl(train_df)
learn = cnn_learner(paw_dls, models.resnet50, pretrained=False, metrics=error_rate)
learn.to('cpu')
catanddog = learn.load('dog')
st.title("PawPularity Score")
file_name = st.file_uploader("Upload a photo of your pet a get an estimate how popular it is gonna be!", type=["jpg", "jpeg"])
my_bar = st.progress(0, text="PawScore")
if file_name is not None:
col1, col2 = st.columns(2)
image = Image.open(file_name)
print(image)
img_fastai = np.array(image)
col1.image(image, use_column_width=True)
pred = catanddog.predict(img_fastai)[1]
print(pred)
def metric_rmse(input,target):
return 100*torch.sqrt(F.mse_loss(F.sigmoid(input.flatten()), target))
model = create_model('swin_large_patch4_window7_224', pretrained=False, num_classes=1)
learn = Learner(paw_dls, model, loss_func = BCEWithLogitsLossFlat(), metrics=metric_rmse)
# learner = learner.load(f'/kaggle/input/puredog/pure-dog-{fold}')
if pred == 0:
learn.load('pure-dog-5')
pred = learn.predict(image)
col2.header("Score for this doggo:")
col2.subheader(f"{ round(float(pred[2]) * 100, 1)}%")
my_bar.progress(round(float(pred[2]) * 100), text="PawScore")
if pred == 1:
learn.load(f'pure-cat-0')
pred = learn.predict(image)
print(pred)
print("Score for this catto:", min(int(pred[2] * 100 + 35), 100))
col2.header("Score for this catto:")
col2.subheader(f"{ round(float(pred[2]) * 100, 1)}%")
my_bar.progress(round(float(pred[2]) * 100), text="PawScore")
|