File size: 1,612 Bytes
9565e59
 
 
 
 
 
 
 
 
 
 
 
0c74d5c
 
 
 
 
 
 
 
 
 
9565e59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pathlib
temp = pathlib.PosixPath
pathlib.PosixPath = pathlib.WindowsPath
#|export
#fastai has to be available, i.e. fastai folder
from fastai.vision.all import *
import gradio as gr
import pickle

with open('./model.pkl', 'rb') as f:
    model = pickle.load(f)

if [ ! -f /etc/apt/sources.list ]; then
    echo "Creating /etc/apt/sources.list"
    echo "deb http://deb.debian.org/debian buster main" > /etc/apt/sources.list
    echo "deb-src http://deb.debian.org/debian buster main" >> /etc/apt/sources.list
    echo "deb http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list
    echo "deb-src http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list
    echo "deb http://deb.debian.org/debian buster-updates main" >> /etc/apt/sources.list
    echo "deb-src http://deb.debian.org/debian buster-updates main" >> /etc/apt/sources.list
fi

def is_real(x): return x[0].isupper()

#|export
learn = load_learner('model.pkl')

#|export
categories =('Virtual Staging','Real')

def classify_image(img):
    pred,idx,probs = learn.predict(im)
    return dict(zip(categories,map(float,probs)))

#*** We have to cast to float above because KAGGLE does not return number on the answer it returns tensors, and Gradio does not deal with numpy so we have to cast to float

#|export
#import gradio as gr
import gradio as gr
image = gr.inputs.Image(shape=(192,192))
label = gr.outputs.Label()
examples = ['virtual.jpg','real.jpg','dunno.jpg']

intf = gr.Interface(fn=classify_image,inputs=image,outputs=label,examples=examples)
intf.launch(inline=False)