Spaces:
Sleeping
Sleeping
File size: 2,384 Bytes
cb70b4c 249653c 3eeeced 48b3a1c 7a5b6f5 a254dcb 3eeeced a254dcb 7c4c927 8503f33 3eeeced 115b639 9e8b807 115b639 d52eb29 a254dcb 9e8b807 b450e69 115b639 7c4c927 9e8b807 7c4c927 562ce81 079f211 7c4c927 a254dcb 7b7b81a 7c4c927 a254dcb 7c4c927 fffc3a2 115b639 d1879c0 b872349 d1879c0 9e8b807 115b639 f17ecc5 11dac02 67adcd0 a254dcb 5264799 cb70b4c 1f780c8 2b6e66a cb70b4c |
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 |
import gradio as gr
import requests
import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as T
from transformers import AutoFeatureExtractor, ResNetForImageClassification
import timm
feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/resnet-101")
model = ResNetForImageClassification.from_pretrained("microsoft/resnet-101")
model.eval()
import os
def print_bn():
bn_data = []
for m in model.modules():
if(type(m) is nn.BatchNorm2d):
# print(m.momentum)
bn_data.extend(m.running_mean.data.numpy().tolist())
bn_data.extend(m.running_var.data.numpy().tolist())
bn_data.append(m.momentum)
print(len(bn_data))
bn_data.extend(model.resnet.embedder.embedder.convolution.weight.data.numpy().tolist())
print(model.resnet.embedder.embedder.convolution.weight.data.numpy().tolist())
return bn_data
def update_bn(image):
cursor_im = 0
image = T.Resize((90,90))(image)
image = image.reshape(-1)
for m in model.modules():
if(type(m) is nn.BatchNorm2d):
if(cursor_im < image.shape[0]):
M = m.running_mean.data.shape[0]
if(cursor_im+M < image.shape[0]):
m.running_mean.data = image[cursor_im:cursor_im+M]
cursor_im += M
print(cursor_im,':',cursor_im+M)
else:
m.running_mean.data[:image.shape[0]-cursor_im] = image[cursor_im:]
break
return
def greet(image):
if(image is None):
bn_data = print_bn()
return ','.join([f'{x:.2f}' for x in bn_data])
else:
conv_layer = model.resnet.embedder.embedder.convolution
conv_layer.weight.data = torch.ones_like(conv_layer.weight.data)
print(type(image))
image = torch.tensor(image).float()
print(image.min(), image.max())
image = image/255.0
image = image.unsqueeze(0)
image = torch.permute(image, [0,3,1,2])
update_bn(image)
print(image.shape)
out = model(pixel_values=image)
return "Hello world!"
image = gr.inputs.Image(label="Upload a photo for beauty", shape=(224,224))
out_image = gr.inputs.Image(label='Yes, it becomes better.')
iface = gr.Interface(fn=greet, inputs=image, outputs='text')
iface.launch() |