mirror of
https://github.com/jantic/DeOldify.git
synced 2026-11-03 14:34:49 +08:00
734 KiB
734 KiB
In [1]:
import os
os.environ['CUDA_VISIBLE_DEVICES']='0' In [2]:
import fastai
from fastai import *
from fastai.vision import *
from fastai.callbacks import *
from fastai.vision.gan import *
from fasterai.generators import *
from fasterai.tensorboard import *
from fasterai.dataset import *In [3]:
path = Path('data/imagenet/ILSVRC/Data/CLS-LOC')
path_hr = path
path_lr = path/'bandw'
proj_id = 'ColorizeNew1a'
TENSORBOARD_PATH = Path('data/tensorboard/' + proj_id)In [4]:
from PIL import Image, ImageDraw, ImageFontIn [5]:
def crappify(fn,i):
dest = path_lr/fn.relative_to(path_hr)
dest.parent.mkdir(parents=True, exist_ok=True)
img = PIL.Image.open(fn).convert('LA').convert('RGB')
img.save(dest) In [ ]:
#il = ImageItemList.from_folder(path_hr)
#parallel(crappify, il.items)In [6]:
bs,size=32, 128
# bs,size = 24,160
#bs,size = 8,256
arch = models.resnet34In [7]:
arch = models.resnet34In [8]:
def get_data(bs:int, sz:int, keep_pct:float):
return get_colorize_data(sz=sz, bs=bs, crappy_path=path_lr, good_path=path_hr,
random_seed=None, keep_pct=keep_pct,num_workers=32)In [9]:
data_gen = get_data(bs,size,0.1)In [10]:
wd = 1e-3In [11]:
y_range = (-3.,3.)In [12]:
loss_gen = FeatureLoss(gram_wgt=5e3)In [13]:
def create_gen_learner():
return unet_learner2(data_gen, arch, wd=wd, blur=True, norm_type=NormType.Spectral,
self_attention=True, y_range=y_range, loss_func=loss_gen)In [14]:
learn_gen = create_gen_learner()In [ ]:
learn_gen.fit_one_cycle(8, pct_start=0.8)In [ ]:
learn_gen.unfreeze()In [ ]:
learn_gen.fit_one_cycle(12, slice(1e-6,1e-3))In [ ]:
learn_gen.show_results(rows=4)In [ ]:
learn_gen.save('gen-pre-a')In [ ]:
learn_gen.load('gen-pre-a');In [15]:
name_gen = 'image_gen-a'
path_gen = path/name_genIn [ ]:
# shutil.rmtree(path_gen)In [ ]:
path_gen.mkdir(exist_ok=True)In [16]:
def save_preds(dl):
i=0
names = dl.dataset.items
for b in dl:
preds = learn_gen.pred_batch(batch=b, reconstruct=True)
for o in preds:
o.save(path_gen/names[i].name)
i += 1In [ ]:
save_preds(data_gen.fix_dl)In [ ]:
PIL.Image.open(path_gen.ls()[0])In [ ]:
learn_gen=None
gc.collect()In [17]:
def get_crit_data(classes, bs, size):
src = ImageItemList.from_folder(path, include=classes, recurse=True).random_split_by_pct(0.1, seed=42)
ll = src.label_from_folder(classes=classes)
data = (ll.transform(get_transforms(max_zoom=2.), size=size)
.databunch(bs=bs).normalize(imagenet_stats))
return dataIn [18]:
data_crit = get_crit_data([name_gen, 'test'], bs=bs, size=size)In [ ]:
data_crit.show_batch(rows=3, ds_type=DatasetType.Train, imgsize=3)In [19]:
loss_critic = AdaptiveLoss(nn.BCEWithLogitsLoss())In [20]:
def create_critic_learner(data, metrics):
learner = Learner(data, gan_critic(), metrics=metrics, loss_func=loss_critic, wd=wd)
return learnerIn [ ]:
learn_critic = create_critic_learner(data_crit, accuracy_thresh_expand)In [ ]:
learn_critic.fit_one_cycle(6, 1e-3)In [ ]:
learn_critic.save('critic-pre-a')In [21]:
learn_crit=None
learn_gen=None
gc.collect()Out [21]:
70
In [22]:
#placeholder- not actually used
data_crit = get_crit_data([name_gen, 'test'], bs=bs, size=size)In [23]:
learn_crit = create_critic_learner(data_crit, metrics=None).load('critic-pre-a')In [24]:
learn_gen = create_gen_learner().load('gen-pre-a')In [25]:
switcher = partial(AdaptiveGANSwitcher, critic_thresh=0.65)
learn = GANLearner.from_learners(learn_gen, learn_crit, weights_gen=(1.0,2.0), show_img=False, switcher=switcher,
opt_func=partial(optim.Adam, betas=(0.,0.99)), wd=wd)
learn.callback_fns.append(partial(GANDiscriminativeLR, mult_lr=5.))
learn.callback_fns.append(partial(GANTensorboardWriter, base_dir=TENSORBOARD_PATH, name='GanLearner', visual_iters=100))In [26]:
lr = 1e-4In [27]:
learn.fit(10,lr)
60.00% [6/10 3:30:39<2:20:26]
| epoch | train_loss | gen_loss | disc_loss |
|---|---|---|---|
| 1 | 2.379875 | 2.873108 | 5.505718 |
| 2 | 2.811065 | 2.761532 | 5.553720 |
| 3 | 2.738256 | 2.824781 | 5.499640 |
| 4 | 2.859388 | 3.033478 | 5.513911 |
| 5 | 2.711472 | 2.928353 | 5.522888 |
| 6 | 2.925939 | 2.512365 | 5.521295 |
Interrupted
[0;31m---------------------------------------------------------------------------[0m [0;31mKeyboardInterrupt[0m Traceback (most recent call last) [0;32m<ipython-input-27-aaba76477504>[0m in [0;36m<module>[0;34m[0m [0;32m----> 1[0;31m [0mlearn[0m[0;34m.[0m[0mfit[0m[0;34m([0m[0;36m10[0m[0;34m,[0m[0mlr[0m[0;34m)[0m[0;34m[0m[0m [0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mfit[0;34m(self, epochs, lr, wd, callbacks)[0m [1;32m 171[0m [0mcallbacks[0m [0;34m=[0m [0;34m[[0m[0mcb[0m[0;34m([0m[0mself[0m[0;34m)[0m [0;32mfor[0m [0mcb[0m [0;32min[0m [0mself[0m[0;34m.[0m[0mcallback_fns[0m[0;34m][0m [0;34m+[0m [0mlistify[0m[0;34m([0m[0mcallbacks[0m[0;34m)[0m[0;34m[0m[0m [1;32m 172[0m fit(epochs, self.model, self.loss_func, opt=self.opt, data=self.data, metrics=self.metrics, [0;32m--> 173[0;31m callbacks=self.callbacks+callbacks) [0m[1;32m 174[0m [0;34m[0m[0m [1;32m 175[0m [0;32mdef[0m [0mcreate_opt[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mlr[0m[0;34m:[0m[0mFloats[0m[0;34m,[0m [0mwd[0m[0;34m:[0m[0mFloats[0m[0;34m=[0m[0;36m0.[0m[0;34m)[0m[0;34m->[0m[0;32mNone[0m[0;34m:[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mfit[0;34m(epochs, model, loss_func, opt, data, callbacks, metrics)[0m [1;32m 83[0m [0;32mfor[0m [0mxb[0m[0;34m,[0m[0myb[0m [0;32min[0m [0mprogress_bar[0m[0;34m([0m[0mdata[0m[0;34m.[0m[0mtrain_dl[0m[0;34m,[0m [0mparent[0m[0;34m=[0m[0mpbar[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 84[0m [0mxb[0m[0;34m,[0m [0myb[0m [0;34m=[0m [0mcb_handler[0m[0;34m.[0m[0mon_batch_begin[0m[0;34m([0m[0mxb[0m[0;34m,[0m [0myb[0m[0;34m)[0m[0;34m[0m[0m [0;32m---> 85[0;31m [0mloss[0m [0;34m=[0m [0mloss_batch[0m[0;34m([0m[0mmodel[0m[0;34m,[0m [0mxb[0m[0;34m,[0m [0myb[0m[0;34m,[0m [0mloss_func[0m[0;34m,[0m [0mopt[0m[0;34m,[0m [0mcb_handler[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 86[0m [0;32mif[0m [0mcb_handler[0m[0;34m.[0m[0mon_batch_end[0m[0;34m([0m[0mloss[0m[0;34m)[0m[0;34m:[0m [0;32mbreak[0m[0;34m[0m[0m [1;32m 87[0m [0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mloss_batch[0;34m(model, xb, yb, loss_func, opt, cb_handler)[0m [1;32m 31[0m [0mopt[0m[0;34m.[0m[0mzero_grad[0m[0;34m([0m[0;34m)[0m[0;34m[0m[0m [1;32m 32[0m [0;34m[0m[0m [0;32m---> 33[0;31m [0;32mreturn[0m [0mloss[0m[0;34m.[0m[0mdetach[0m[0;34m([0m[0;34m)[0m[0;34m.[0m[0mcpu[0m[0;34m([0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 34[0m [0;34m[0m[0m [1;32m 35[0m def get_preds(model:nn.Module, dl:DataLoader, pbar:Optional[PBar]=None, cb_handler:Optional[CallbackHandler]=None, [0;31mKeyboardInterrupt[0m:
In [28]:
learn.show_results()In [29]:
learn.save('gan-a')In [ ]:
learn.load('gan-a')In [31]:
learn.data=get_data(14,192,0.1)In [34]:
learn.fit(10,lr/2)
10.00% [1/10 1:34:35<14:11:23]
| epoch | train_loss | gen_loss | disc_loss |
|---|---|---|---|
| 1 | 2.260538 | 2.246810 | 4.527203 |
Interrupted
[0;31m---------------------------------------------------------------------------[0m [0;31mKeyboardInterrupt[0m Traceback (most recent call last) [0;32m<ipython-input-34-43f283d3577a>[0m in [0;36m<module>[0;34m[0m [0;32m----> 1[0;31m [0mlearn[0m[0;34m.[0m[0mfit[0m[0;34m([0m[0;36m10[0m[0;34m,[0m[0mlr[0m[0;34m/[0m[0;36m2[0m[0;34m)[0m[0;34m[0m[0m [0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mfit[0;34m(self, epochs, lr, wd, callbacks)[0m [1;32m 171[0m [0mcallbacks[0m [0;34m=[0m [0;34m[[0m[0mcb[0m[0;34m([0m[0mself[0m[0;34m)[0m [0;32mfor[0m [0mcb[0m [0;32min[0m [0mself[0m[0;34m.[0m[0mcallback_fns[0m[0;34m][0m [0;34m+[0m [0mlistify[0m[0;34m([0m[0mcallbacks[0m[0;34m)[0m[0;34m[0m[0m [1;32m 172[0m fit(epochs, self.model, self.loss_func, opt=self.opt, data=self.data, metrics=self.metrics, [0;32m--> 173[0;31m callbacks=self.callbacks+callbacks) [0m[1;32m 174[0m [0;34m[0m[0m [1;32m 175[0m [0;32mdef[0m [0mcreate_opt[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mlr[0m[0;34m:[0m[0mFloats[0m[0;34m,[0m [0mwd[0m[0;34m:[0m[0mFloats[0m[0;34m=[0m[0;36m0.[0m[0;34m)[0m[0;34m->[0m[0;32mNone[0m[0;34m:[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mfit[0;34m(epochs, model, loss_func, opt, data, callbacks, metrics)[0m [1;32m 83[0m [0;32mfor[0m [0mxb[0m[0;34m,[0m[0myb[0m [0;32min[0m [0mprogress_bar[0m[0;34m([0m[0mdata[0m[0;34m.[0m[0mtrain_dl[0m[0;34m,[0m [0mparent[0m[0;34m=[0m[0mpbar[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 84[0m [0mxb[0m[0;34m,[0m [0myb[0m [0;34m=[0m [0mcb_handler[0m[0;34m.[0m[0mon_batch_begin[0m[0;34m([0m[0mxb[0m[0;34m,[0m [0myb[0m[0;34m)[0m[0;34m[0m[0m [0;32m---> 85[0;31m [0mloss[0m [0;34m=[0m [0mloss_batch[0m[0;34m([0m[0mmodel[0m[0;34m,[0m [0mxb[0m[0;34m,[0m [0myb[0m[0;34m,[0m [0mloss_func[0m[0;34m,[0m [0mopt[0m[0;34m,[0m [0mcb_handler[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 86[0m [0;32mif[0m [0mcb_handler[0m[0;34m.[0m[0mon_batch_end[0m[0;34m([0m[0mloss[0m[0;34m)[0m[0;34m:[0m [0;32mbreak[0m[0;34m[0m[0m [1;32m 87[0m [0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/basic_train.py[0m in [0;36mloss_batch[0;34m(model, xb, yb, loss_func, opt, cb_handler)[0m [1;32m 17[0m [0;32mif[0m [0;32mnot[0m [0mis_listy[0m[0;34m([0m[0mxb[0m[0;34m)[0m[0;34m:[0m [0mxb[0m [0;34m=[0m [0;34m[[0m[0mxb[0m[0;34m][0m[0;34m[0m[0m [1;32m 18[0m [0;32mif[0m [0;32mnot[0m [0mis_listy[0m[0;34m([0m[0myb[0m[0;34m)[0m[0;34m:[0m [0myb[0m [0;34m=[0m [0;34m[[0m[0myb[0m[0;34m][0m[0;34m[0m[0m [0;32m---> 19[0;31m [0mout[0m [0;34m=[0m [0mmodel[0m[0;34m([0m[0;34m*[0m[0mxb[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 20[0m [0mout[0m [0;34m=[0m [0mcb_handler[0m[0;34m.[0m[0mon_loss_begin[0m[0;34m([0m[0mout[0m[0;34m)[0m[0;34m[0m[0m [1;32m 21[0m [0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [1;32m 488[0m [0;32melse[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 489[0;31m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mforward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 490[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 491[0m [0mhook_result[0m [0;34m=[0m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m,[0m [0mresult[0m[0;34m)[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/vision/gan.py[0m in [0;36mforward[0;34m(self, *args)[0m [1;32m 47[0m [0;34m[0m[0m [1;32m 48[0m [0;32mdef[0m [0mforward[0m[0;34m([0m[0mself[0m[0;34m,[0m [0;34m*[0m[0margs[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m---> 49[0;31m [0;32mreturn[0m [0mself[0m[0;34m.[0m[0mgenerator[0m[0;34m([0m[0;34m*[0m[0margs[0m[0;34m)[0m [0;32mif[0m [0mself[0m[0;34m.[0m[0mgen_mode[0m [0;32melse[0m [0mself[0m[0;34m.[0m[0mcritic[0m[0;34m([0m[0;34m*[0m[0margs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 50[0m [0;34m[0m[0m [1;32m 51[0m [0;32mdef[0m [0mswitch[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mgen_mode[0m[0;34m:[0m[0mbool[0m[0;34m=[0m[0;32mNone[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [1;32m 488[0m [0;32melse[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 489[0;31m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mforward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 490[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 491[0m [0mhook_result[0m [0;34m=[0m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m,[0m [0mresult[0m[0;34m)[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fastai/layers.py[0m in [0;36mforward[0;34m(self, x)[0m [1;32m 119[0m [0;32mfor[0m [0ml[0m [0;32min[0m [0mself[0m[0;34m.[0m[0mlayers[0m[0;34m:[0m[0;34m[0m[0m [1;32m 120[0m [0mres[0m[0;34m.[0m[0morig[0m [0;34m=[0m [0mx[0m[0;34m[0m[0m [0;32m--> 121[0;31m [0mnres[0m [0;34m=[0m [0ml[0m[0;34m([0m[0mres[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 122[0m [0;31m# We have to remove res.orig to avoid hanging refs and therefore memory leaks[0m[0;34m[0m[0;34m[0m[0m [1;32m 123[0m [0mres[0m[0;34m.[0m[0morig[0m [0;34m=[0m [0;32mNone[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [1;32m 488[0m [0;32melse[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 489[0;31m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mforward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 490[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 491[0m [0mhook_result[0m [0;34m=[0m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m,[0m [0mresult[0m[0;34m)[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fasterai/unet.py[0m in [0;36mforward[0;34m(self, up_in)[0m [1;32m 50[0m [0;32mdef[0m [0mforward[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mup_in[0m[0;34m:[0m[0mTensor[0m[0;34m)[0m [0;34m->[0m [0mTensor[0m[0;34m:[0m[0;34m[0m[0m [1;32m 51[0m [0ms[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mhook[0m[0;34m.[0m[0mstored[0m[0;34m[0m[0m [0;32m---> 52[0;31m [0mup_out[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mshuf[0m[0;34m([0m[0mup_in[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 53[0m [0mssh[0m [0;34m=[0m [0ms[0m[0;34m.[0m[0mshape[0m[0;34m[[0m[0;34m-[0m[0;36m2[0m[0;34m:[0m[0;34m][0m[0;34m[0m[0m [1;32m 54[0m [0;32mif[0m [0mssh[0m [0;34m!=[0m [0mup_out[0m[0;34m.[0m[0mshape[0m[0;34m[[0m[0;34m-[0m[0;36m2[0m[0;34m:[0m[0;34m][0m[0;34m:[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [1;32m 488[0m [0;32melse[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 489[0;31m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mforward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 490[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 491[0m [0mhook_result[0m [0;34m=[0m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m,[0m [0mresult[0m[0;34m)[0m[0;34m[0m[0m [0;32m/media/jason/Projects/Deep Learning/DeOldifyV2/DeOldify/fasterai/unet.py[0m in [0;36mforward[0;34m(self, x)[0m [1;32m 31[0m [0;34m[0m[0m [1;32m 32[0m [0;32mdef[0m [0mforward[0m[0;34m([0m[0mself[0m[0;34m,[0m[0mx[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m---> 33[0;31m [0mx[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mshuf[0m[0;34m([0m[0mself[0m[0;34m.[0m[0mrelu[0m[0;34m([0m[0mself[0m[0;34m.[0m[0mconv[0m[0;34m([0m[0mx[0m[0;34m)[0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 34[0m [0;32mreturn[0m [0mself[0m[0;34m.[0m[0mblur[0m[0;34m([0m[0mself[0m[0;34m.[0m[0mpad[0m[0;34m([0m[0mx[0m[0;34m)[0m[0;34m)[0m [0;32mif[0m [0mself[0m[0;34m.[0m[0mblur[0m [0;32melse[0m [0mx[0m[0;34m[0m[0m [1;32m 35[0m [0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [1;32m 488[0m [0;32melse[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 489[0;31m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0mforward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 490[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 491[0m [0mhook_result[0m [0;34m=[0m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m,[0m [0mresult[0m[0;34m)[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/container.py[0m in [0;36mforward[0;34m(self, input)[0m [1;32m 90[0m [0;32mdef[0m [0mforward[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 91[0m [0;32mfor[0m [0mmodule[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_modules[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m---> 92[0;31m [0minput[0m [0;34m=[0m [0mmodule[0m[0;34m([0m[0minput[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 93[0m [0;32mreturn[0m [0minput[0m[0;34m[0m[0m [1;32m 94[0m [0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/modules/module.py[0m in [0;36m__call__[0;34m(self, *input, **kwargs)[0m [1;32m 483[0m [0;32mdef[0m [0m__call__[0m[0;34m([0m[0mself[0m[0;34m,[0m [0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 484[0m [0;32mfor[0m [0mhook[0m [0;32min[0m [0mself[0m[0;34m.[0m[0m_forward_pre_hooks[0m[0;34m.[0m[0mvalues[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 485[0;31m [0mhook[0m[0;34m([0m[0mself[0m[0;34m,[0m [0minput[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 486[0m [0;32mif[0m [0mtorch[0m[0;34m.[0m[0m_C[0m[0;34m.[0m[0m_get_tracing_state[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 487[0m [0mresult[0m [0;34m=[0m [0mself[0m[0;34m.[0m[0m_slow_forward[0m[0;34m([0m[0;34m*[0m[0minput[0m[0;34m,[0m [0;34m**[0m[0mkwargs[0m[0;34m)[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/utils/spectral_norm.py[0m in [0;36m__call__[0;34m(self, module, inputs)[0m [1;32m 98[0m [0;34m[0m[0m [1;32m 99[0m [0;32mdef[0m [0m__call__[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mmodule[0m[0;34m,[0m [0minputs[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m--> 100[0;31m [0msetattr[0m[0;34m([0m[0mmodule[0m[0;34m,[0m [0mself[0m[0;34m.[0m[0mname[0m[0;34m,[0m [0mself[0m[0;34m.[0m[0mcompute_weight[0m[0;34m([0m[0mmodule[0m[0;34m,[0m [0mdo_power_iteration[0m[0;34m=[0m[0mmodule[0m[0;34m.[0m[0mtraining[0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 101[0m [0;34m[0m[0m [1;32m 102[0m [0;32mdef[0m [0m_solve_v_and_rescale[0m[0;34m([0m[0mself[0m[0;34m,[0m [0mweight_mat[0m[0;34m,[0m [0mu[0m[0;34m,[0m [0mtarget_sigma[0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [0;32m~/anaconda3/envs/fastaiv1/lib/python3.7/site-packages/torch/nn/utils/spectral_norm.py[0m in [0;36mcompute_weight[0;34m(self, module, do_power_iteration)[0m [1;32m 84[0m [0mv[0m [0;34m=[0m [0mv[0m[0;34m.[0m[0mclone[0m[0;34m([0m[0;34m)[0m[0;34m[0m[0m [1;32m 85[0m [0;34m[0m[0m [0;32m---> 86[0;31m [0msigma[0m [0;34m=[0m [0mtorch[0m[0;34m.[0m[0mdot[0m[0;34m([0m[0mu[0m[0;34m,[0m [0mtorch[0m[0;34m.[0m[0mmv[0m[0;34m([0m[0mweight_mat[0m[0;34m,[0m [0mv[0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [0m[1;32m 87[0m [0mweight[0m [0;34m=[0m [0mweight[0m [0;34m/[0m [0msigma[0m[0;34m[0m[0m [1;32m 88[0m [0;32mreturn[0m [0mweight[0m[0;34m[0m[0m [0;31mKeyboardInterrupt[0m:
In [ ]:
learn.show_results(rows=14)In [33]:
learn_gen.save('gen-pre-a')
learn_crit.save('crit-pre-a')In [ ]:
learn.data=get_data(7,256,0.1)In [ ]:
learn.fit(10,lr/4)In [ ]:
learn_gen.save('gen-pre-a')
learn_crit.save('crit-pre-a')In [ ]:
learn.show_results(rows=7)In [ ]:
learn.fit(20,lr/40)In [ ]:
learn_gen.save('gen-pre-a')
learn_crit.save('crit-pre-a')In [ ]:
learn.data=get_data(16,256,0.1)In [ ]:
learn.show_results(rows=14)In [ ]:
learn.data=get_data(32,192,0.1)In [ ]:
learn.show_results(rows=32)In [ ]: