File size: 4,691 Bytes
672a594
 
 
 
 
 
 
 
 
 
7c562fa
0678e8c
672a594
0678e8c
 
 
672a594
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0678e8c
672a594
 
 
 
 
 
 
 
 
 
 
 
 
98bb1c0
672a594
 
 
 
 
 
 
 
 
 
 
 
 
98bb1c0
672a594
17fed8d
672a594
327e90f
672a594
 
 
 
 
 
 
 
6afca00
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import tqdm
#import fastCNN
import numpy as np


import gradio as gr
import os
#os.system("sudo apt-get install nvIDia-cuda-toolkit")
#os.system("/usr/local/bin/python -m pip install --upgrade pip")
#os.system("pip install argparse")
os.system("pip install opencv-python")
#import pydensecrf.densecrf as dcrf
from PIL import Image
#import torch
#import torch.nn.functional as F
#from torchvision import transforms
import numpy as np
import collections
import cv2


#import argparse
device='cpu'

def test(gpu_id, net, img_list, group_size, img_size):
    print('test')
    #device=device
    hl,wl=[_.shape[0] for _ in img_list],[_.shape[1] for _ in img_list]
    img_transform = transforms.Compose([transforms.Resize((img_size, img_size)), transforms.ToTensor(),
                    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])
    img_transform_gray = transforms.Compose([transforms.Resize((img_size, img_size)), transforms.ToTensor(),
                                             transforms.Normalize(mean=[0.449], std=[0.226])])
    with torch.no_grad():
        
        group_img=torch.rand(5,3,224,224)
        for i in range(5):
          group_img[i]=img_transform(Image.fromarray(img_list[i]))
        _,pred_mask=net(group_img*1)
        pred_mask=(pred_mask.detach().squeeze()*255)#.numpy().astype(np.uint8)
        #pred_mask=[F.interpolate(pred_mask[i].reshape(1,1,pred_mask[i].shape[-2],pred_mask[i].shape[-1]),size=(size,size),mode='bilinear').squeeze().numpy().astype(np.uint8) for i in range(5)]
        img_resize=[((group_img[i]-group_img[i].min())/(group_img[i].max()-group_img[i].min())*255).permute(1,2,0).contiguous().numpy().astype(np.uint8) 
                    for i in range(5)]
        pred_mask=[crf_refine(img_resize[i],pred_mask[i].numpy().astype(np.uint8)) for i in range(5)]
        #for i in range(5):
        #    print(img_list[i].shape,pred_mask[i].shape)
        #pred_mask=[crf_refine(img_list[i],pred_mask[i]) for i in range(5)]
        print(pred_mask[0].shape)
        white=(torch.ones(2,pred_mask[0].shape[1],3)*255).long()
        result = [torch.cat([torch.from_numpy(img_resize[i]),white,torch.from_numpy(pred_mask[i]).unsqueeze(2).repeat(1,1,3)],dim=0).numpy() for i in range(5)]
        #w, h = 224,224#Image.open(image_list[i][j]).size
        #result = result.resize((w, h), Image.BILINEAR)
        #result.convert('L').save('0.png')
        print('done')
        return result
        
#img_lst=[(torch.rand(352,352,3)*255).numpy().astype(np.uint8) for i in range(5)]
outputpath1='img2.png'
outputpath2='img2.png'
outputpath3='img2.png'
def sepia(opt,img1):
  
  #img_list=[img1,img2,img3,img4,img5]
  #h_list,w_list=[_.shape[0] for _ in img_list],[_.shape[1] for _ in img_list]
  #print(type(img1))
  #print(img1.shape)
  #result_list=test(device,net,img_list,5,224)
  #result_list=[result_list[i].resize((w_list[i], h_list[i]), Image.BILINEAR) for i in range(5)]
  #img1,img2,img3,img4,img5=result_list#test('cpu',net,img_list,5,224)
  #white=(torch.ones(img1.shape[0],2,3)*255).numpy().astype(np.uint8)
  name='bike'+opt.replace(':','_')+'.png'
  output=cv2.imread('bike'+opt.replace(':','_')+'.png')
  output=cv2.resize(output,(output.shape[1]*256//output.shape[0],256))
  return output[:,:,::-1]#np.concatenate([img1,white,img2,white,img3,white,img4,white,img5],axis=1)
with gr.Blocks() as demo:    
    gr.Markdown("image cropping")
    #with gr.Tab("Component test"):
    with gr.Row():
            with gr.Column(): 
                #slider1 = gr.Slider(2, 20, value=2, label="Count", info="Choose betwen 2 and 20") 

                #drop1 = gr.Dropdown(["cat", "dog", "bird"], label="Animal", info="Will add more animals later!")

                #checklist1 = gr.CheckboxGroup(["4:3", "3:4", "16:9"], label="Shape", info="The shape of cropped image") 
                radio2 = gr.Radio(["9:16", "3:4","1:1","4:3", "16:9","circle"], value="3:4",label="Shape", info="The shape of cropped image")
                #radio1 = gr.Radio(["park", "zoo", "road"], label="Location", info="Where did they go?")
                
                src_img1 = gr.Image()
                exp=gr.Examples(["bike.png","img2.png"],src_img1)
                bottom1 = gr.Button(label="cropping component")

            out1 = gr.Image()#gr.Textbox()

    bottom1.click(sepia, inputs=[radio2,src_img1], outputs=out1)
#gr.Image(shape=(224, 2))
#demo = gr.Interface(sepia, inputs=["image","image","image","image","image"], outputs=["image","image","image","image","image"])#gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
#demo = gr.Interface(sepia, inputs=["image"], outputs=["image"])
demo.launch(debug=True)