|
import json, pdb
|
|
from copy import deepcopy
|
|
|
|
class Config:
|
|
def __init__(self, config=None):
|
|
if config is not None:
|
|
self.from_dict(config)
|
|
|
|
def __repr__(self):
|
|
return str(self.to_json_string())
|
|
|
|
def to_dict(self):
|
|
return deepcopy(self.__dict__)
|
|
|
|
def to_json(self, path):
|
|
with open(path, 'w') as f:
|
|
json.dump(self.to_dict(), f, indent=2)
|
|
|
|
def to_json_string(self):
|
|
return json.dumps(self.to_dict(), indent=2)
|
|
|
|
def from_dict(self, dct):
|
|
self.clear()
|
|
for key, value in dct.items():
|
|
self.__dict__[key] = value
|
|
|
|
return self.to_dict()
|
|
|
|
def from_json(self, json_path):
|
|
with open(json_path, 'r') as f:
|
|
config = json.load(f)
|
|
self.from_dict(config)
|
|
|
|
return self.to_dict()
|
|
|
|
def clear(self):
|
|
del self.__dict__
|
|
|
|
|
|
vit_s_vqgan_config = {
|
|
'n_embed' :8192,
|
|
'embed_dim' :16,
|
|
'beta' :0.25,
|
|
'enc':{
|
|
'image_size':320,
|
|
'patch_size':8,
|
|
'dim':512,
|
|
'depth':8,
|
|
'num_head':8,
|
|
'mlp_dim':2048,
|
|
'in_channels':3,
|
|
'dim_head':64,
|
|
'dropout':0.0,
|
|
},
|
|
'dec':{
|
|
'image_size':320,
|
|
'patch_size':8,
|
|
'dim':512,
|
|
'depth':8,
|
|
'num_head':8,
|
|
'mlp_dim':2048,
|
|
'out_channels':3,
|
|
'dim_head':64,
|
|
'dropout':0.0,
|
|
},
|
|
}
|
|
vit_m_vqgan_config = {
|
|
'n_embed' :8192,
|
|
'embed_dim' :32,
|
|
'beta' :0.25,
|
|
'enc':{
|
|
'image_size':256,
|
|
'patch_size':8,
|
|
'dim': 1024,
|
|
'depth': 16,
|
|
'num_head':16,
|
|
'mlp_dim':2048,
|
|
'in_channels':3,
|
|
'dim_head':64,
|
|
'dropout':0.0,
|
|
},
|
|
'dec':{
|
|
'image_size':256,
|
|
'patch_size':8,
|
|
'dim':1024,
|
|
'depth':16,
|
|
'num_head':16,
|
|
'mlp_dim':2048,
|
|
'out_channels':3,
|
|
'dim_head':64,
|
|
'dropout':0.0,
|
|
},
|
|
}
|
|
|
|
pipeline_v1_config = {
|
|
'stage1' :'vit-s-vqgan',
|
|
't5' :'t5-l',
|
|
'dim' :1024,
|
|
'dim_head' :64,
|
|
'mlp_dim' :4096,
|
|
'num_head' :16,
|
|
'depth' :12,
|
|
'dropout' :0.1,
|
|
}
|
|
|
|
ver2cfg = {
|
|
'vit-s-vqgan' : vit_s_vqgan_config,
|
|
'vit-m-vqgan' : vit_m_vqgan_config,
|
|
'paintmindv1' : pipeline_v1_config,
|
|
}
|
|
|