File size: 4,980 Bytes
cda88e0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import numpy as np
import json
import pdb
import os
from os.path import join
import html
from tqdm import tqdm
import argparse
import pandas as pd
import matplotlib.pyplot as plt

def get_files(folder):
    return [join(folder, f) for f in os.listdir(folder) if os.path.isfile(join(folder, f))]

def get_folders(folder):
    return [join(folder, f) for f in os.listdir(folder) if os.path.isdir(join(folder, f))]

vis_img_folder = 'imgs'
vis_eval_img_folder = 'eval_imgs'
def eval_gen(webpage, output_folder, is_pattern=True):
    def get_file(files, key_world):
        mitsuba_shadow = ''
        for f in files:
            if f.find(key_world) != -1:
                mitsuba_shadow = f
                break
        return mitsuba_shadow

    def flip_shadow(img_file):
        dirname, fname = os.path.dirname(img_file), os.path.splitext(os.path.basename(img_file))[0]
        if img_file == '':
            print('find one zero')
            mts_shadow_np = np.zeros((256,256,3))
        else:
            mts_shadow_np = plt.imread(img_file)
        
        save_path = join(dirname, fname + '_flip.png')
        plt.imsave(save_path, 1.0-mts_shadow_np)
        return save_path

    img_folders = join(output_folder, 'imgs')
    folders = get_folders(img_folders)
    print("There are {} folders".format(len(folders)))
    
    for model in tqdm(folders):
        cur_model_relative = join(vis_img_folder, os.path.basename(model))
        evl_cur_model_relative = join(vis_eval_img_folder, os.path.basename(model))

        if is_pattern:
            ibl_relative = join(cur_model_relative, 'pattern')
        else:
            ibl_relative = join(cur_model_relative, 'real')
        
        # import pdb; pdb.set_trace()
        ibl_folders = get_folders(ibl_relative)
        ibl_folders.sort()
        for ibl in ibl_folders:
            cur_ibl_relative = join(ibl_relative,os.path.basename(ibl))
            gt_files = get_files(cur_ibl_relative)
            mts_shadow = get_file(gt_files, '_shadow.png')

            ibl_name = os.path.basename(ibl)
            ibl = join(cur_ibl_relative, ibl_name + '.png')
           
            mitsuba_shadow = flip_shadow(mts_shadow)

            cur_eval_folder = join(evl_cur_model_relative, join('pattern', ibl_name))
            net_predict = get_file(get_files(cur_eval_folder), 'predict.png')

            # mitsuba_final = join(cur_ibl_relative, 'composite.png')
            # pred_final = join(cur_ibl_relative, 'composite_pred.png')
            
            # print(ibl_name)
            ims, txts, links = [ibl,mitsuba_shadow, net_predict], ['ibl','mitsuba', 'predict'], [ibl,mitsuba_shadow, net_predict]

            webpage.add_images(ims, txts, links)

vis_pattern_folder = '/home/ysheng/Documents/vis_pattern'
vis_real_folder = '/home/ysheng/Documents/vis_real'
def vis_files_in_folder():
    folder = '/home/ysheng/Documents/vis_models'
    webpage = html.HTML(folder, 'models', reflesh=1)    
    img_folders = join(folder, 'imgs')
    files = get_files(img_folders)
    print("There are {} files".format(len(files)))
    
    prefix_set = set()
    for cur_file in tqdm(files):
        cur_name = os.path.splitext(os.path.basename(cur_file))[0]
        prefix_set.add(cur_name[:-3])

    print('there are {} prefixs'.format(len(prefix_set)))
    prefix_set = list(prefix_set)
    prefix_set.sort()

    # import pdb; pdb.set_trace()
    relative_folder = './imgs'
    for i, prefix in enumerate(prefix_set):
        ims = [join(relative_folder, prefix + '{:03d}.png'.format(i)) for i in range(len(files) // len(prefix_set))]
        txts = [prefix + '{:03d}'.format(i) for i in range(len(files) // len(prefix_set))]
        links = ims
        webpage.add_images(ims, txts, links)

    webpage.save()
    print('finished')
    
def vis_files(df_file):
    """ input is a pandas dataframe

        format: path, path,..., name,name, ...

    """
    folder = '.'
    webpage = html.HTML(folder, 'benchmark', reflesh=1)    

    relative_folder = './imgs'
#     for i, prefix in enumerate(prefix_set):
#         ims = [join(relative_folder, prefix + '{:03d}.png'.format(i)) for i in range(len(files) // len(prefix_set))]
#         txts = [prefix + '{:03d}'.format(i) for i in range(len(files) // len(prefix_set))]
#         links = ims
#         webpage.add_images(ims, txts, links)
    
    df = pd.read_csv(df_file)
    for i,v in tqdm(df.iterrows(), total=len(df)):
        img_range = len(v)//2+1
        imgs = [join(relative_folder,v[i]) for i in range(1,img_range)]
        txts = [v[i] for i in range(img_range, len(v))]
        links = imgs
        webpage.add_images(imgs, txts, links)
        
    webpage.save()
    print('finished')
    
if __name__ == "__main__":
    vis_files('/home/ysheng/Documents/paper_project/adobe/soft_shadow/benchmark_results/html.csv')