diff --git a/README.md b/README.md deleted file mode 100644 index 3e25b68..0000000 --- a/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# vehicle-speed-estimation - -If you want to know more about this project checkout my [medium post](https://medium.com/p/18b41babda4c/edit). - -![video](vis/pred_label_vis.gif) - - -## Requirements -```Shell -pip3 install -r requirements.txt -``` - -## How to use - -### Pre-trained model - -You can simply use the model that I trained before. It is under `models`. Use the `inference.ipynb` to load the model and run an inference. - -### Train yourself - -You can train the network (EfficientNet) to predict the speed of a vehicle using optical flow. If you want to train yourself, you will need to create the optical flow images first and save them as .npy files in a directory of your choice. You can do this here: [SharifElfouly/opical-flow-estimation-with-RAFT](https://github.com/SharifElfouly/opical-flow-estimation-with-RAFT). - -### Results - -If you are interested on how well the model performs, watch [this](https://www.youtube.com/watch?v=_Pas8v2dbdc) validation video on YouTube. - -## Another approach - -You can also just stack 2 frames together so you have 6 channels for each input and feed that to a conv net. This is what I did in `train_cnn_2frames.ipynb`. \ No newline at end of file diff --git a/calib_generate_flow.py b/calib_generate_flow.py new file mode 100644 index 0000000..151d46e --- /dev/null +++ b/calib_generate_flow.py @@ -0,0 +1,127 @@ +import sys +sys.path.append('core') + +import os +import numpy as np +import torch +import cv2 +from tqdm import tqdm +from PIL import Image +import matplotlib.pyplot as plt +import argparse +from pathlib import Path + +from utils import flow_viz +from utils.raft import RAFT +from utils.utils import InputPadder + +os.environ['CUDA_VISIBLE_DEVICES'] = '5' +DEVICE = 'cuda' if torch.cuda.is_available else 'cpu' + +images_dir = "/data_4T/EV_RAFT/calib_frame/4/" +output_dir = "/data_4T/EV_RAFT/calib_flow/4/" + +outfig_dir = '/home/ljw/projects/vehicle-speed-estimation/result/vis_calib/' +model_path = '/home/ljw/projects/vehicle-speed-estimation/model/raft_models/raft-things.pth' +videos_path = '/home/ljw/projects/vehicle-speed-estimation/speedchallenge/data/' + + + +def generate_frames(videos_path, images_dir): + #vidcap = cv2.VideoCapture(videos_path+'train.mp4') + vidcap = cv2.VideoCapture(videos_path+'4.hevc') + + frames_rate=vidcap.get(5) + frame_num = int(vidcap.get(7)) + print("frame rate", frames_rate) + + for i in tqdm(range(frame_num)): + success,image = vidcap.read() + if image.size == 0: + pass + else: + cv2.imwrite(images_dir+"frame%d.png" % i, image) + + +def vis(npy_dir, output_dir): + npy_dir = Path(npy_dir) + output_dir = Path(output_dir) + + npy_files = list(npy_dir.glob('*.npy')) + + for i, npy_file in enumerate(npy_files): + f = str(npy_file) + of = np.load(f) + of = torch.from_numpy(of) + of = of[0].permute(1,2,0).numpy() + of = flow_viz.flow_to_image(of) + img = Image.fromarray(of) + output_f = output_dir / npy_file.stem + output_f = str(output_f) + '.jpg' + img.save(output_f) + + if i % 20 == 0: print(f'{i}/{len(npy_files)}') + +def load_image(imfile): + img = np.array(Image.open(imfile)).astype(np.uint8) + img = torch.from_numpy(img).permute(2, 0, 1).float() + return img[None].to(DEVICE) + +def run(args): + model = torch.nn.DataParallel(RAFT(args)) + model.load_state_dict(torch.load(model_path)) + + model = model.module + model.to(DEVICE) + model.eval() + + output_dir = Path(args.output_dir) + images_dir = Path(args.images_dir) + images = list(images_dir.glob('frame*.png')) + + with torch.no_grad(): + # Important bug: the img_path need to be sorted! + images.sort(key=lambda x: int(x.name[5:-4])) + print(images[1010]) + + for i in tqdm(range(len(images)-1)): + # run first 200 + #for i in tqdm(range(200)): + im_f1 = str(images[i]) + im_f2 = str(images[i+1]) + + image1 = load_image(im_f1) + image2 = load_image(im_f2) + + padder = InputPadder(image1.shape) + image1, image2 = padder.pad(image1, image2) + + flow_low, flow_up = model(image1, image2, iters=20, test_mode=True) + + # 2.4 MB each npy + of_f_name = output_dir / f'{i}.npy' + np.save(of_f_name, flow_up.cpu()) + + if args.out_vis: + vis(output_dir, outfig_dir) + + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--images_dir', + default=os.path.abspath(images_dir), + help="directory with your images") + parser.add_argument('--output_dir', + default=os.path.abspath(output_dir), + help="optical flow images will be stored here as .npy files") + parser.add_argument('--out_vis', + action='store_true', + help="output optical flow images") + args = parser.parse_args() + # transfer videos to frames + # generate_frames(videos_path,images_dir) + + run(args) + + diff --git a/calib_train.py b/calib_train.py new file mode 100644 index 0000000..f1038fb --- /dev/null +++ b/calib_train.py @@ -0,0 +1,148 @@ +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.utils.data import Dataset, DataLoader +from torch.utils.data.sampler import SubsetRandomSampler +import torch.optim as optim +from efficientnet_pytorch import EfficientNet +from pathlib import Path +import numpy as np +import multiprocessing +from torch.utils.tensorboard import SummaryWriter + + +os.environ['CUDA_VISIBLE_DEVICES'] = '6' +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +v = 0 # model version +in_c = 2 # number of input channels +num_c = 2 # number of classes to predict + + +# directory with the optical flow images +of_dir = '/data_4T/EV_RAFT/calib_flow/' +# labels as txt file +labels_f = '/data_4T/EV_RAFT/speedchallenge/calib_challenge/labeled/' +model_f = '/home/ljw/projects/vehicle-speed-estimation/model/calib_efnet_b0.pth' + + +class OFDataset(Dataset): + '''File 0~3 for training, file 4 for testing''' + + def __init__(self, of_dir, label_file): + self.of_dirlist, self.label_dirlist = [], [] + for i in range(4): + self.of_dirlist.append(os.path.join(of_dir, str(i))) + self.label_dirlist.append(os.path.join(label_file,f'{i}.txt')) + self.len = sum([len(list(Path(self.of_dirlist[i]).glob('*.npy'))) + for i in range(len(self.of_dirlist))]) + + #print(self.len, self.of_dirlist, self.label_dirlist) + #self.label_file = open(label_f).readlines() + def __len__(self): return self.len + + def __getitem__(self, idx): + num = 0 + while idx >= 0: + max_id = len(list(Path(self.of_dirlist[num]).glob('*.npy')))-1 + if idx <= max_id: + of_array = np.load(Path(self.of_dirlist[num])/f'{idx}.npy') + #print(Path(self.of_dirlist[num])/f'{idx}.npy') + of_tensor = torch.squeeze(torch.Tensor(of_array)) + label_file = open(self.label_dirlist[num]).readlines() + #print(self.label_dirlist[num], idx) + label = [float(i) for i in label_file[idx].split()[:2]] + label = 100 * torch.tensor(label) + return [of_tensor, label] + else: + idx = idx - max_id - 1 + num += 1 + +ds = OFDataset(of_dir, labels_f) +print(torch.isnan(torch.mean(ds[784+2400][1]))) #torch.Size([2, 880, 1168]) + + +#of = torch.randn(1,2,640,480) # input shape (1,2,640,480) + +model = EfficientNet.from_pretrained(f'efficientnet-b{v}', in_channels=in_c, num_classes=num_c) +#state = torch.load(MODEL_F) +#model.load_state_dict(state) +model.to(device) + +#of = of.to(device) +#model(of).item() + + +# 80% of data for training +# 20% of data for validation +train_split = .9 + +ds_size = len(ds) +indices = list(range(ds_size)) +split = int(np.floor(train_split * ds_size)) +train_idx, val_idx = indices[:split], indices[split:] +#sample = ds[3] + + +train_set, val_set = torch.utils.data.random_split(ds,[split,ds_size-split]) +train_dl = DataLoader(train_set, batch_size=4, shuffle=True, num_workers=12) +val_dl = DataLoader(val_set, batch_size=4, shuffle=False, num_workers=12) + +print(len(train_dl), len(val_dl)) + + + +epochs = 100 +#log_train_steps = 100 + +writer = SummaryWriter('/home/ljw/projects/vehicle-speed-estimation/result/calib') + + +criterion = nn.MSELoss() +opt = optim.Adam(model.parameters(),lr=0.0001) + +for epoch in range(epochs): + model.train() + running_loss = 0.0 + for i, sample in enumerate(train_dl): + if torch.isnan(torch.mean(sample[1])): + #print(i) + continue + + of_tensor = sample[0].cuda() + label = sample[1].cuda() + + opt.zero_grad() + pred = torch.squeeze(model(of_tensor)) + loss = criterion(pred, label) + loss.backward() + opt.step() + if (i+1) % 100 == 0: + print('Epoch: [{}/{}], Step: [{}/{}], Loss: {}' + .format(epoch+1, epochs, i+1, len(train_dl), loss.item())) + writer.add_scalar('Training loss', loss.item(), global_step=i+epoch*len(train_dl)) + + # validation + model.eval() + val_losses = [] + with torch.no_grad(): + for j, val_sample in enumerate(val_dl): + if torch.isnan(torch.mean(val_sample[1])): + #print(i) + continue + of_tensor = val_sample[0].cuda() + label = val_sample[1].float().cuda() + pred = torch.squeeze(model(of_tensor)) + loss = criterion(pred, label) + val_losses.append(loss) + print('Validation: Epoch: [{}/{}], mean Loss: {}, last loss:{}' + .format(epoch+1, epochs, sum(val_losses)/len(val_losses), loss.item())) + #print(f'{epoch}: {sum(val_losses)/len(val_losses)}') + writer.add_scalar('Validation loss', sum(val_losses)/len(val_losses), global_step=epoch) + +# test + + + +torch.save(model, model_f) \ No newline at end of file diff --git a/eda.ipynb b/eda.ipynb index 7e18b6e..961fc28 100644 --- a/eda.ipynb +++ b/eda.ipynb @@ -3,123 +3,123 @@ { "cell_type": "code", "execution_count": 56, - "metadata": {}, - "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "plt.rcParams[\"figure.figsize\"] = (20,10)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 9, - "metadata": {}, - "outputs": [], "source": [ - "LABEL_F = ''" - ] + "LABEL_F = '/home/ljw/projects/vehicle-speed-estimation/speedchallenge/data/train.txt'" + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 44, - "metadata": {}, - "outputs": [], "source": [ "labels = open(LABEL_F).readlines()\n", "labels = [float(labels[i].split()[0]) for i in range(len(labels))]\n", "labels = [round(label) for label in labels]\n", "labels = np.array(labels)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 45, - "metadata": {}, + "source": [ + "min(labels)" + ], "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ "0" ] }, - "execution_count": 45, "metadata": {}, - "output_type": "execute_result" + "execution_count": 45 } ], - "source": [ - "min(labels)" - ] + "metadata": {} }, { "cell_type": "code", "execution_count": 46, - "metadata": {}, + "source": [ + "max(labels)" + ], "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ "28" ] }, - "execution_count": 46, "metadata": {}, - "output_type": "execute_result" + "execution_count": 46 } ], - "source": [ - "max(labels)" - ] + "metadata": {} }, { "cell_type": "code", "execution_count": 66, - "metadata": {}, + "source": [ + "tick = np.arange(0, len(labels), 1000)\n", + "plt.xticks(tick)\n", + "plt.plot(labels);" + ], "outputs": [ { + "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABH4AAAI/CAYAAAABYR7qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAADlKUlEQVR4nOzdd5gkV3U28PdWT97Zmc05ancVVtLuSlrljCSEQCAkkgETDFiGj2CMwSSbnLGRwcYEAzbBwpgoECAhCSGU8yps0AZtznlnJ0/X/f6oru7q6qrqCrdS9/t7Hj2z6umuvtNdXV331DnnCikliIiIiIiIiIio8WhpD4CIiIiIiIiIiOLBwA8RERERERERUYNi4IeIiIiIiIiIqEEx8ENERERERERE1KAY+CEiIiIiIiIialAM/BARERERERERNaiWJJ9sypQpcsGCBUk+JRERERERERFRQ3v88ccPSCmnOv0u0cDPggUL8NhjjyX5lEREREREREREDU0IsdXtdyz1IiIiIiIiIiJqUAz8EBERERERERE1KAZ+iIiIiIiIiIgaFAM/REREREREREQNioEfIiIiIiIiIqIGxcAPEREREREREVGDYuCHiIiIiIiIiKhBMfBDRERERERERNSgGPghIiIiIiIiImpQDPwQERERERERETUoBn6IiIiIiIiIiBoUAz9ERERERERERA2KgR8iIiIiIiIiogbFwA8RERERERERUYNi4IeIiIiIiIiIqEEx8ENERERERERE1KAY+CEiIiIiIiIialAM/BARERERERERNSgGfoiIiIiIiIiIGhQDP0REREREREREDYqBHyIiIiIiIiKiBsXADxERERERERFRg2pJewB5c3RwFDf8x/0AgNaChi+9chmWzZmQ7qCIiIiIiIiIiBww4yeggiZw8sweLJzSjXV7+vD0jqNpD4mIiIiIiIiIyBEzfgLqbm/B1193Jg4cH8bKz+yFlDLtIREREREREREROWLGT0iaEAAAnXEfIiIiIiIiIsooBn5C0oy4D3Rm/BARERERERFRRjHwE5Jgxg8RERERERERZRwDPyGZGT/s8UNEREREREREWcXAT0iFUuSnyJQfIiIiIiIiIsooBn5CYnNnIiIiIiIiIso6Bn5CEmzuTEREREREREQZx8BPSGbGD3v8EBEREREREVFWMfATEku9iIiIiIiI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\n", "text/plain": [ "
" - ] + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAABH4AAAI/CAYAAAABYR7qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAADlKUlEQVR4nOzdd5gkV3U28PdWT97Zmc05ancVVtLuSlrljCSEQCAkkgETDFiGj2CMwSSbnLGRwcYEAzbBwpgoECAhCSGU8yps0AZtznlnJ0/X/f6oru7q6qrqCrdS9/t7Hj2z6umuvtNdXV331DnnCikliIiIiIiIiIio8WhpD4CIiIiIiIiIiOLBwA8RERERERERUYNi4IeIiIiIiIiIqEEx8ENERERERERE1KAY+CEiIiIiIiIialAM/BARERERERERNaiWJJ9sypQpcsGCBUk+JRERERERERFRQ3v88ccPSCmnOv0u0cDPggUL8NhjjyX5lEREREREREREDU0IsdXtdyz1IiIiIiIiIiJqUAz8EBERERERERE1KAZ+iIiIiIiIiIgaFAM/REREREREREQNioEfIiIiIiIiIqIGxcAPEREREREREVGDYuCHiIiIiIiIiKhBMfBDRERERERERNSgGPghIiIiIiIiImpQDPwQERERERERETUoBn6IiIiIiIiIiBoUAz9ERERERERERA2KgR8iIiIiIiIiogbFwA8RERERERERUYNi4IeIiIiIiIiIqEEx8ENERERERERE1KAY+CEiIiIiIiIialAM/BARERERERERNSgGfoiIiIiIiIiIGhQDP0REREREREREDYqBHyIiIiIiIiKiBsXADxERERERERFRg2pJewB5c3RwFDf8x/0AgNaChi+9chmWzZmQ7qCIiIiIiIiIiBww4yeggiZw8sweLJzSjXV7+vD0jqNpD4mIiIiIiIiIyBEzfgLqbm/B1193Jg4cH8bKz+yFlDLtIREREREREREROWLGT0iaEAAAnXEfIiIiIiIiIsooBn5C0oy4D3Rm/BARERERERFRRjHwE5Jgxg8RERERERERZRwDPyGZGT/s8UNEREREREREWcXAT0iFUuSnyJQfIiIiIiIiIsooBn5CYnNnIiIiIiIiIso6Bn5CEmzuTEREREREREQZx8BPSGbGD3v8EBEREREREVFWMfATEku9iIiIiIiI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" }, "metadata": { "needs_background": "light" - }, - "output_type": "display_data" + } } ], - "source": [ - "tick = np.arange(0, len(labels), 1000)\n", - "plt.xticks(tick)\n", - "plt.plot(labels);" - ] + "metadata": {} }, { "cell_type": "code", "execution_count": 68, - "metadata": {}, + "source": [ + "tick = np.arange(0, 29)\n", + "plt.xticks(tick)\n", + "plt.hist(labels, 29);" + ], "outputs": [ { + "output_type": "display_data", "data": { - "image/png": "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\n", "text/plain": [ "
" - ] + ], + "image/png": "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" }, "metadata": { "needs_background": "light" - }, - "output_type": "display_data" + } } ], - "source": [ - "tick = np.arange(0, 29)\n", - "plt.xticks(tick)\n", - "plt.hist(labels, 29);" - ] + "metadata": {} } ], "metadata": { @@ -143,4 +143,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/generate_flow.py b/generate_flow.py new file mode 100644 index 0000000..7a49ac4 --- /dev/null +++ b/generate_flow.py @@ -0,0 +1,127 @@ +import sys +sys.path.append('core') + +import os +import numpy as np +import torch +import cv2 +from tqdm import tqdm +from PIL import Image +import matplotlib.pyplot as plt +import argparse +from pathlib import Path + +from utils import flow_viz +from utils.raft import RAFT +from utils.utils import InputPadder + +os.environ['CUDA_VISIBLE_DEVICES'] = '5' +DEVICE = 'cuda' if torch.cuda.is_available else 'cpu' + +images_dir = "/data_4T/EV_RAFT/data/train/" +output_dir = '/data_4T/EV_RAFT/opticalflow/' +outfig_dir = '/home/ljw/projects/vehicle-speed-estimation/result/vis/' +model_path = '/home/ljw/projects/vehicle-speed-estimation/model/raft_models/raft-things.pth' +videos_path = '/home/ljw/projects/vehicle-speed-estimation/speedchallenge/data/' + + + +def generate_frames(videos_path, images_dir): + vidcap = cv2.VideoCapture(videos_path+'train.mp4') + #vidcap = cv2.VideoCapture(videos_path+'4.hevc') + + frames_rate=vidcap.get(5) + frame_num = int(vidcap.get(7)) + print("frame rate", frames_rate) + + for i in tqdm(range(frame_num)): + success,image = vidcap.read() + if image.size == 0: + pass + else: + cv2.imwrite(images_dir+"frame%d.png" % i, image) + + + +def vis(npy_dir, output_dir): + npy_dir = Path(npy_dir) + output_dir = Path(output_dir) + + npy_files = list(npy_dir.glob('*.npy')) + + for i, npy_file in enumerate(npy_files): + f = str(npy_file) + of = np.load(f) + of = torch.from_numpy(of) + of = of[0].permute(1,2,0).numpy() + of = flow_viz.flow_to_image(of) + img = Image.fromarray(of) + output_f = output_dir / npy_file.stem + output_f = str(output_f) + '.jpg' + img.save(output_f) + + if i % 20 == 0: print(f'{i}/{len(npy_files)}') + +def load_image(imfile): + img = np.array(Image.open(imfile)).astype(np.uint8) + img = torch.from_numpy(img).permute(2, 0, 1).float() + return img[None].to(DEVICE) + +def run(args): + model = torch.nn.DataParallel(RAFT(args)) + model.load_state_dict(torch.load(model_path)) + + model = model.module + model.to(DEVICE) + model.eval() + + output_dir = Path(args.output_dir) + images_dir = Path(args.images_dir) + images = list(images_dir.glob('frame*.png')) + + with torch.no_grad(): + # Important bug: the img_path need to be sorted! + images.sort(key=lambda x: int(x.name[5:-4])) + #print(images[16666]) + + for i in tqdm(range(len(images)-1)): + # run first 200 + #for i in tqdm(range(200)): + im_f1 = str(images[i]) + im_f2 = str(images[i+1]) + + image1 = load_image(im_f1) + image2 = load_image(im_f2) + + padder = InputPadder(image1.shape) + image1, image2 = padder.pad(image1, image2) + + flow_low, flow_up = model(image1, image2, iters=20, test_mode=True) + + # 2.4 MB each npy + of_f_name = output_dir / f'{i}.npy' + np.save(of_f_name, flow_up.cpu()) + + if args.out_vis: + vis(output_dir, outfig_dir) + + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--images_dir', + default=os.path.abspath(images_dir), + help="directory with your images") + parser.add_argument('--output_dir', + default=os.path.abspath(output_dir), + help="optical flow images will be stored here as .npy files") + parser.add_argument('--out_vis', + action='store_true', + help="output optical flow images") + args = parser.parse_args() + # transfer videos to frames + # generate_frames(videos_path,images_dir) + + run(args) + + diff --git a/inference.ipynb b/inference.ipynb index b975c02..77f68ae 100644 --- a/inference.ipynb +++ b/inference.ipynb @@ -2,82 +2,80 @@ "cells": [ { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], + "execution_count": 1, "source": [ "import torch\n", "from efficientnet_pytorch import EfficientNet\n", "from PIL import Image, ImageDraw, ImageFont\n", "import numpy as np\n", "from pathlib import Path" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 20, - "metadata": {}, - "outputs": [], "source": [ "# you can find a pretrained model at model/b3.pth\n", - "MODEL_F = '/home/sharif/Documents/commai-challenge/model/b0.pth'\n", + "MODEL_F = '/home/ljw/projects/vehicle-speed-estimation/model/b0.pth'\n", "# directory with the numpy optical flow images you want to use for inference\n", - "OF_NPY_DIR = '/home/sharif/Documents/RAFT/test_predictions'" - ] + "OF_NPY_DIR = '/data_4T/EV_RAFT/opticalflow/'" + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 21, - "metadata": {}, - "outputs": [], "source": [ "# check if cuda is available\n", "device = 'cuda' if torch.cuda.is_available() else 'cpu'" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Load Model" - ] + ], + "metadata": {} }, { "cell_type": "code", "execution_count": 22, - "metadata": {}, - "outputs": [], "source": [ "V = 0 # what version of efficientnet did you use\n", "IN_C = 2 # number of input channels\n", "NUM_C = 1 # number of classes to predict" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 23, - "metadata": {}, + "source": [ + "model = EfficientNet.from_pretrained(f'efficientnet-b{V}', in_channels=IN_C, num_classes=NUM_C)\n", + "state = torch.load(MODEL_F)\n", + "model.load_state_dict(state)\n", + "model.to(device);" + ], "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ "Loaded pretrained weights for efficientnet-b0\n" ] } ], - "source": [ - "model = EfficientNet.from_pretrained(f'efficientnet-b{V}', in_channels=IN_C, num_classes=NUM_C)\n", - "state = torch.load(MODEL_F)\n", - "model.load_state_dict(state)\n", - "model.to(device);" - ] + "metadata": {} }, { "cell_type": "code", "execution_count": 24, - "metadata": {}, - "outputs": [], "source": [ "def inference(of_f):\n", " of = np.load(of_f)\n", @@ -86,26 +84,27 @@ " del i\n", " torch.cuda.empty_cache()\n", " return pred" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [], "source": [ "# loop over all files in directory and predict\n", "for f in Path(OF_NPY_DIR).glob('*.npy'):\n", " y_hat = inference(f).item()\n", " print(f'{f.name}: {round(y_hat, 2)}')" - ] + ], + "outputs": [], + "metadata": {} } ], "metadata": { "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + "name": "python3", + "display_name": "Python 3.8.8 64-bit ('base': conda)" }, "language_info": { "codemirror_mode": { @@ -117,9 +116,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.8.8" + }, + "interpreter": { + "hash": "2aeb8807af674c25e42d3b954bdf81ebbd8b3b7269d8598fd0a060a9edf341c1" } }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/vis/pred_label_vis.gif b/model/calib_efnet_b0.pth similarity index 53% rename from vis/pred_label_vis.gif rename to model/calib_efnet_b0.pth index 37def81..2de4221 100644 Binary files a/vis/pred_label_vis.gif and b/model/calib_efnet_b0.pth differ diff --git a/model/efnet_b0.pth b/model/efnet_b0.pth new file mode 100644 index 0000000..2630271 Binary files /dev/null and b/model/efnet_b0.pth differ diff --git a/model/raft_models/raft-chairs.pth b/model/raft_models/raft-chairs.pth new file mode 100644 index 0000000..017dbd1 Binary files /dev/null and b/model/raft_models/raft-chairs.pth differ diff --git a/model/raft_models/raft-kitti.pth b/model/raft_models/raft-kitti.pth new file mode 100644 index 0000000..ddf86d9 Binary files /dev/null and b/model/raft_models/raft-kitti.pth differ diff --git a/model/raft_models/raft-sintel.pth b/model/raft_models/raft-sintel.pth new file mode 100644 index 0000000..e9ace90 Binary files /dev/null and b/model/raft_models/raft-sintel.pth differ diff --git a/model/raft_models/raft-small.pth b/model/raft_models/raft-small.pth new file mode 100644 index 0000000..2cbab8e Binary files /dev/null and b/model/raft_models/raft-small.pth differ diff --git a/model/raft_models/raft-things.pth b/model/raft_models/raft-things.pth new file mode 100644 index 0000000..dbe6f9f Binary files /dev/null and b/model/raft_models/raft-things.pth differ diff --git a/nohup.out b/nohup.out new file mode 100644 index 0000000..ee95700 --- /dev/null +++ b/nohup.out @@ -0,0 +1,1606 @@ +2021-08-10 17:17:41.201608: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0 +Loaded pretrained weights for efficientnet-b0 +765 85 +Epoch: [1/100], Step: [100/765], Loss: 58.89213562011719 +Epoch: [1/100], Step: [200/765], Loss: 14.560020446777344 +Epoch: [1/100], Step: [300/765], Loss: 6.340395927429199 +Epoch: [1/100], Step: [400/765], Loss: 4.420370101928711 +Epoch: [1/100], Step: [500/765], Loss: 5.475696086883545 +Epoch: [1/100], Step: [600/765], Loss: 3.2284493446350098 +Epoch: [1/100], Step: [700/765], Loss: 6.529788017272949 +Validation: Epoch: [1/100], mean Loss: 4.545308589935303, last loss:4.459754943847656 +Epoch: [2/100], Step: [100/765], Loss: 16.67557144165039 +Epoch: [2/100], Step: [200/765], Loss: 6.7710065841674805 +Epoch: [2/100], Step: [300/765], Loss: 5.124335289001465 +Epoch: [2/100], Step: [400/765], Loss: 5.272933006286621 +Epoch: [2/100], Step: [500/765], Loss: 6.422268867492676 +Epoch: [2/100], Step: [600/765], Loss: 2.326042652130127 +Epoch: [2/100], Step: [700/765], Loss: 4.047069549560547 +Validation: Epoch: [2/100], mean Loss: 2.551825523376465, last loss:1.672971487045288 +Epoch: [3/100], Step: [100/765], Loss: 1.9552133083343506 +Epoch: [3/100], Step: [200/765], Loss: 3.3399159908294678 +Epoch: [3/100], Step: [300/765], Loss: 2.591266393661499 +Epoch: [3/100], Step: [400/765], Loss: 2.5152058601379395 +Epoch: [3/100], Step: [500/765], Loss: 3.400353193283081 +Epoch: [3/100], Step: [600/765], Loss: 5.839598655700684 +Epoch: [3/100], Step: [700/765], Loss: 17.880712509155273 +Validation: Epoch: [3/100], mean Loss: 1.8752447366714478, last loss:1.2735953330993652 +Epoch: [4/100], Step: [100/765], Loss: 6.820224761962891 +Epoch: [4/100], Step: [200/765], Loss: 17.792194366455078 +Epoch: [4/100], Step: [300/765], Loss: 2.21598219871521 +Epoch: [4/100], Step: [400/765], Loss: 2.3442623615264893 +Epoch: [4/100], Step: [500/765], Loss: 2.4511020183563232 +Epoch: [4/100], Step: [600/765], Loss: 0.9128684997558594 +Epoch: [4/100], Step: [700/765], Loss: 9.100436210632324 +Validation: Epoch: [4/100], mean Loss: 1.7146027088165283, last loss:1.3138048648834229 +Epoch: [5/100], Step: [100/765], Loss: 1.7414941787719727 +Epoch: [5/100], Step: [200/765], Loss: 0.9049717783927917 +Epoch: [5/100], Step: [300/765], Loss: 1.4833319187164307 +Epoch: [5/100], Step: [400/765], Loss: 1.942009687423706 +Epoch: [5/100], Step: [500/765], Loss: 2.7008070945739746 +Epoch: [5/100], Step: [600/765], Loss: 1.7645950317382812 +Epoch: [5/100], Step: [700/765], Loss: 1.3304378986358643 +Validation: Epoch: [5/100], mean Loss: 2.021965265274048, last loss:1.9658732414245605 +Epoch: [6/100], Step: [100/765], Loss: 6.310650825500488 +Epoch: [6/100], Step: [200/765], Loss: 1.5339834690093994 +Epoch: [6/100], Step: [300/765], Loss: 3.633167028427124 +Epoch: [6/100], Step: [400/765], Loss: 1.473128318786621 +Epoch: [6/100], Step: [500/765], Loss: 1.9158381223678589 +Epoch: [6/100], Step: [600/765], Loss: 2.7320456504821777 +Epoch: [6/100], Step: [700/765], Loss: 0.6700450778007507 +Validation: Epoch: [6/100], mean Loss: 1.8482719659805298, last loss:1.7735975980758667 +Epoch: [7/100], Step: [100/765], Loss: 1.1814017295837402 +Epoch: [7/100], Step: [200/765], Loss: 1.2713459730148315 +Epoch: [7/100], Step: [300/765], Loss: 1.149144172668457 +Epoch: [7/100], Step: [400/765], Loss: 1.4468834400177002 +Epoch: [7/100], Step: [500/765], Loss: 2.306414842605591 +Epoch: [7/100], Step: [600/765], Loss: 1.6364927291870117 +Epoch: [7/100], Step: [700/765], Loss: 1.366194486618042 +Validation: Epoch: [7/100], mean Loss: 3.393749237060547, last loss:2.8311736583709717 +Epoch: [8/100], Step: [100/765], Loss: 0.9349479079246521 +Epoch: [8/100], Step: [200/765], Loss: 1.3195183277130127 +Epoch: [8/100], Step: [300/765], Loss: 0.8174611926078796 +Epoch: [8/100], Step: [400/765], Loss: 0.5942381620407104 +Epoch: [8/100], Step: [500/765], Loss: 1.38490891456604 +Epoch: [8/100], Step: [600/765], Loss: 0.7952789068222046 +Epoch: [8/100], Step: [700/765], Loss: 1.541401743888855 +Validation: Epoch: [8/100], mean Loss: 1.2501306533813477, last loss:1.141311764717102 +Epoch: [9/100], Step: [100/765], Loss: 0.7205286026000977 +Epoch: [9/100], Step: [200/765], Loss: 1.1526718139648438 +Epoch: [9/100], Step: [300/765], Loss: 0.4758782982826233 +Epoch: [9/100], Step: [400/765], Loss: 1.1826317310333252 +Epoch: [9/100], Step: [500/765], Loss: 0.4744006097316742 +Epoch: [9/100], Step: [600/765], Loss: 2.4036827087402344 +Epoch: [9/100], Step: [700/765], Loss: 0.8170515298843384 +Validation: Epoch: [9/100], mean Loss: 0.9333760142326355, last loss:0.6942645907402039 +Epoch: [10/100], Step: [100/765], Loss: 0.6831438541412354 +Epoch: [10/100], Step: [200/765], Loss: 0.7616114616394043 +Epoch: [10/100], Step: [300/765], Loss: 0.7867851257324219 +Epoch: [10/100], Step: [400/765], Loss: 0.6662294268608093 +Epoch: [10/100], Step: [500/765], Loss: 0.6032529473304749 +Epoch: [10/100], Step: [600/765], Loss: 0.4599184989929199 +Epoch: [10/100], Step: [700/765], Loss: 0.7571253776550293 +Validation: Epoch: [10/100], mean Loss: 1.305435061454773, last loss:1.0292370319366455 +Epoch: [11/100], Step: [100/765], Loss: 0.9345998167991638 +Epoch: [11/100], Step: [200/765], Loss: 0.8451241850852966 +Epoch: [11/100], Step: [300/765], Loss: 1.738734483718872 +Epoch: [11/100], Step: [400/765], Loss: 0.9795960187911987 +Epoch: [11/100], Step: [500/765], Loss: 0.7030394077301025 +Epoch: [11/100], Step: [600/765], Loss: 0.6333632469177246 +Epoch: [11/100], Step: [700/765], Loss: 0.7114223837852478 +Validation: Epoch: [11/100], mean Loss: 1.1736271381378174, last loss:0.8174450397491455 +Epoch: [12/100], Step: [100/765], Loss: 0.7479701042175293 +Epoch: [12/100], Step: [200/765], Loss: 0.6015723943710327 +Epoch: [12/100], Step: [300/765], Loss: 1.0146373510360718 +Epoch: [12/100], Step: [400/765], Loss: 1.0597078800201416 +Epoch: [12/100], Step: [500/765], Loss: 1.05338716506958 +Epoch: [12/100], Step: [600/765], Loss: 1.1969456672668457 +Epoch: [12/100], Step: [700/765], Loss: 0.45750999450683594 +Validation: Epoch: [12/100], mean Loss: 1.0709497928619385, last loss:1.1941684484481812 +Epoch: [13/100], Step: [100/765], Loss: 0.47494229674339294 +Epoch: [13/100], Step: [200/765], Loss: 0.7953747510910034 +Epoch: [13/100], Step: [300/765], Loss: 1.0899205207824707 +Epoch: [13/100], Step: [400/765], Loss: 0.5040154457092285 +Epoch: [13/100], Step: [500/765], Loss: 0.8824070692062378 +Epoch: [13/100], Step: [600/765], Loss: 0.7050565481185913 +Epoch: [13/100], Step: [700/765], Loss: 0.37666475772857666 +Validation: Epoch: [13/100], mean Loss: 0.9718223214149475, last loss:1.1032239198684692 +Epoch: [14/100], Step: [100/765], Loss: 0.8671848773956299 +Epoch: [14/100], Step: [200/765], Loss: 1.3190988302230835 +Epoch: [14/100], Step: [300/765], Loss: 0.9632555842399597 +Epoch: [14/100], Step: [400/765], Loss: 0.3640515208244324 +Epoch: [14/100], Step: [500/765], Loss: 0.755774974822998 +Epoch: [14/100], Step: [600/765], Loss: 0.47371870279312134 +Epoch: [14/100], Step: [700/765], Loss: 0.5173898339271545 +Validation: Epoch: [14/100], mean Loss: 0.6060780882835388, last loss:0.6540327072143555 +Epoch: [15/100], Step: [100/765], Loss: 0.7244324088096619 +Epoch: [15/100], Step: [200/765], Loss: 0.6188477277755737 +Epoch: [15/100], Step: [300/765], Loss: 0.48981112241744995 +Epoch: [15/100], Step: [400/765], Loss: 0.7816149592399597 +Epoch: [15/100], Step: [500/765], Loss: 0.24196717143058777 +Epoch: [15/100], Step: [600/765], Loss: 0.4648028016090393 +Epoch: [15/100], Step: [700/765], Loss: 0.49683523178100586 +Validation: Epoch: [15/100], mean Loss: 1.2460416555404663, last loss:1.1181628704071045 +Epoch: [16/100], Step: [100/765], Loss: 0.4249837100505829 +Epoch: [16/100], Step: [200/765], Loss: 0.2765847444534302 +Epoch: [16/100], Step: [300/765], Loss: 0.3678830564022064 +Epoch: [16/100], Step: [400/765], Loss: 0.28406810760498047 +Epoch: [16/100], Step: [500/765], Loss: 0.4778880774974823 +Epoch: [16/100], Step: [600/765], Loss: 0.6356444954872131 +Epoch: [16/100], Step: [700/765], Loss: 0.15172787010669708 +Validation: Epoch: [16/100], mean Loss: 0.47277069091796875, last loss:0.32214468717575073 +Epoch: [17/100], Step: [100/765], Loss: 0.31266582012176514 +Epoch: [17/100], Step: [200/765], Loss: 0.8809291124343872 +Epoch: [17/100], Step: [300/765], Loss: 0.40052247047424316 +Epoch: [17/100], Step: [400/765], Loss: 0.3994154930114746 +Epoch: [17/100], Step: [500/765], Loss: 0.3604624271392822 +Epoch: [17/100], Step: [600/765], Loss: 0.4350922107696533 +Epoch: [17/100], Step: [700/765], Loss: 0.4031648635864258 +Validation: Epoch: [17/100], mean Loss: 0.8212834000587463, last loss:0.979602038860321 +Epoch: [18/100], Step: [100/765], Loss: 0.37301772832870483 +Epoch: [18/100], Step: [200/765], Loss: 0.4976920783519745 +Epoch: [18/100], Step: [300/765], Loss: 0.36649954319000244 +Epoch: [18/100], Step: [400/765], Loss: 0.6072235703468323 +Epoch: [18/100], Step: [500/765], Loss: 0.4884464740753174 +Epoch: [18/100], Step: [600/765], Loss: 0.2530411183834076 +Epoch: [18/100], Step: [700/765], Loss: 0.5620762705802917 +Validation: Epoch: [18/100], mean Loss: 0.6041491031646729, last loss:0.5324414968490601 +Epoch: [19/100], Step: [100/765], Loss: 0.48150569200515747 +Epoch: [19/100], Step: [200/765], Loss: 0.7879416346549988 +Epoch: [19/100], Step: [300/765], Loss: 0.433871865272522 +Epoch: [19/100], Step: [400/765], Loss: 0.5254512429237366 +Epoch: [19/100], Step: [500/765], Loss: 0.854056715965271 +Epoch: [19/100], Step: [600/765], Loss: 0.5246562361717224 +Epoch: [19/100], Step: [700/765], Loss: 0.45197853446006775 +Validation: Epoch: [19/100], mean Loss: 0.5557966232299805, last loss:0.46207350492477417 +Epoch: [20/100], Step: [100/765], Loss: 0.2974185347557068 +Epoch: [20/100], Step: [200/765], Loss: 1.0972007513046265 +Epoch: [20/100], Step: [300/765], Loss: 0.20103463530540466 +Epoch: [20/100], Step: [400/765], Loss: 0.28724294900894165 +Epoch: [20/100], Step: [500/765], Loss: 0.30856800079345703 +Epoch: [20/100], Step: [600/765], Loss: 0.40502747893333435 +Epoch: [20/100], Step: [700/765], Loss: 0.6919695734977722 +Validation: Epoch: [20/100], mean Loss: 0.34402164816856384, last loss:0.3166055381298065 +Epoch: [21/100], Step: [100/765], Loss: 0.22670406103134155 +Epoch: [21/100], Step: [200/765], Loss: 0.6468788385391235 +Epoch: [21/100], Step: [300/765], Loss: 0.21219298243522644 +Epoch: [21/100], Step: [400/765], Loss: 0.4115266799926758 +Epoch: [21/100], Step: [500/765], Loss: 0.40631556510925293 +Epoch: [21/100], Step: [600/765], Loss: 0.4613145589828491 +Epoch: [21/100], Step: [700/765], Loss: 0.4125632047653198 +Validation: Epoch: [21/100], mean Loss: 0.336029052734375, last loss:0.24507498741149902 +Epoch: [22/100], Step: [100/765], Loss: 0.2692669630050659 +Epoch: [22/100], Step: [200/765], Loss: 0.4636143445968628 +Epoch: [22/100], Step: [300/765], Loss: 0.20321428775787354 +Epoch: [22/100], Step: [400/765], Loss: 0.4502291679382324 +Epoch: [22/100], Step: [500/765], Loss: 0.4681473970413208 +Epoch: [22/100], Step: [600/765], Loss: 0.34282463788986206 +Epoch: [22/100], Step: [700/765], Loss: 0.29995280504226685 +Validation: Epoch: [22/100], mean Loss: 0.5154781937599182, last loss:0.67672199010849 +Epoch: [23/100], Step: [100/765], Loss: 0.2921505570411682 +Epoch: [23/100], Step: [200/765], Loss: 0.5941697955131531 +Epoch: [23/100], Step: [300/765], Loss: 0.45621490478515625 +Epoch: [23/100], Step: [400/765], Loss: 0.2559979557991028 +Epoch: [23/100], Step: [500/765], Loss: 0.27884167432785034 +Epoch: [23/100], Step: [600/765], Loss: 0.13519373536109924 +Epoch: [23/100], Step: [700/765], Loss: 0.6591865420341492 +Validation: Epoch: [23/100], mean Loss: 0.3669625520706177, last loss:0.37171638011932373 +Epoch: [24/100], Step: [100/765], Loss: 0.36860281229019165 +Epoch: [24/100], Step: [200/765], Loss: 0.4960750937461853 +Epoch: [24/100], Step: [300/765], Loss: 0.32870304584503174 +Epoch: [24/100], Step: [400/765], Loss: 0.18192367255687714 +Epoch: [24/100], Step: [500/765], Loss: 0.3103371262550354 +Epoch: [24/100], Step: [600/765], Loss: 0.2724391222000122 +Epoch: [24/100], Step: [700/765], Loss: 0.16326680779457092 +Validation: Epoch: [24/100], mean Loss: 0.4938719570636749, last loss:0.5110335350036621 +Epoch: [25/100], Step: [100/765], Loss: 0.4635138511657715 +Epoch: [25/100], Step: [200/765], Loss: 0.9932112693786621 +Epoch: [25/100], Step: [300/765], Loss: 0.39850854873657227 +Epoch: [25/100], Step: [400/765], Loss: 0.18334102630615234 +Epoch: [25/100], Step: [500/765], Loss: 0.32929110527038574 +Epoch: [25/100], Step: [600/765], Loss: 0.14664286375045776 +Epoch: [25/100], Step: [700/765], Loss: 0.33450859785079956 +Validation: Epoch: [25/100], mean Loss: 0.4832644760608673, last loss:0.4362993836402893 +Epoch: [26/100], Step: [100/765], Loss: 0.36505669355392456 +Epoch: [26/100], Step: [200/765], Loss: 0.30926716327667236 +Epoch: [26/100], Step: [300/765], Loss: 0.3729703426361084 +Epoch: [26/100], Step: [400/765], Loss: 0.15252022445201874 +Epoch: [26/100], Step: [500/765], Loss: 0.5119485259056091 +Epoch: [26/100], Step: [600/765], Loss: 0.25866836309432983 +Epoch: [26/100], Step: [700/765], Loss: 0.2744295299053192 +Validation: Epoch: [26/100], mean Loss: 0.3232450485229492, last loss:0.3152940571308136 +Epoch: [27/100], Step: [100/765], Loss: 0.31331607699394226 +Epoch: [27/100], Step: [200/765], Loss: 0.2073369324207306 +Epoch: [27/100], Step: [300/765], Loss: 0.25437140464782715 +Epoch: [27/100], Step: [400/765], Loss: 0.29604077339172363 +Epoch: [27/100], Step: [500/765], Loss: 0.2122381627559662 +Epoch: [27/100], Step: [600/765], Loss: 0.2626871168613434 +Epoch: [27/100], Step: [700/765], Loss: 0.5012849569320679 +Validation: Epoch: [27/100], mean Loss: 0.31772536039352417, last loss:0.26959437131881714 +Epoch: [28/100], Step: [100/765], Loss: 0.18124143779277802 +Epoch: [28/100], Step: [200/765], Loss: 0.7674660086631775 +Epoch: [28/100], Step: [300/765], Loss: 0.14301802217960358 +Epoch: [28/100], Step: [400/765], Loss: 0.12033246457576752 +Epoch: [28/100], Step: [500/765], Loss: 0.20653240382671356 +Epoch: [28/100], Step: [600/765], Loss: 0.9578527212142944 +Epoch: [28/100], Step: [700/765], Loss: 0.2706218957901001 +Validation: Epoch: [28/100], mean Loss: 0.4074690043926239, last loss:0.4625729024410248 +Epoch: [29/100], Step: [100/765], Loss: 0.22241491079330444 +Epoch: [29/100], Step: [200/765], Loss: 0.2320844829082489 +Epoch: [29/100], Step: [300/765], Loss: 0.24290727078914642 +Epoch: [29/100], Step: [400/765], Loss: 0.2829388380050659 +Epoch: [29/100], Step: [500/765], Loss: 0.5814191102981567 +Epoch: [29/100], Step: [600/765], Loss: 0.19637322425842285 +Epoch: [29/100], Step: [700/765], Loss: 0.2858808934688568 +Validation: Epoch: [29/100], mean Loss: 0.3237943947315216, last loss:0.39815887808799744 +Epoch: [30/100], Step: [100/765], Loss: 0.20624946057796478 +Epoch: [30/100], Step: [200/765], Loss: 0.2528199553489685 +Epoch: [30/100], Step: [300/765], Loss: 0.3243127763271332 +Epoch: [30/100], Step: [400/765], Loss: 0.3585750460624695 +Epoch: [30/100], Step: [500/765], Loss: 0.3604884743690491 +Epoch: [30/100], Step: [600/765], Loss: 0.3559013605117798 +Epoch: [30/100], Step: [700/765], Loss: 0.34350430965423584 +Validation: Epoch: [30/100], mean Loss: 0.3027791678905487, last loss:0.263702929019928 +Epoch: [31/100], Step: [100/765], Loss: 0.3977545201778412 +Epoch: [31/100], Step: [200/765], Loss: 0.24077525734901428 +Epoch: [31/100], Step: [300/765], Loss: 0.1713831126689911 +Epoch: [31/100], Step: [400/765], Loss: 0.2642894685268402 +Epoch: [31/100], Step: [500/765], Loss: 0.1853976547718048 +Epoch: [31/100], Step: [600/765], Loss: 0.2386322021484375 +Epoch: [31/100], Step: [700/765], Loss: 0.2260715365409851 +Validation: Epoch: [31/100], mean Loss: 0.3399454653263092, last loss:0.37356680631637573 +Epoch: [32/100], Step: [100/765], Loss: 0.13225442171096802 +Epoch: [32/100], Step: [200/765], Loss: 0.36540254950523376 +Epoch: [32/100], Step: [300/765], Loss: 0.39014434814453125 +Epoch: [32/100], Step: [400/765], Loss: 0.48517507314682007 +Epoch: [32/100], Step: [500/765], Loss: 0.17356108129024506 +Epoch: [32/100], Step: [600/765], Loss: 0.3827023506164551 +Epoch: [32/100], Step: [700/765], Loss: 0.34075045585632324 +Validation: Epoch: [32/100], mean Loss: 0.2896159887313843, last loss:0.26004013419151306 +Epoch: [33/100], Step: [100/765], Loss: 0.32993483543395996 +Epoch: [33/100], Step: [200/765], Loss: 0.15844368934631348 +Epoch: [33/100], Step: [300/765], Loss: 0.13438573479652405 +Epoch: [33/100], Step: [400/765], Loss: 0.2558082342147827 +Epoch: [33/100], Step: [500/765], Loss: 0.20430658757686615 +Epoch: [33/100], Step: [600/765], Loss: 0.2933126986026764 +Epoch: [33/100], Step: [700/765], Loss: 0.3183268904685974 +Validation: Epoch: [33/100], mean Loss: 0.34033218026161194, last loss:0.40895146131515503 +Epoch: [34/100], Step: [100/765], Loss: 0.22254949808120728 +Epoch: [34/100], Step: [200/765], Loss: 0.17014989256858826 +Epoch: [34/100], Step: [300/765], Loss: 0.15568110346794128 +Epoch: [34/100], Step: [400/765], Loss: 0.16235487163066864 +Epoch: [34/100], Step: [500/765], Loss: 0.24742341041564941 +Epoch: [34/100], Step: [600/765], Loss: 0.3175785541534424 +Epoch: [34/100], Step: [700/765], Loss: 0.33589968085289 +Validation: Epoch: [34/100], mean Loss: 0.22195202112197876, last loss:0.2575097978115082 +Epoch: [35/100], Step: [100/765], Loss: 0.5528504252433777 +Epoch: [35/100], Step: [200/765], Loss: 0.17128828167915344 +Epoch: [35/100], Step: [300/765], Loss: 0.31623145937919617 +Epoch: [35/100], Step: [400/765], Loss: 0.27818048000335693 +Epoch: [35/100], Step: [500/765], Loss: 0.37574881315231323 +Epoch: [35/100], Step: [600/765], Loss: 0.21557877957820892 +Epoch: [35/100], Step: [700/765], Loss: 0.19106444716453552 +Validation: Epoch: [35/100], mean Loss: 0.3107791841030121, last loss:0.3389493227005005 +Epoch: [36/100], Step: [100/765], Loss: 0.17186973989009857 +Epoch: [36/100], Step: [200/765], Loss: 0.2247634381055832 +Epoch: [36/100], Step: [300/765], Loss: 0.32509028911590576 +Epoch: [36/100], Step: [400/765], Loss: 0.262131929397583 +Epoch: [36/100], Step: [500/765], Loss: 0.23816721141338348 +Epoch: [36/100], Step: [600/765], Loss: 0.20507502555847168 +Epoch: [36/100], Step: [700/765], Loss: 0.21575932204723358 +Validation: Epoch: [36/100], mean Loss: 0.26661282777786255, last loss:0.21947109699249268 +Epoch: [37/100], Step: [100/765], Loss: 0.16602937877178192 +Epoch: [37/100], Step: [200/765], Loss: 0.1650765985250473 +Epoch: [37/100], Step: [300/765], Loss: 0.27183279395103455 +Epoch: [37/100], Step: [400/765], Loss: 0.255999892950058 +Epoch: [37/100], Step: [500/765], Loss: 0.2481233924627304 +Epoch: [37/100], Step: [600/765], Loss: 0.26566800475120544 +Epoch: [37/100], Step: [700/765], Loss: 0.11819297075271606 +Validation: Epoch: [37/100], mean Loss: 0.26778560876846313, last loss:0.23432642221450806 +Epoch: [38/100], Step: [100/765], Loss: 0.17260169982910156 +Epoch: [38/100], Step: [200/765], Loss: 0.1895366609096527 +Epoch: [38/100], Step: [300/765], Loss: 0.18315204977989197 +Epoch: [38/100], Step: [400/765], Loss: 0.08943291753530502 +Epoch: [38/100], Step: [500/765], Loss: 0.05712825804948807 +Epoch: [38/100], Step: [600/765], Loss: 0.17288486659526825 +Epoch: [38/100], Step: [700/765], Loss: 0.26418137550354004 +Validation: Epoch: [38/100], mean Loss: 0.1988268792629242, last loss:0.1844525784254074 +Epoch: [39/100], Step: [100/765], Loss: 0.27750539779663086 +Epoch: [39/100], Step: [200/765], Loss: 0.27165696024894714 +Epoch: [39/100], Step: [300/765], Loss: 0.25116369128227234 +Epoch: [39/100], Step: [400/765], Loss: 0.10502195358276367 +Epoch: [39/100], Step: [500/765], Loss: 0.17883162200450897 +Epoch: [39/100], Step: [600/765], Loss: 0.22225338220596313 +Epoch: [39/100], Step: [700/765], Loss: 0.3405345678329468 +Validation: Epoch: [39/100], mean Loss: 0.23324601352214813, last loss:0.31729766726493835 +Epoch: [40/100], Step: [100/765], Loss: 0.14111852645874023 +Epoch: [40/100], Step: [200/765], Loss: 0.15041878819465637 +Epoch: [40/100], Step: [300/765], Loss: 0.15977589786052704 +Epoch: [40/100], Step: [400/765], Loss: 0.27104753255844116 +Epoch: [40/100], Step: [500/765], Loss: 0.16645196080207825 +Epoch: [40/100], Step: [600/765], Loss: 0.14683036506175995 +Epoch: [40/100], Step: [700/765], Loss: 0.18300864100456238 +Validation: Epoch: [40/100], mean Loss: 0.4206852614879608, last loss:0.447529137134552 +Epoch: [41/100], Step: [100/765], Loss: 0.20080065727233887 +Epoch: [41/100], Step: [200/765], Loss: 0.18724916875362396 +Epoch: [41/100], Step: [300/765], Loss: 0.7255725860595703 +Epoch: [41/100], Step: [400/765], Loss: 0.1913403570652008 +Epoch: [41/100], Step: [500/765], Loss: 0.27314701676368713 +Epoch: [41/100], Step: [600/765], Loss: 0.15001294016838074 +Epoch: [41/100], Step: [700/765], Loss: 0.26625150442123413 +Validation: Epoch: [41/100], mean Loss: 0.253824383020401, last loss:0.2852814793586731 +Epoch: [42/100], Step: [100/765], Loss: 0.2533172369003296 +Epoch: [42/100], Step: [200/765], Loss: 0.30300241708755493 +Epoch: [42/100], Step: [300/765], Loss: 0.3078771233558655 +Epoch: [42/100], Step: [400/765], Loss: 0.16019564867019653 +Epoch: [42/100], Step: [500/765], Loss: 0.25158530473709106 +Epoch: [42/100], Step: [600/765], Loss: 0.214727520942688 +Epoch: [42/100], Step: [700/765], Loss: 0.1763347089290619 +Validation: Epoch: [42/100], mean Loss: 0.20378874242305756, last loss:0.27238917350769043 +Epoch: [43/100], Step: [100/765], Loss: 0.24874648451805115 +Epoch: [43/100], Step: [200/765], Loss: 0.0959966629743576 +Epoch: [43/100], Step: [300/765], Loss: 0.2263857126235962 +Epoch: [43/100], Step: [400/765], Loss: 0.19803635776042938 +Epoch: [43/100], Step: [500/765], Loss: 0.3739725351333618 +Epoch: [43/100], Step: [600/765], Loss: 0.26678240299224854 +Epoch: [43/100], Step: [700/765], Loss: 0.16482987999916077 +Validation: Epoch: [43/100], mean Loss: 0.24056920409202576, last loss:0.27978113293647766 +Epoch: [44/100], Step: [100/765], Loss: 0.19488927721977234 +Epoch: [44/100], Step: [200/765], Loss: 0.2308053970336914 +Epoch: [44/100], Step: [300/765], Loss: 0.14992274343967438 +Epoch: [44/100], Step: [400/765], Loss: 0.2297556847333908 +Epoch: [44/100], Step: [500/765], Loss: 0.13195672631263733 +Epoch: [44/100], Step: [600/765], Loss: 0.16525980830192566 +Epoch: [44/100], Step: [700/765], Loss: 0.19320711493492126 +Validation: Epoch: [44/100], mean Loss: 0.17558640241622925, last loss:0.23827366530895233 +Epoch: [45/100], Step: [100/765], Loss: 0.21180519461631775 +Epoch: [45/100], Step: [200/765], Loss: 0.27209392189979553 +Epoch: [45/100], Step: [300/765], Loss: 0.19666068255901337 +Epoch: [45/100], Step: [400/765], Loss: 0.21527022123336792 +Epoch: [45/100], Step: [500/765], Loss: 0.1233789473772049 +Epoch: [45/100], Step: [600/765], Loss: 0.12965045869350433 +Epoch: [45/100], Step: [700/765], Loss: 0.17733600735664368 +Validation: Epoch: [45/100], mean Loss: 0.3986741006374359, last loss:0.432984322309494 +Epoch: [46/100], Step: [100/765], Loss: 0.3241027593612671 +Epoch: [46/100], Step: [200/765], Loss: 0.08775588870048523 +Epoch: [46/100], Step: [300/765], Loss: 0.13403691351413727 +Epoch: [46/100], Step: [400/765], Loss: 0.18990090489387512 +Epoch: [46/100], Step: [500/765], Loss: 0.30456840991973877 +Epoch: [46/100], Step: [600/765], Loss: 0.15356414020061493 +Epoch: [46/100], Step: [700/765], Loss: 0.3080274760723114 +Validation: Epoch: [46/100], mean Loss: 0.22359280288219452, last loss:0.27638736367225647 +Epoch: [47/100], Step: [100/765], Loss: 0.17239712178707123 +Epoch: [47/100], Step: [200/765], Loss: 0.2576185464859009 +Epoch: [47/100], Step: [300/765], Loss: 0.18483875691890717 +Epoch: [47/100], Step: [400/765], Loss: 0.18115508556365967 +Epoch: [47/100], Step: [500/765], Loss: 0.15088516473770142 +Epoch: [47/100], Step: [600/765], Loss: 0.16925343871116638 +Epoch: [47/100], Step: [700/765], Loss: 0.2490287721157074 +Validation: Epoch: [47/100], mean Loss: 0.44925716519355774, last loss:0.4329221248626709 +Epoch: [48/100], Step: [100/765], Loss: 0.3221936523914337 +Epoch: [48/100], Step: [200/765], Loss: 0.12108834832906723 +Epoch: [48/100], Step: [300/765], Loss: 0.23325565457344055 +Epoch: [48/100], Step: [400/765], Loss: 0.20955932140350342 +Epoch: [48/100], Step: [500/765], Loss: 0.24529215693473816 +Epoch: [48/100], Step: [600/765], Loss: 0.17694377899169922 +Epoch: [48/100], Step: [700/765], Loss: 0.25258344411849976 +Validation: Epoch: [48/100], mean Loss: 0.2988664209842682, last loss:0.4432468116283417 +Epoch: [49/100], Step: [100/765], Loss: 0.18711166083812714 +Epoch: [49/100], Step: [200/765], Loss: 0.14152096211910248 +Epoch: [49/100], Step: [300/765], Loss: 0.10034298896789551 +Epoch: [49/100], Step: [400/765], Loss: 0.05626610666513443 +Epoch: [49/100], Step: [500/765], Loss: 0.11284530162811279 +Epoch: [49/100], Step: [600/765], Loss: 0.28296422958374023 +Epoch: [49/100], Step: [700/765], Loss: 0.3008855879306793 +Validation: Epoch: [49/100], mean Loss: 0.17426012456417084, last loss:0.18510913848876953 +Epoch: [50/100], Step: [100/765], Loss: 0.0818554013967514 +Epoch: [50/100], Step: [200/765], Loss: 0.11391009390354156 +Epoch: [50/100], Step: [300/765], Loss: 0.1997687667608261 +Epoch: [50/100], Step: [400/765], Loss: 0.1909034550189972 +Epoch: [50/100], Step: [500/765], Loss: 0.14215409755706787 +Epoch: [50/100], Step: [600/765], Loss: 0.10272829234600067 +Epoch: [50/100], Step: [700/765], Loss: 0.1872168779373169 +Validation: Epoch: [50/100], mean Loss: 0.19402925670146942, last loss:0.1580614298582077 +Epoch: [51/100], Step: [100/765], Loss: 0.24882623553276062 +Epoch: [51/100], Step: [200/765], Loss: 0.18900606036186218 +Epoch: [51/100], Step: [300/765], Loss: 0.13309603929519653 +Epoch: [51/100], Step: [400/765], Loss: 0.14024916291236877 +Epoch: [51/100], Step: [500/765], Loss: 0.11636815965175629 +Epoch: [51/100], Step: [600/765], Loss: 0.1588229238986969 +Epoch: [51/100], Step: [700/765], Loss: 0.1211860403418541 +Validation: Epoch: [51/100], mean Loss: 0.16037389636039734, last loss:0.17692622542381287 +Epoch: [52/100], Step: [100/765], Loss: 0.2701703906059265 +Epoch: [52/100], Step: [200/765], Loss: 0.11743508279323578 +Epoch: [52/100], Step: [300/765], Loss: 0.1427256166934967 +Epoch: [52/100], Step: [400/765], Loss: 0.2122475802898407 +Epoch: [52/100], Step: [500/765], Loss: 0.1421046406030655 +Epoch: [52/100], Step: [600/765], Loss: 0.12041567265987396 +Epoch: [52/100], Step: [700/765], Loss: 0.18820026516914368 +Validation: Epoch: [52/100], mean Loss: 0.22747394442558289, last loss:0.2021779865026474 +Epoch: [53/100], Step: [100/765], Loss: 0.1389792114496231 +Epoch: [53/100], Step: [200/765], Loss: 0.15484865009784698 +Epoch: [53/100], Step: [300/765], Loss: 0.054314419627189636 +Epoch: [53/100], Step: [400/765], Loss: 0.1613328605890274 +Epoch: [53/100], Step: [500/765], Loss: 0.1476944237947464 +Epoch: [53/100], Step: [600/765], Loss: 0.13312068581581116 +Epoch: [53/100], Step: [700/765], Loss: 0.20421843230724335 +Validation: Epoch: [53/100], mean Loss: 0.18999290466308594, last loss:0.2079692780971527 +Epoch: [54/100], Step: [100/765], Loss: 0.08627218008041382 +Epoch: [54/100], Step: [200/765], Loss: 0.08298243582248688 +Epoch: [54/100], Step: [300/765], Loss: 0.17545214295387268 +Epoch: [54/100], Step: [400/765], Loss: 0.15289895236492157 +Epoch: [54/100], Step: [500/765], Loss: 0.17700444161891937 +Epoch: [54/100], Step: [600/765], Loss: 0.27532321214675903 +Epoch: [54/100], Step: [700/765], Loss: 0.08633890002965927 +Validation: Epoch: [54/100], mean Loss: 0.169550821185112, last loss:0.17522041499614716 +Epoch: [55/100], Step: [100/765], Loss: 0.18383006751537323 +Epoch: [55/100], Step: [200/765], Loss: 0.15420886874198914 +Epoch: [55/100], Step: [300/765], Loss: 0.14852659404277802 +Epoch: [55/100], Step: [400/765], Loss: 0.25508469343185425 +Epoch: [55/100], Step: [500/765], Loss: 0.20470523834228516 +Epoch: [55/100], Step: [600/765], Loss: 0.12203031778335571 +Epoch: [55/100], Step: [700/765], Loss: 0.13597533106803894 +Validation: Epoch: [55/100], mean Loss: 0.20791678130626678, last loss:0.2381434440612793 +Epoch: [56/100], Step: [100/765], Loss: 0.0674625039100647 +Epoch: [56/100], Step: [200/765], Loss: 0.11286609619855881 +Epoch: [56/100], Step: [300/765], Loss: 0.1677570343017578 +Epoch: [56/100], Step: [400/765], Loss: 0.15842866897583008 +Epoch: [56/100], Step: [500/765], Loss: 0.09036529064178467 +Epoch: [56/100], Step: [600/765], Loss: 0.13317495584487915 +Epoch: [56/100], Step: [700/765], Loss: 0.5478625893592834 +Validation: Epoch: [56/100], mean Loss: 0.14602787792682648, last loss:0.15219829976558685 +Epoch: [57/100], Step: [100/765], Loss: 0.15662987530231476 +Epoch: [57/100], Step: [200/765], Loss: 0.13078930974006653 +Epoch: [57/100], Step: [300/765], Loss: 0.2144542783498764 +Epoch: [57/100], Step: [400/765], Loss: 0.05864253640174866 +Epoch: [57/100], Step: [500/765], Loss: 0.09118348360061646 +Epoch: [57/100], Step: [600/765], Loss: 0.18815991282463074 +Epoch: [57/100], Step: [700/765], Loss: 0.16901478171348572 +Validation: Epoch: [57/100], mean Loss: 0.1434318572282791, last loss:0.12199407070875168 +Epoch: [58/100], Step: [100/765], Loss: 0.1000281423330307 +Epoch: [58/100], Step: [200/765], Loss: 0.11037685722112656 +Epoch: [58/100], Step: [300/765], Loss: 0.044777318835258484 +Epoch: [58/100], Step: [400/765], Loss: 0.3524784445762634 +Epoch: [58/100], Step: [500/765], Loss: 0.12509915232658386 +Epoch: [58/100], Step: [600/765], Loss: 0.12490297853946686 +Epoch: [58/100], Step: [700/765], Loss: 0.1176740974187851 +Validation: Epoch: [58/100], mean Loss: 0.195677250623703, last loss:0.204840749502182 +Epoch: [59/100], Step: [100/765], Loss: 0.14952078461647034 +Epoch: [59/100], Step: [200/765], Loss: 0.112248495221138 +Epoch: [59/100], Step: [300/765], Loss: 0.14055104553699493 +Epoch: [59/100], Step: [400/765], Loss: 0.1623515784740448 +Epoch: [59/100], Step: [500/765], Loss: 0.1076488196849823 +Epoch: [59/100], Step: [600/765], Loss: 0.11589953303337097 +Epoch: [59/100], Step: [700/765], Loss: 0.0932464748620987 +Validation: Epoch: [59/100], mean Loss: 0.18642191588878632, last loss:0.17598697543144226 +Epoch: [60/100], Step: [100/765], Loss: 0.13531452417373657 +Epoch: [60/100], Step: [200/765], Loss: 0.23276083171367645 +Epoch: [60/100], Step: [300/765], Loss: 0.23256227374076843 +Epoch: [60/100], Step: [400/765], Loss: 0.15011443197727203 +Epoch: [60/100], Step: [500/765], Loss: 0.06792475283145905 +Epoch: [60/100], Step: [600/765], Loss: 0.4138948321342468 +Epoch: [60/100], Step: [700/765], Loss: 0.15385080873966217 +Validation: Epoch: [60/100], mean Loss: 0.14901421964168549, last loss:0.09410953521728516 +Epoch: [61/100], Step: [100/765], Loss: 0.07384812831878662 +Epoch: [61/100], Step: [200/765], Loss: 0.2597375512123108 +Epoch: [61/100], Step: [300/765], Loss: 0.08487524092197418 +Epoch: [61/100], Step: [400/765], Loss: 0.12492865324020386 +Epoch: [61/100], Step: [500/765], Loss: 0.1350337415933609 +Epoch: [61/100], Step: [600/765], Loss: 0.09601446986198425 +Epoch: [61/100], Step: [700/765], Loss: 0.11754109710454941 +Validation: Epoch: [61/100], mean Loss: 0.15155267715454102, last loss:0.13963857293128967 +Epoch: [62/100], Step: [100/765], Loss: 0.10541781038045883 +Epoch: [62/100], Step: [200/765], Loss: 0.12541472911834717 +Epoch: [62/100], Step: [300/765], Loss: 0.10354708135128021 +Epoch: [62/100], Step: [400/765], Loss: 0.24082466959953308 +Epoch: [62/100], Step: [500/765], Loss: 0.17642979323863983 +Epoch: [62/100], Step: [600/765], Loss: 0.2004837840795517 +Epoch: [62/100], Step: [700/765], Loss: 0.08951050043106079 +Validation: Epoch: [62/100], mean Loss: 0.2186177521944046, last loss:0.2617436349391937 +Epoch: [63/100], Step: [100/765], Loss: 0.15012536942958832 +Epoch: [63/100], Step: [200/765], Loss: 0.06553541123867035 +Epoch: [63/100], Step: [300/765], Loss: 0.2844778001308441 +Epoch: [63/100], Step: [400/765], Loss: 0.1983546018600464 +Epoch: [63/100], Step: [500/765], Loss: 0.12345539033412933 +Epoch: [63/100], Step: [600/765], Loss: 0.05438964068889618 +Epoch: [63/100], Step: [700/765], Loss: 0.21391193568706512 +Validation: Epoch: [63/100], mean Loss: 0.16003979742527008, last loss:0.2041705846786499 +Epoch: [64/100], Step: [100/765], Loss: 0.07021947205066681 +Epoch: [64/100], Step: [200/765], Loss: 0.13849221169948578 +Epoch: [64/100], Step: [300/765], Loss: 0.16701245307922363 +Epoch: [64/100], Step: [400/765], Loss: 0.1355752944946289 +Epoch: [64/100], Step: [500/765], Loss: 0.1952514350414276 +Epoch: [64/100], Step: [600/765], Loss: 0.14621691405773163 +Epoch: [64/100], Step: [700/765], Loss: 0.16563579440116882 +Validation: Epoch: [64/100], mean Loss: 0.13711601495742798, last loss:0.14287064969539642 +Epoch: [65/100], Step: [100/765], Loss: 0.13555119931697845 +Epoch: [65/100], Step: [200/765], Loss: 0.13572107255458832 +Epoch: [65/100], Step: [300/765], Loss: 0.0979081243276596 +Epoch: [65/100], Step: [400/765], Loss: 0.13377511501312256 +Epoch: [65/100], Step: [500/765], Loss: 0.09803645312786102 +Epoch: [65/100], Step: [600/765], Loss: 0.11671527475118637 +Epoch: [65/100], Step: [700/765], Loss: 0.09866763651371002 +Validation: Epoch: [65/100], mean Loss: 0.134328693151474, last loss:0.17685720324516296 +Epoch: [66/100], Step: [100/765], Loss: 0.2812463641166687 +Epoch: [66/100], Step: [200/765], Loss: 0.09349963068962097 +Epoch: [66/100], Step: [300/765], Loss: 0.15676788985729218 +Epoch: [66/100], Step: [400/765], Loss: 0.07765829563140869 +Epoch: [66/100], Step: [500/765], Loss: 0.24629198014736176 +Epoch: [66/100], Step: [600/765], Loss: 0.050672587007284164 +Epoch: [66/100], Step: [700/765], Loss: 0.10613110661506653 +Validation: Epoch: [66/100], mean Loss: 0.13986791670322418, last loss:0.12929785251617432 +Epoch: [67/100], Step: [100/765], Loss: 0.21968971192836761 +Epoch: [67/100], Step: [200/765], Loss: 0.12834933400154114 +Epoch: [67/100], Step: [300/765], Loss: 0.1139034777879715 +Epoch: [67/100], Step: [400/765], Loss: 0.10865464806556702 +Epoch: [67/100], Step: [500/765], Loss: 0.13839875161647797 +Epoch: [67/100], Step: [600/765], Loss: 0.11097550392150879 +Epoch: [67/100], Step: [700/765], Loss: 0.11878636479377747 +Validation: Epoch: [67/100], mean Loss: 0.16220314800739288, last loss:0.16632980108261108 +Epoch: [68/100], Step: [100/765], Loss: 0.10760854929685593 +Epoch: [68/100], Step: [200/765], Loss: 0.17970481514930725 +Epoch: [68/100], Step: [300/765], Loss: 0.1250469982624054 +Epoch: [68/100], Step: [400/765], Loss: 0.08734556287527084 +Epoch: [68/100], Step: [500/765], Loss: 0.19895248115062714 +Epoch: [68/100], Step: [600/765], Loss: 0.21948187053203583 +Epoch: [68/100], Step: [700/765], Loss: 0.15643201768398285 +Validation: Epoch: [68/100], mean Loss: 0.14273761212825775, last loss:0.1040865033864975 +Epoch: [69/100], Step: [100/765], Loss: 0.13690635561943054 +Epoch: [69/100], Step: [200/765], Loss: 0.13642069697380066 +Epoch: [69/100], Step: [300/765], Loss: 0.19709424674510956 +Epoch: [69/100], Step: [400/765], Loss: 0.10582645237445831 +Epoch: [69/100], Step: [500/765], Loss: 0.16595178842544556 +Epoch: [69/100], Step: [600/765], Loss: 0.08522267639636993 +Epoch: [69/100], Step: [700/765], Loss: 0.0575992614030838 +Validation: Epoch: [69/100], mean Loss: 0.13459992408752441, last loss:0.1844712197780609 +Epoch: [70/100], Step: [100/765], Loss: 0.10223674774169922 +Epoch: [70/100], Step: [200/765], Loss: 0.15998786687850952 +Epoch: [70/100], Step: [300/765], Loss: 0.2079802006483078 +Epoch: [70/100], Step: [400/765], Loss: 0.19808408617973328 +Epoch: [70/100], Step: [500/765], Loss: 0.24803964793682098 +Epoch: [70/100], Step: [600/765], Loss: 0.11774350702762604 +Epoch: [70/100], Step: [700/765], Loss: 0.14112573862075806 +Validation: Epoch: [70/100], mean Loss: 0.20874398946762085, last loss:0.2216746211051941 +Epoch: [71/100], Step: [100/765], Loss: 0.07507746666669846 +Epoch: [71/100], Step: [200/765], Loss: 0.19669345021247864 +Epoch: [71/100], Step: [300/765], Loss: 0.1735072135925293 +Epoch: [71/100], Step: [400/765], Loss: 0.15058694779872894 +Epoch: [71/100], Step: [500/765], Loss: 0.11297087371349335 +Epoch: [71/100], Step: [600/765], Loss: 0.0753791481256485 +Epoch: [71/100], Step: [700/765], Loss: 0.12278638780117035 +Validation: Epoch: [71/100], mean Loss: 0.11393740028142929, last loss:0.13220950961112976 +Epoch: [72/100], Step: [100/765], Loss: 0.13456419110298157 +Epoch: [72/100], Step: [200/765], Loss: 0.13623180985450745 +Epoch: [72/100], Step: [300/765], Loss: 0.10016562789678574 +Epoch: [72/100], Step: [400/765], Loss: 0.06363242119550705 +Epoch: [72/100], Step: [500/765], Loss: 0.10133035480976105 +Epoch: [72/100], Step: [600/765], Loss: 0.13826774060726166 +Epoch: [72/100], Step: [700/765], Loss: 0.10632357001304626 +Validation: Epoch: [72/100], mean Loss: 0.15305399894714355, last loss:0.20023290812969208 +Epoch: [73/100], Step: [100/765], Loss: 0.2641756534576416 +Epoch: [73/100], Step: [200/765], Loss: 0.07976706326007843 +Epoch: [73/100], Step: [300/765], Loss: 0.18069279193878174 +Epoch: [73/100], Step: [400/765], Loss: 0.1655280590057373 +Epoch: [73/100], Step: [500/765], Loss: 0.26732006669044495 +Epoch: [73/100], Step: [600/765], Loss: 0.09310700744390488 +Epoch: [73/100], Step: [700/765], Loss: 0.14768896996974945 +Validation: Epoch: [73/100], mean Loss: 0.11040037125349045, last loss:0.0919928252696991 +Epoch: [74/100], Step: [100/765], Loss: 0.10984452813863754 +Epoch: [74/100], Step: [200/765], Loss: 0.17705410718917847 +Epoch: [74/100], Step: [300/765], Loss: 0.060940515249967575 +Epoch: [74/100], Step: [400/765], Loss: 0.14427419006824493 +Epoch: [74/100], Step: [500/765], Loss: 0.09527041018009186 +Epoch: [74/100], Step: [600/765], Loss: 0.07420139759778976 +Epoch: [74/100], Step: [700/765], Loss: 0.21809443831443787 +Validation: Epoch: [74/100], mean Loss: 0.16748623549938202, last loss:0.20106187462806702 +Epoch: [75/100], Step: [100/765], Loss: 0.08409720659255981 +Epoch: [75/100], Step: [200/765], Loss: 0.06627121567726135 +Epoch: [75/100], Step: [300/765], Loss: 0.06390494108200073 +Epoch: [75/100], Step: [400/765], Loss: 0.1326364427804947 +Epoch: [75/100], Step: [500/765], Loss: 0.11074592173099518 +Epoch: [75/100], Step: [600/765], Loss: 0.058308154344558716 +Epoch: [75/100], Step: [700/765], Loss: 0.12051241099834442 +Validation: Epoch: [75/100], mean Loss: 0.13399581611156464, last loss:0.13186711072921753 +Epoch: [76/100], Step: [100/765], Loss: 0.061636488884687424 +Epoch: [76/100], Step: [200/765], Loss: 0.09065431356430054 +Epoch: [76/100], Step: [300/765], Loss: 0.11769487708806992 +Epoch: [76/100], Step: [400/765], Loss: 0.10468410700559616 +Epoch: [76/100], Step: [500/765], Loss: 0.11652646958827972 +Epoch: [76/100], Step: [600/765], Loss: 0.09538693726062775 +Epoch: [76/100], Step: [700/765], Loss: 0.23569074273109436 +Validation: Epoch: [76/100], mean Loss: 0.11821389943361282, last loss:0.14344380795955658 +Epoch: [77/100], Step: [100/765], Loss: 0.09216003119945526 +Epoch: [77/100], Step: [200/765], Loss: 0.11301174014806747 +Epoch: [77/100], Step: [300/765], Loss: 0.14252004027366638 +Epoch: [77/100], Step: [400/765], Loss: 0.07803303003311157 +Epoch: [77/100], Step: [500/765], Loss: 0.1582309752702713 +Epoch: [77/100], Step: [600/765], Loss: 0.106256864964962 +Epoch: [77/100], Step: [700/765], Loss: 0.11376923322677612 +Validation: Epoch: [77/100], mean Loss: 0.10274116694927216, last loss:0.11291836947202682 +Epoch: [78/100], Step: [100/765], Loss: 0.24817930161952972 +Epoch: [78/100], Step: [200/765], Loss: 0.1071101576089859 +Epoch: [78/100], Step: [300/765], Loss: 0.11367051303386688 +Epoch: [78/100], Step: [400/765], Loss: 0.16694584488868713 +Epoch: [78/100], Step: [500/765], Loss: 0.12093430012464523 +Epoch: [78/100], Step: [600/765], Loss: 0.12471040338277817 +Epoch: [78/100], Step: [700/765], Loss: 0.16213542222976685 +Validation: Epoch: [78/100], mean Loss: 0.16044695675373077, last loss:0.19800400733947754 +Epoch: [79/100], Step: [100/765], Loss: 0.08665873855352402 +Epoch: [79/100], Step: [200/765], Loss: 0.09841646999120712 +Epoch: [79/100], Step: [300/765], Loss: 0.09444230794906616 +Epoch: [79/100], Step: [400/765], Loss: 0.08606579154729843 +Epoch: [79/100], Step: [500/765], Loss: 0.07071283459663391 +Epoch: [79/100], Step: [600/765], Loss: 0.11406274884939194 +Epoch: [79/100], Step: [700/765], Loss: 0.08993956446647644 +Validation: Epoch: [79/100], mean Loss: 0.11792049556970596, last loss:0.10187476873397827 +Epoch: [80/100], Step: [100/765], Loss: 0.1050957590341568 +Epoch: [80/100], Step: [200/765], Loss: 0.15709523856639862 +Epoch: [80/100], Step: [300/765], Loss: 0.055854156613349915 +Epoch: [80/100], Step: [400/765], Loss: 0.19749228656291962 +Epoch: [80/100], Step: [500/765], Loss: 0.1141081154346466 +Epoch: [80/100], Step: [600/765], Loss: 0.11627497524023056 +Epoch: [80/100], Step: [700/765], Loss: 0.2803669571876526 +Validation: Epoch: [80/100], mean Loss: 0.09674070030450821, last loss:0.08326306939125061 +Epoch: [81/100], Step: [100/765], Loss: 0.2542411983013153 +Epoch: [81/100], Step: [200/765], Loss: 0.08705952018499374 +Epoch: [81/100], Step: [300/765], Loss: 0.10538949817419052 +Epoch: [81/100], Step: [400/765], Loss: 0.13256052136421204 +Epoch: [81/100], Step: [500/765], Loss: 0.20776796340942383 +Epoch: [81/100], Step: [600/765], Loss: 0.0747111588716507 +Epoch: [81/100], Step: [700/765], Loss: 0.07517383992671967 +Validation: Epoch: [81/100], mean Loss: 0.1216144785284996, last loss:0.13517436385154724 +Epoch: [82/100], Step: [100/765], Loss: 0.09143786877393723 +Epoch: [82/100], Step: [200/765], Loss: 0.06854164600372314 +Epoch: [82/100], Step: [300/765], Loss: 0.12391620874404907 +Epoch: [82/100], Step: [400/765], Loss: 0.08865931630134583 +Epoch: [82/100], Step: [500/765], Loss: 0.09166716784238815 +Epoch: [82/100], Step: [600/765], Loss: 0.14046363532543182 +Epoch: [82/100], Step: [700/765], Loss: 0.1164189875125885 +Validation: Epoch: [82/100], mean Loss: 0.10969658941030502, last loss:0.08527138084173203 +Epoch: [83/100], Step: [100/765], Loss: 0.05310317873954773 +Epoch: [83/100], Step: [200/765], Loss: 0.22490720450878143 +Epoch: [83/100], Step: [300/765], Loss: 0.14784637093544006 +Epoch: [83/100], Step: [400/765], Loss: 0.06215383857488632 +Epoch: [83/100], Step: [500/765], Loss: 0.10694357752799988 +Epoch: [83/100], Step: [600/765], Loss: 0.09159786999225616 +Epoch: [83/100], Step: [700/765], Loss: 0.13849613070487976 +Validation: Epoch: [83/100], mean Loss: 0.12074931710958481, last loss:0.1393211930990219 +Epoch: [84/100], Step: [100/765], Loss: 0.13642537593841553 +Epoch: [84/100], Step: [200/765], Loss: 0.08714057505130768 +Epoch: [84/100], Step: [300/765], Loss: 0.11142855882644653 +Epoch: [84/100], Step: [400/765], Loss: 0.087680384516716 +Epoch: [84/100], Step: [500/765], Loss: 0.09456121176481247 +Epoch: [84/100], Step: [600/765], Loss: 0.05435081943869591 +Epoch: [84/100], Step: [700/765], Loss: 0.16280969977378845 +Validation: Epoch: [84/100], mean Loss: 0.12228850275278091, last loss:0.12149839103221893 +Epoch: [85/100], Step: [100/765], Loss: 0.05246803164482117 +Epoch: [85/100], Step: [200/765], Loss: 0.18290144205093384 +Epoch: [85/100], Step: [300/765], Loss: 0.09457159042358398 +Epoch: [85/100], Step: [400/765], Loss: 0.14198994636535645 +Epoch: [85/100], Step: [500/765], Loss: 0.14530079066753387 +Epoch: [85/100], Step: [600/765], Loss: 0.11891629546880722 +Epoch: [85/100], Step: [700/765], Loss: 0.058768924325704575 +Validation: Epoch: [85/100], mean Loss: 0.1178290918469429, last loss:0.11705508083105087 +Epoch: [86/100], Step: [100/765], Loss: 0.07757514715194702 +Epoch: [86/100], Step: [200/765], Loss: 0.0764768123626709 +Epoch: [86/100], Step: [300/765], Loss: 0.19971339404582977 +Epoch: [86/100], Step: [400/765], Loss: 0.06868419051170349 +Epoch: [86/100], Step: [500/765], Loss: 0.160315603017807 +Epoch: [86/100], Step: [600/765], Loss: 0.0886324867606163 +Epoch: [86/100], Step: [700/765], Loss: 0.1134946346282959 +Validation: Epoch: [86/100], mean Loss: 0.12666353583335876, last loss:0.12040694057941437 +Epoch: [87/100], Step: [100/765], Loss: 0.10778399556875229 +Epoch: [87/100], Step: [200/765], Loss: 0.0872344821691513 +Epoch: [87/100], Step: [300/765], Loss: 0.1579453945159912 +Epoch: [87/100], Step: [400/765], Loss: 0.1396263837814331 +Epoch: [87/100], Step: [500/765], Loss: 0.0649864673614502 +Epoch: [87/100], Step: [600/765], Loss: 0.08302219212055206 +Epoch: [87/100], Step: [700/765], Loss: 0.24568913877010345 +Validation: Epoch: [87/100], mean Loss: 0.11905652284622192, last loss:0.12143512070178986 +Epoch: [88/100], Step: [100/765], Loss: 0.07583744823932648 +Epoch: [88/100], Step: [200/765], Loss: 0.06124263256788254 +Epoch: [88/100], Step: [300/765], Loss: 0.11807146668434143 +Epoch: [88/100], Step: [400/765], Loss: 0.1359959840774536 +Epoch: [88/100], Step: [500/765], Loss: 0.050197016447782516 +Epoch: [88/100], Step: [600/765], Loss: 0.08676479756832123 +Epoch: [88/100], Step: [700/765], Loss: 0.08744259923696518 +Validation: Epoch: [88/100], mean Loss: 0.11727274954319, last loss:0.10939626395702362 +Epoch: [89/100], Step: [100/765], Loss: 0.10690021514892578 +Epoch: [89/100], Step: [200/765], Loss: 0.12757200002670288 +Epoch: [89/100], Step: [300/765], Loss: 0.16191454231739044 +Epoch: [89/100], Step: [400/765], Loss: 0.06216961145401001 +Epoch: [89/100], Step: [500/765], Loss: 0.094690702855587 +Epoch: [89/100], Step: [600/765], Loss: 0.06602203845977783 +Epoch: [89/100], Step: [700/765], Loss: 0.11251065135002136 +Validation: Epoch: [89/100], mean Loss: 0.10382124036550522, last loss:0.10140933096408844 +Epoch: [90/100], Step: [100/765], Loss: 0.14550194144248962 +Epoch: [90/100], Step: [200/765], Loss: 0.0642472356557846 +Epoch: [90/100], Step: [300/765], Loss: 0.10195595026016235 +Epoch: [90/100], Step: [400/765], Loss: 0.0736350566148758 +Epoch: [90/100], Step: [500/765], Loss: 0.10654851049184799 +Epoch: [90/100], Step: [600/765], Loss: 0.09649938344955444 +Epoch: [90/100], Step: [700/765], Loss: 0.07929612696170807 +Validation: Epoch: [90/100], mean Loss: 0.07888607680797577, last loss:0.07197754085063934 +Epoch: [91/100], Step: [100/765], Loss: 0.11106118559837341 +Epoch: [91/100], Step: [200/765], Loss: 0.05186065658926964 +Epoch: [91/100], Step: [300/765], Loss: 0.08230607211589813 +Epoch: [91/100], Step: [400/765], Loss: 0.17271754145622253 +Epoch: [91/100], Step: [500/765], Loss: 0.07673592865467072 +Epoch: [91/100], Step: [600/765], Loss: 0.09813406318426132 +Epoch: [91/100], Step: [700/765], Loss: 0.09882350265979767 +Validation: Epoch: [91/100], mean Loss: 0.10001076012849808, last loss:0.08179765194654465 +Epoch: [92/100], Step: [100/765], Loss: 0.11147445440292358 +Epoch: [92/100], Step: [200/765], Loss: 0.07799531519412994 +Epoch: [92/100], Step: [300/765], Loss: 0.05958396941423416 +Epoch: [92/100], Step: [400/765], Loss: 0.1812848150730133 +Epoch: [92/100], Step: [500/765], Loss: 0.06465885043144226 +Epoch: [92/100], Step: [600/765], Loss: 0.0904385894536972 +Epoch: [92/100], Step: [700/765], Loss: 0.1456618458032608 +Validation: Epoch: [92/100], mean Loss: 0.15608000755310059, last loss:0.15422682464122772 +Epoch: [93/100], Step: [100/765], Loss: 0.09653191268444061 +Epoch: [93/100], Step: [200/765], Loss: 0.032713182270526886 +Epoch: [93/100], Step: [300/765], Loss: 0.11625679582357407 +Epoch: [93/100], Step: [400/765], Loss: 0.19771647453308105 +Epoch: [93/100], Step: [500/765], Loss: 0.11757643520832062 +Epoch: [93/100], Step: [600/765], Loss: 0.0830082967877388 +Epoch: [93/100], Step: [700/765], Loss: 0.11017176508903503 +Validation: Epoch: [93/100], mean Loss: 0.10735394060611725, last loss:0.0686795562505722 +Epoch: [94/100], Step: [100/765], Loss: 0.11074086278676987 +Epoch: [94/100], Step: [200/765], Loss: 0.1525343954563141 +Epoch: [94/100], Step: [300/765], Loss: 0.11585148423910141 +Epoch: [94/100], Step: [400/765], Loss: 0.12297835201025009 +Epoch: [94/100], Step: [500/765], Loss: 0.13271497189998627 +Epoch: [94/100], Step: [600/765], Loss: 0.0854215919971466 +Epoch: [94/100], Step: [700/765], Loss: 0.13778559863567352 +Validation: Epoch: [94/100], mean Loss: 0.07713301479816437, last loss:0.0711946189403534 +Epoch: [95/100], Step: [100/765], Loss: 0.13939595222473145 +Epoch: [95/100], Step: [200/765], Loss: 0.04201016575098038 +Epoch: [95/100], Step: [300/765], Loss: 0.16829484701156616 +Epoch: [95/100], Step: [400/765], Loss: 0.11708523333072662 +Epoch: [95/100], Step: [500/765], Loss: 0.05578112602233887 +Epoch: [95/100], Step: [600/765], Loss: 0.1562526971101761 +Epoch: [95/100], Step: [700/765], Loss: 0.08847680687904358 +Validation: Epoch: [95/100], mean Loss: 0.10615690052509308, last loss:0.10471656918525696 +Epoch: [96/100], Step: [100/765], Loss: 0.06216740608215332 +Epoch: [96/100], Step: [200/765], Loss: 0.06713038682937622 +Epoch: [96/100], Step: [300/765], Loss: 0.14728215336799622 +Epoch: [96/100], Step: [400/765], Loss: 0.16061930358409882 +Epoch: [96/100], Step: [500/765], Loss: 0.13722315430641174 +Epoch: [96/100], Step: [600/765], Loss: 0.08510753512382507 +Epoch: [96/100], Step: [700/765], Loss: 0.08663937449455261 +Validation: Epoch: [96/100], mean Loss: 0.12624365091323853, last loss:0.13069969415664673 +Epoch: [97/100], Step: [100/765], Loss: 0.10652472823858261 +Epoch: [97/100], Step: [200/765], Loss: 0.1375863254070282 +Epoch: [97/100], Step: [300/765], Loss: 0.08392578363418579 +Epoch: [97/100], Step: [400/765], Loss: 0.24885737895965576 +Epoch: [97/100], Step: [500/765], Loss: 0.10371487587690353 +Epoch: [97/100], Step: [600/765], Loss: 0.05840006470680237 +Epoch: [97/100], Step: [700/765], Loss: 0.0952949970960617 +Validation: Epoch: [97/100], mean Loss: 0.08116421848535538, last loss:0.05864933133125305 +Epoch: [98/100], Step: [100/765], Loss: 0.10203759372234344 +Epoch: [98/100], Step: [200/765], Loss: 0.09244802594184875 +Epoch: [98/100], Step: [300/765], Loss: 0.06953809410333633 +Epoch: [98/100], Step: [400/765], Loss: 0.060547780245542526 +Epoch: [98/100], Step: [500/765], Loss: 0.10544275492429733 +Epoch: [98/100], Step: [600/765], Loss: 0.07897984981536865 +Epoch: [98/100], Step: [700/765], Loss: 0.06789661943912506 +Validation: Epoch: [98/100], mean Loss: 0.11457088589668274, last loss:0.10534840822219849 +Epoch: [99/100], Step: [100/765], Loss: 0.10516878962516785 +Epoch: [99/100], Step: [200/765], Loss: 0.06588511914014816 +Epoch: [99/100], Step: [300/765], Loss: 0.12685775756835938 +Epoch: [99/100], Step: [400/765], Loss: 0.08039574325084686 +Epoch: [99/100], Step: [500/765], Loss: 0.054230883717536926 +Epoch: [99/100], Step: [600/765], Loss: 0.09978027641773224 +Epoch: [99/100], Step: [700/765], Loss: 0.080007404088974 +Validation: Epoch: [99/100], mean Loss: 0.12534382939338684, last loss:0.15592139959335327 +Epoch: [100/100], Step: [100/765], Loss: 0.11683684587478638 +Epoch: [100/100], Step: [200/765], Loss: 0.15306174755096436 +Epoch: [100/100], Step: [300/765], Loss: 0.11062370240688324 +Epoch: [100/100], Step: [400/765], Loss: 0.12463720142841339 +Epoch: [100/100], Step: [500/765], Loss: 0.1376001238822937 +Epoch: [100/100], Step: [600/765], Loss: 0.09301471710205078 +Epoch: [100/100], Step: [700/765], Loss: 0.08624684810638428 +Validation: Epoch: [100/100], mean Loss: 0.08037856966257095, last loss:0.07347236573696136 +2021-08-11 21:22:55.079030: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0 +Loaded pretrained weights for efficientnet-b0 +765 85 +Epoch: [1/100], Step: [100/765], Loss: 57.126258850097656 +Epoch: [1/100], Step: [200/765], Loss: 38.202823638916016 +Epoch: [1/100], Step: [300/765], Loss: 9.994173049926758 +Epoch: [1/100], Step: [400/765], Loss: 5.27348518371582 +Epoch: [1/100], Step: [500/765], Loss: 5.477262020111084 +Epoch: [1/100], Step: [600/765], Loss: 18.74931526184082 +Epoch: [1/100], Step: [700/765], Loss: 7.867389678955078 +Validation: Epoch: [1/100], mean Loss: 2.4025418758392334, last loss:0.7286696434020996 +Epoch: [2/100], Step: [100/765], Loss: 5.497369289398193 +Epoch: [2/100], Step: [200/765], Loss: 1.2253780364990234 +Epoch: [2/100], Step: [300/765], Loss: 10.457501411437988 +Epoch: [2/100], Step: [400/765], Loss: 4.302528381347656 +Epoch: [2/100], Step: [500/765], Loss: 3.344954252243042 +Epoch: [2/100], Step: [600/765], Loss: 4.191400051116943 +Epoch: [2/100], Step: [700/765], Loss: 3.592055082321167 +Validation: Epoch: [2/100], mean Loss: 3.1198439598083496, last loss:1.6438802480697632 +Epoch: [3/100], Step: [100/765], Loss: 2.9892725944519043 +Epoch: [3/100], Step: [200/765], Loss: 3.1985929012298584 +Epoch: [3/100], Step: [300/765], Loss: 2.943232297897339 +Epoch: [3/100], Step: [400/765], Loss: 3.459528923034668 +Epoch: [3/100], Step: [500/765], Loss: 2.852768659591675 +Epoch: [3/100], Step: [600/765], Loss: 3.1307532787323 +Epoch: [3/100], Step: [700/765], Loss: 4.726324081420898 +Validation: Epoch: [3/100], mean Loss: 1.76148521900177, last loss:1.0484541654586792 +Epoch: [4/100], Step: [100/765], Loss: 8.179502487182617 +Epoch: [4/100], Step: [200/765], Loss: 2.419992685317993 +Epoch: [4/100], Step: [300/765], Loss: 6.800739288330078 +Epoch: [4/100], Step: [400/765], Loss: 4.427135467529297 +Epoch: [4/100], Step: [500/765], Loss: 2.1009230613708496 +Epoch: [4/100], Step: [600/765], Loss: 1.8491171598434448 +Epoch: [4/100], Step: [700/765], Loss: 3.826819896697998 +Validation: Epoch: [4/100], mean Loss: 5.049354076385498, last loss:0.9308872222900391 +Epoch: [5/100], Step: [100/765], Loss: 3.375749111175537 +Epoch: [5/100], Step: [200/765], Loss: 1.0401582717895508 +Epoch: [5/100], Step: [300/765], Loss: 1.1093971729278564 +Epoch: [5/100], Step: [400/765], Loss: 14.077853202819824 +Epoch: [5/100], Step: [500/765], Loss: 2.582895517349243 +Epoch: [5/100], Step: [600/765], Loss: 0.9853134155273438 +Epoch: [5/100], Step: [700/765], Loss: 0.9572538733482361 +Validation: Epoch: [5/100], mean Loss: 3.768984794616699, last loss:0.526140570640564 +Epoch: [6/100], Step: [100/765], Loss: 2.0677285194396973 +Epoch: [6/100], Step: [200/765], Loss: 1.191239833831787 +Epoch: [6/100], Step: [300/765], Loss: 2.7815351486206055 +Epoch: [6/100], Step: [400/765], Loss: 2.059844493865967 +Epoch: [6/100], Step: [500/765], Loss: 2.0278210639953613 +Epoch: [6/100], Step: [600/765], Loss: 1.1903437376022339 +Epoch: [6/100], Step: [700/765], Loss: 0.8897848129272461 +Validation: Epoch: [6/100], mean Loss: 2.3343653678894043, last loss:0.6461732387542725 +Epoch: [7/100], Step: [100/765], Loss: 0.9482321739196777 +Epoch: [7/100], Step: [200/765], Loss: 0.946497917175293 +Epoch: [7/100], Step: [300/765], Loss: 1.5701463222503662 +Epoch: [7/100], Step: [400/765], Loss: 1.2989853620529175 +Epoch: [7/100], Step: [500/765], Loss: 0.6631547212600708 +Epoch: [7/100], Step: [600/765], Loss: 3.9874656200408936 +Epoch: [7/100], Step: [700/765], Loss: 0.8121399879455566 +Validation: Epoch: [7/100], mean Loss: 2.3298230171203613, last loss:0.835584819316864 +Epoch: [8/100], Step: [100/765], Loss: 3.7591731548309326 +Epoch: [8/100], Step: [200/765], Loss: 1.340877890586853 +Epoch: [8/100], Step: [300/765], Loss: 2.706960439682007 +Epoch: [8/100], Step: [400/765], Loss: 1.3672406673431396 +Epoch: [8/100], Step: [500/765], Loss: 1.8770751953125 +Epoch: [8/100], Step: [600/765], Loss: 1.103087306022644 +Epoch: [8/100], Step: [700/765], Loss: 0.5755670070648193 +Validation: Epoch: [8/100], mean Loss: 1.9431524276733398, last loss:0.6778544187545776 +Epoch: [9/100], Step: [100/765], Loss: 0.6966270208358765 +Epoch: [9/100], Step: [200/765], Loss: 0.6137146949768066 +Epoch: [9/100], Step: [300/765], Loss: 0.7158416509628296 +Epoch: [9/100], Step: [400/765], Loss: 0.8459951281547546 +Epoch: [9/100], Step: [500/765], Loss: 0.47687992453575134 +Epoch: [9/100], Step: [600/765], Loss: 0.4263889491558075 +Epoch: [9/100], Step: [700/765], Loss: 1.2843761444091797 +Validation: Epoch: [9/100], mean Loss: 3.6533188819885254, last loss:0.7561360597610474 +Epoch: [10/100], Step: [100/765], Loss: 1.626340389251709 +Epoch: [10/100], Step: [200/765], Loss: 0.6179826259613037 +Epoch: [10/100], Step: [300/765], Loss: 1.3863747119903564 +Epoch: [10/100], Step: [400/765], Loss: 1.2281601428985596 +Epoch: [10/100], Step: [500/765], Loss: 0.6523904204368591 +Epoch: [10/100], Step: [600/765], Loss: 0.69200599193573 +Epoch: [10/100], Step: [700/765], Loss: 0.45193761587142944 +Validation: Epoch: [10/100], mean Loss: 2.96734356880188, last loss:0.984028697013855 +Epoch: [11/100], Step: [100/765], Loss: 0.4622626006603241 +Epoch: [11/100], Step: [200/765], Loss: 0.5375872850418091 +Epoch: [11/100], Step: [300/765], Loss: 2.0903730392456055 +Epoch: [11/100], Step: [400/765], Loss: 0.684119462966919 +Epoch: [11/100], Step: [500/765], Loss: 0.29954907298088074 +Epoch: [11/100], Step: [600/765], Loss: 0.8037736415863037 +Epoch: [11/100], Step: [700/765], Loss: 1.090356707572937 +Validation: Epoch: [11/100], mean Loss: 2.323442220687866, last loss:1.035894751548767 +Epoch: [12/100], Step: [100/765], Loss: 0.26882609724998474 +Epoch: [12/100], Step: [200/765], Loss: 0.7644076347351074 +Epoch: [12/100], Step: [300/765], Loss: 0.8967329859733582 +Epoch: [12/100], Step: [400/765], Loss: 1.0524027347564697 +Epoch: [12/100], Step: [500/765], Loss: 0.6591752171516418 +Epoch: [12/100], Step: [600/765], Loss: 0.6651181578636169 +Epoch: [12/100], Step: [700/765], Loss: 0.627984881401062 +Validation: Epoch: [12/100], mean Loss: 1.953729271888733, last loss:0.6062930822372437 +Epoch: [13/100], Step: [100/765], Loss: 0.980205774307251 +Epoch: [13/100], Step: [200/765], Loss: 0.8812176585197449 +Epoch: [13/100], Step: [300/765], Loss: 0.7652316093444824 +Epoch: [13/100], Step: [400/765], Loss: 0.27843281626701355 +Epoch: [13/100], Step: [500/765], Loss: 1.9271496534347534 +Epoch: [13/100], Step: [600/765], Loss: 0.5076934695243835 +Epoch: [13/100], Step: [700/765], Loss: 0.6437656283378601 +Validation: Epoch: [13/100], mean Loss: 3.179121971130371, last loss:1.4006365537643433 +Epoch: [14/100], Step: [100/765], Loss: 0.6095146536827087 +Epoch: [14/100], Step: [200/765], Loss: 0.9231213331222534 +Epoch: [14/100], Step: [300/765], Loss: 0.41068077087402344 +Epoch: [14/100], Step: [400/765], Loss: 0.4132953882217407 +Epoch: [14/100], Step: [500/765], Loss: 0.665778636932373 +Epoch: [14/100], Step: [600/765], Loss: 0.6701816916465759 +Epoch: [14/100], Step: [700/765], Loss: 0.7748904228210449 +Validation: Epoch: [14/100], mean Loss: 2.3788251876831055, last loss:0.31337419152259827 +Epoch: [15/100], Step: [100/765], Loss: 0.2753020226955414 +Epoch: [15/100], Step: [200/765], Loss: 0.5508790612220764 +Epoch: [15/100], Step: [300/765], Loss: 0.4862818717956543 +Epoch: [15/100], Step: [400/765], Loss: 0.508979082107544 +Epoch: [15/100], Step: [500/765], Loss: 0.44939303398132324 +Epoch: [15/100], Step: [600/765], Loss: 0.33222198486328125 +Epoch: [15/100], Step: [700/765], Loss: 0.2814435362815857 +Validation: Epoch: [15/100], mean Loss: 2.8485045433044434, last loss:0.5810970067977905 +Epoch: [16/100], Step: [100/765], Loss: 0.5417315363883972 +Epoch: [16/100], Step: [200/765], Loss: 0.3513079583644867 +Epoch: [16/100], Step: [300/765], Loss: 0.5191749334335327 +Epoch: [16/100], Step: [400/765], Loss: 0.30920669436454773 +Epoch: [16/100], Step: [500/765], Loss: 0.7550773024559021 +Epoch: [16/100], Step: [600/765], Loss: 0.8893465399742126 +Epoch: [16/100], Step: [700/765], Loss: 0.9764318466186523 +Validation: Epoch: [16/100], mean Loss: 2.2170584201812744, last loss:1.1085360050201416 +Epoch: [17/100], Step: [100/765], Loss: 0.3898353576660156 +Epoch: [17/100], Step: [200/765], Loss: 0.2914350926876068 +Epoch: [17/100], Step: [300/765], Loss: 0.32557862997055054 +Epoch: [17/100], Step: [400/765], Loss: 0.39529848098754883 +Epoch: [17/100], Step: [500/765], Loss: 0.873837411403656 +Epoch: [17/100], Step: [600/765], Loss: 0.33417803049087524 +Epoch: [17/100], Step: [700/765], Loss: 0.5192363262176514 +Validation: Epoch: [17/100], mean Loss: 3.0023980140686035, last loss:2.390291929244995 +Epoch: [18/100], Step: [100/765], Loss: 0.5647857189178467 +Epoch: [18/100], Step: [200/765], Loss: 0.3914584517478943 +Epoch: [18/100], Step: [300/765], Loss: 0.7534393668174744 +Epoch: [18/100], Step: [400/765], Loss: 0.2846483588218689 +Epoch: [18/100], Step: [500/765], Loss: 0.43349799513816833 +Epoch: [18/100], Step: [600/765], Loss: 0.7909368276596069 +Epoch: [18/100], Step: [700/765], Loss: 0.35376355051994324 +Validation: Epoch: [18/100], mean Loss: 1.8307491540908813, last loss:0.8183104395866394 +Epoch: [19/100], Step: [100/765], Loss: 0.36609625816345215 +Epoch: [19/100], Step: [200/765], Loss: 0.3593735098838806 +Epoch: [19/100], Step: [300/765], Loss: 0.6092194318771362 +Epoch: [19/100], Step: [400/765], Loss: 0.2958763837814331 +Epoch: [19/100], Step: [500/765], Loss: 0.35032758116722107 +Epoch: [19/100], Step: [600/765], Loss: 0.456085205078125 +Epoch: [19/100], Step: [700/765], Loss: 0.7036725282669067 +Validation: Epoch: [19/100], mean Loss: 2.6007280349731445, last loss:0.6196508407592773 +Epoch: [20/100], Step: [100/765], Loss: 0.540203332901001 +Epoch: [20/100], Step: [200/765], Loss: 0.21626798808574677 +Epoch: [20/100], Step: [300/765], Loss: 0.2880098521709442 +Epoch: [20/100], Step: [400/765], Loss: 0.5275086164474487 +Epoch: [20/100], Step: [500/765], Loss: 1.2723077535629272 +Epoch: [20/100], Step: [600/765], Loss: 0.3078019618988037 +Epoch: [20/100], Step: [700/765], Loss: 1.0449402332305908 +Validation: Epoch: [20/100], mean Loss: 2.080763101577759, last loss:0.7015867233276367 +Epoch: [21/100], Step: [100/765], Loss: 0.4434353709220886 +Epoch: [21/100], Step: [200/765], Loss: 0.6386834979057312 +Epoch: [21/100], Step: [300/765], Loss: 0.23046550154685974 +Epoch: [21/100], Step: [400/765], Loss: 0.3063114881515503 +Epoch: [21/100], Step: [500/765], Loss: 0.32221025228500366 +Epoch: [21/100], Step: [600/765], Loss: 0.47410672903060913 +Epoch: [21/100], Step: [700/765], Loss: 0.2794498801231384 +Validation: Epoch: [21/100], mean Loss: 1.9369888305664062, last loss:1.4832961559295654 +Epoch: [22/100], Step: [100/765], Loss: 0.6427453756332397 +Epoch: [22/100], Step: [200/765], Loss: 0.9008795619010925 +Epoch: [22/100], Step: [300/765], Loss: 0.31841713190078735 +Epoch: [22/100], Step: [400/765], Loss: 0.18121318519115448 +Epoch: [22/100], Step: [500/765], Loss: 0.21434065699577332 +Epoch: [22/100], Step: [600/765], Loss: 0.271820068359375 +Epoch: [22/100], Step: [700/765], Loss: 0.3796656131744385 +Validation: Epoch: [22/100], mean Loss: 2.2545688152313232, last loss:1.0273280143737793 +Epoch: [23/100], Step: [100/765], Loss: 0.25104254484176636 +Epoch: [23/100], Step: [200/765], Loss: 0.489356130361557 +Epoch: [23/100], Step: [300/765], Loss: 0.21424570679664612 +Epoch: [23/100], Step: [400/765], Loss: 0.5408124327659607 +Epoch: [23/100], Step: [500/765], Loss: 0.4019443988800049 +Epoch: [23/100], Step: [600/765], Loss: 0.49430400133132935 +Epoch: [23/100], Step: [700/765], Loss: 0.2755703926086426 +Validation: Epoch: [23/100], mean Loss: 2.059144973754883, last loss:1.7303571701049805 +Epoch: [24/100], Step: [100/765], Loss: 0.14742380380630493 +Epoch: [24/100], Step: [200/765], Loss: 0.3333704471588135 +Epoch: [24/100], Step: [300/765], Loss: 0.4068394601345062 +Epoch: [24/100], Step: [400/765], Loss: 0.2112402766942978 +Epoch: [24/100], Step: [500/765], Loss: 0.4564664363861084 +Epoch: [24/100], Step: [600/765], Loss: 0.31460869312286377 +Epoch: [24/100], Step: [700/765], Loss: 0.19984070956707 +Validation: Epoch: [24/100], mean Loss: 3.2624752521514893, last loss:2.4465625286102295 +Epoch: [25/100], Step: [100/765], Loss: 0.8833892345428467 +Epoch: [25/100], Step: [200/765], Loss: 0.3312292695045471 +Epoch: [25/100], Step: [300/765], Loss: 1.8963913917541504 +Epoch: [25/100], Step: [400/765], Loss: 0.3663463592529297 +Epoch: [25/100], Step: [500/765], Loss: 0.49538683891296387 +Epoch: [25/100], Step: [600/765], Loss: 0.35730451345443726 +Epoch: [25/100], Step: [700/765], Loss: 0.12531930208206177 +Validation: Epoch: [25/100], mean Loss: 2.379422187805176, last loss:1.3649191856384277 +Epoch: [26/100], Step: [100/765], Loss: 0.6084040403366089 +Epoch: [26/100], Step: [200/765], Loss: 0.4607486128807068 +Epoch: [26/100], Step: [300/765], Loss: 0.2810348570346832 +Epoch: [26/100], Step: [400/765], Loss: 0.5160669684410095 +Epoch: [26/100], Step: [500/765], Loss: 0.18943536281585693 +Epoch: [26/100], Step: [600/765], Loss: 0.12603619694709778 +Epoch: [26/100], Step: [700/765], Loss: 0.29913732409477234 +Validation: Epoch: [26/100], mean Loss: 2.036362648010254, last loss:0.44275912642478943 +Epoch: [27/100], Step: [100/765], Loss: 0.15032221376895905 +Epoch: [27/100], Step: [200/765], Loss: 0.22186248004436493 +Epoch: [27/100], Step: [300/765], Loss: 0.5342848300933838 +Epoch: [27/100], Step: [400/765], Loss: 0.22191280126571655 +Epoch: [27/100], Step: [500/765], Loss: 0.16522930562496185 +Epoch: [27/100], Step: [600/765], Loss: 0.32649141550064087 +Epoch: [27/100], Step: [700/765], Loss: 0.2406662106513977 +Validation: Epoch: [27/100], mean Loss: 2.021305799484253, last loss:0.6561492085456848 +Epoch: [28/100], Step: [100/765], Loss: 0.6915637254714966 +Epoch: [28/100], Step: [200/765], Loss: 0.20997826755046844 +Epoch: [28/100], Step: [300/765], Loss: 0.4206032454967499 +Epoch: [28/100], Step: [400/765], Loss: 0.16200940310955048 +Epoch: [28/100], Step: [500/765], Loss: 0.21473900973796844 +Epoch: [28/100], Step: [600/765], Loss: 0.2563472390174866 +Epoch: [28/100], Step: [700/765], Loss: 0.3447326123714447 +Validation: Epoch: [28/100], mean Loss: 2.544605255126953, last loss:1.8822330236434937 +Epoch: [29/100], Step: [100/765], Loss: 0.21561121940612793 +Epoch: [29/100], Step: [200/765], Loss: 0.3797362744808197 +Epoch: [29/100], Step: [300/765], Loss: 0.17255961894989014 +Epoch: [29/100], Step: [400/765], Loss: 0.3778114318847656 +Epoch: [29/100], Step: [500/765], Loss: 0.4054988622665405 +Epoch: [29/100], Step: [600/765], Loss: 0.1720028817653656 +Epoch: [29/100], Step: [700/765], Loss: 0.2373574674129486 +Validation: Epoch: [29/100], mean Loss: 2.26981258392334, last loss:0.836351752281189 +Epoch: [30/100], Step: [100/765], Loss: 0.49261724948883057 +Epoch: [30/100], Step: [200/765], Loss: 0.19742107391357422 +Epoch: [30/100], Step: [300/765], Loss: 0.1327424943447113 +Epoch: [30/100], Step: [400/765], Loss: 0.32189708948135376 +Epoch: [30/100], Step: [500/765], Loss: 0.27890491485595703 +Epoch: [30/100], Step: [600/765], Loss: 0.17557847499847412 +Epoch: [30/100], Step: [700/765], Loss: 0.1864711046218872 +Validation: Epoch: [30/100], mean Loss: 3.7048609256744385, last loss:1.2717097997665405 +Epoch: [31/100], Step: [100/765], Loss: 0.2191067636013031 +Epoch: [31/100], Step: [200/765], Loss: 0.07929398119449615 +Epoch: [31/100], Step: [300/765], Loss: 0.2609921097755432 +Epoch: [31/100], Step: [400/765], Loss: 0.16427552700042725 +Epoch: [31/100], Step: [500/765], Loss: 0.30140429735183716 +Epoch: [31/100], Step: [600/765], Loss: 0.43176814913749695 +Epoch: [31/100], Step: [700/765], Loss: 0.22572225332260132 +Validation: Epoch: [31/100], mean Loss: 2.686208486557007, last loss:0.6891912817955017 +Epoch: [32/100], Step: [100/765], Loss: 0.22440898418426514 +Epoch: [32/100], Step: [200/765], Loss: 0.19633594155311584 +Epoch: [32/100], Step: [300/765], Loss: 0.4306756854057312 +Epoch: [32/100], Step: [400/765], Loss: 0.16282425820827484 +Epoch: [32/100], Step: [500/765], Loss: 0.266178697347641 +Epoch: [32/100], Step: [600/765], Loss: 0.33284568786621094 +Epoch: [32/100], Step: [700/765], Loss: 0.2993277609348297 +Validation: Epoch: [32/100], mean Loss: 2.6128110885620117, last loss:1.2414287328720093 +Epoch: [33/100], Step: [100/765], Loss: 0.23951002955436707 +Epoch: [33/100], Step: [200/765], Loss: 0.34371107816696167 +Epoch: [33/100], Step: [300/765], Loss: 0.22937306761741638 +Epoch: [33/100], Step: [400/765], Loss: 0.2252805233001709 +Epoch: [33/100], Step: [500/765], Loss: 0.18153540790081024 +Epoch: [33/100], Step: [600/765], Loss: 0.3830035924911499 +Epoch: [33/100], Step: [700/765], Loss: 0.20866172015666962 +Validation: Epoch: [33/100], mean Loss: 2.843494176864624, last loss:1.200164556503296 +Epoch: [34/100], Step: [100/765], Loss: 0.1643650084733963 +Epoch: [34/100], Step: [200/765], Loss: 0.2482832372188568 +Epoch: [34/100], Step: [300/765], Loss: 0.3097509741783142 +Epoch: [34/100], Step: [400/765], Loss: 0.2982741892337799 +Epoch: [34/100], Step: [500/765], Loss: 0.45299670100212097 +Epoch: [34/100], Step: [600/765], Loss: 0.2736850678920746 +Epoch: [34/100], Step: [700/765], Loss: 0.13676027953624725 +Validation: Epoch: [34/100], mean Loss: 1.7654814720153809, last loss:0.5291514992713928 +Epoch: [35/100], Step: [100/765], Loss: 0.27112215757369995 +Epoch: [35/100], Step: [200/765], Loss: 0.21322780847549438 +Epoch: [35/100], Step: [300/765], Loss: 0.28303366899490356 +Epoch: [35/100], Step: [400/765], Loss: 0.29834309220314026 +Epoch: [35/100], Step: [500/765], Loss: 0.1416502296924591 +Epoch: [35/100], Step: [600/765], Loss: 0.2844630479812622 +Epoch: [35/100], Step: [700/765], Loss: 0.11743517965078354 +Validation: Epoch: [35/100], mean Loss: 3.101466655731201, last loss:2.510406732559204 +Epoch: [36/100], Step: [100/765], Loss: 0.21514950692653656 +Epoch: [36/100], Step: [200/765], Loss: 0.1343385875225067 +Epoch: [36/100], Step: [300/765], Loss: 0.20979464054107666 +Epoch: [36/100], Step: [400/765], Loss: 0.06313415616750717 +Epoch: [36/100], Step: [500/765], Loss: 0.09740392863750458 +Epoch: [36/100], Step: [600/765], Loss: 0.5955917835235596 +Epoch: [36/100], Step: [700/765], Loss: 0.30447953939437866 +Validation: Epoch: [36/100], mean Loss: 2.410388708114624, last loss:1.315385103225708 +Epoch: [37/100], Step: [100/765], Loss: 0.13950984179973602 +Epoch: [37/100], Step: [200/765], Loss: 0.09530007839202881 +Epoch: [37/100], Step: [300/765], Loss: 0.26934629678726196 +Epoch: [37/100], Step: [400/765], Loss: 0.12251031398773193 +Epoch: [37/100], Step: [500/765], Loss: 0.2338692843914032 +Epoch: [37/100], Step: [600/765], Loss: 0.21356038749217987 +Epoch: [37/100], Step: [700/765], Loss: 0.17086845636367798 +Validation: Epoch: [37/100], mean Loss: 2.7291154861450195, last loss:1.6685822010040283 +Epoch: [38/100], Step: [100/765], Loss: 0.18441884219646454 +Epoch: [38/100], Step: [200/765], Loss: 0.27885037660598755 +Epoch: [38/100], Step: [300/765], Loss: 0.19139525294303894 +Epoch: [38/100], Step: [400/765], Loss: 0.16252081096172333 +Epoch: [38/100], Step: [500/765], Loss: 0.12672558426856995 +Epoch: [38/100], Step: [600/765], Loss: 0.11853691190481186 +Epoch: [38/100], Step: [700/765], Loss: 0.16074976325035095 +Validation: Epoch: [38/100], mean Loss: 2.8626153469085693, last loss:1.1747267246246338 +Epoch: [39/100], Step: [100/765], Loss: 0.4550184905529022 +Epoch: [39/100], Step: [200/765], Loss: 0.2097814977169037 +Epoch: [39/100], Step: [300/765], Loss: 0.21012675762176514 +Epoch: [39/100], Step: [400/765], Loss: 0.08400557935237885 +Epoch: [39/100], Step: [500/765], Loss: 0.08674998581409454 +Epoch: [39/100], Step: [600/765], Loss: 0.3390964865684509 +Epoch: [39/100], Step: [700/765], Loss: 0.1297948807477951 +Validation: Epoch: [39/100], mean Loss: 2.833256483078003, last loss:1.6016733646392822 +Epoch: [40/100], Step: [100/765], Loss: 0.22458790242671967 +Epoch: [40/100], Step: [200/765], Loss: 0.137704998254776 +Epoch: [40/100], Step: [300/765], Loss: 0.1446639597415924 +Epoch: [40/100], Step: [400/765], Loss: 0.21175000071525574 +Epoch: [40/100], Step: [500/765], Loss: 0.12243212759494781 +Epoch: [40/100], Step: [600/765], Loss: 0.3681902289390564 +Epoch: [40/100], Step: [700/765], Loss: 0.3222312927246094 +Validation: Epoch: [40/100], mean Loss: 3.1811556816101074, last loss:2.0825607776641846 +Epoch: [41/100], Step: [100/765], Loss: 0.14966632425785065 +Epoch: [41/100], Step: [200/765], Loss: 0.15112391114234924 +Epoch: [41/100], Step: [300/765], Loss: 0.3141671121120453 +Epoch: [41/100], Step: [400/765], Loss: 0.13189584016799927 +Epoch: [41/100], Step: [500/765], Loss: 0.12222979962825775 +Epoch: [41/100], Step: [600/765], Loss: 0.24714335799217224 +Epoch: [41/100], Step: [700/765], Loss: 0.2392137497663498 +Validation: Epoch: [41/100], mean Loss: 2.7267158031463623, last loss:1.002498984336853 +Epoch: [42/100], Step: [100/765], Loss: 0.25097233057022095 +Epoch: [42/100], Step: [200/765], Loss: 0.06826522201299667 +Epoch: [42/100], Step: [300/765], Loss: 0.304830938577652 +Epoch: [42/100], Step: [400/765], Loss: 0.3000063896179199 +Epoch: [42/100], Step: [500/765], Loss: 0.10767875611782074 +Epoch: [42/100], Step: [600/765], Loss: 0.1506880223751068 +Epoch: [42/100], Step: [700/765], Loss: 0.15773418545722961 +Validation: Epoch: [42/100], mean Loss: 3.9686074256896973, last loss:3.086477756500244 +Epoch: [43/100], Step: [100/765], Loss: 0.1818387508392334 +Epoch: [43/100], Step: [200/765], Loss: 0.33257874846458435 +Epoch: [43/100], Step: [300/765], Loss: 0.13960978388786316 +Epoch: [43/100], Step: [400/765], Loss: 0.310133159160614 +Epoch: [43/100], Step: [500/765], Loss: 0.1907523274421692 +Epoch: [43/100], Step: [600/765], Loss: 0.2368571013212204 +Epoch: [43/100], Step: [700/765], Loss: 0.5246813297271729 +Validation: Epoch: [43/100], mean Loss: 2.4991581439971924, last loss:0.8575297594070435 +Epoch: [44/100], Step: [100/765], Loss: 0.1631651520729065 +Epoch: [44/100], Step: [200/765], Loss: 0.1968817114830017 +Epoch: [44/100], Step: [300/765], Loss: 0.43529248237609863 +Epoch: [44/100], Step: [400/765], Loss: 0.0888633131980896 +Epoch: [44/100], Step: [500/765], Loss: 0.2089322805404663 +Epoch: [44/100], Step: [600/765], Loss: 0.14570073783397675 +Epoch: [44/100], Step: [700/765], Loss: 0.1547977477312088 +Validation: Epoch: [44/100], mean Loss: 2.6544675827026367, last loss:1.138974666595459 +Epoch: [45/100], Step: [100/765], Loss: 0.12281616777181625 +Epoch: [45/100], Step: [200/765], Loss: 0.2216833531856537 +Epoch: [45/100], Step: [300/765], Loss: 0.13465513288974762 +Epoch: [45/100], Step: [400/765], Loss: 0.1711941957473755 +Epoch: [45/100], Step: [500/765], Loss: 0.29903510212898254 +Epoch: [45/100], Step: [600/765], Loss: 0.1609949767589569 +Epoch: [45/100], Step: [700/765], Loss: 0.15050455927848816 +Validation: Epoch: [45/100], mean Loss: 2.9819819927215576, last loss:0.791047215461731 +Epoch: [46/100], Step: [100/765], Loss: 0.4379694163799286 +Epoch: [46/100], Step: [200/765], Loss: 0.1195785254240036 +Epoch: [46/100], Step: [300/765], Loss: 0.22923117876052856 +Epoch: [46/100], Step: [400/765], Loss: 0.170344278216362 +Epoch: [46/100], Step: [500/765], Loss: 0.12478446960449219 +Epoch: [46/100], Step: [600/765], Loss: 0.10418513417243958 +Epoch: [46/100], Step: [700/765], Loss: 0.08328568190336227 +Validation: Epoch: [46/100], mean Loss: 3.775967597961426, last loss:2.5503814220428467 +Epoch: [47/100], Step: [100/765], Loss: 0.22266578674316406 +Epoch: [47/100], Step: [200/765], Loss: 0.11100544780492783 +Epoch: [47/100], Step: [300/765], Loss: 0.1974414885044098 +Epoch: [47/100], Step: [400/765], Loss: 0.17148420214653015 +Epoch: [47/100], Step: [500/765], Loss: 0.15338076651096344 +Epoch: [47/100], Step: [600/765], Loss: 0.45537030696868896 +Epoch: [47/100], Step: [700/765], Loss: 0.1570524275302887 +Validation: Epoch: [47/100], mean Loss: 2.899880886077881, last loss:1.0672286748886108 +Epoch: [48/100], Step: [100/765], Loss: 0.19265757501125336 +Epoch: [48/100], Step: [200/765], Loss: 0.15395289659500122 +Epoch: [48/100], Step: [300/765], Loss: 0.15619534254074097 +Epoch: [48/100], Step: [400/765], Loss: 0.13301241397857666 +Epoch: [48/100], Step: [500/765], Loss: 0.18557648360729218 +Epoch: [48/100], Step: [600/765], Loss: 0.17667818069458008 +Epoch: [48/100], Step: [700/765], Loss: 0.06622689217329025 +Validation: Epoch: [48/100], mean Loss: 3.268343210220337, last loss:0.6740384101867676 +Epoch: [49/100], Step: [100/765], Loss: 0.23705777525901794 +Epoch: [49/100], Step: [200/765], Loss: 0.11454944312572479 +Epoch: [49/100], Step: [300/765], Loss: 0.17245785892009735 +Epoch: [49/100], Step: [400/765], Loss: 0.1439792960882187 +Epoch: [49/100], Step: [500/765], Loss: 0.1663881540298462 +Epoch: [49/100], Step: [600/765], Loss: 0.1627761423587799 +Epoch: [49/100], Step: [700/765], Loss: 0.18221162259578705 +Validation: Epoch: [49/100], mean Loss: 2.306713104248047, last loss:0.649262011051178 +Epoch: [50/100], Step: [100/765], Loss: 0.2616959810256958 +Epoch: [50/100], Step: [200/765], Loss: 0.1318390965461731 +Epoch: [50/100], Step: [300/765], Loss: 0.21549329161643982 +Epoch: [50/100], Step: [400/765], Loss: 0.08813248574733734 +Epoch: [50/100], Step: [500/765], Loss: 0.11360984295606613 +Epoch: [50/100], Step: [600/765], Loss: 0.1117800697684288 +Epoch: [50/100], Step: [700/765], Loss: 0.32368600368499756 +Validation: Epoch: [50/100], mean Loss: 2.7854228019714355, last loss:0.6782724857330322 +Epoch: [51/100], Step: [100/765], Loss: 0.13622167706489563 +Epoch: [51/100], Step: [200/765], Loss: 0.3228698968887329 +Epoch: [51/100], Step: [300/765], Loss: 0.22391246259212494 +Epoch: [51/100], Step: [400/765], Loss: 0.0769127607345581 +Epoch: [51/100], Step: [500/765], Loss: 0.1424294263124466 +Epoch: [51/100], Step: [600/765], Loss: 0.1018114909529686 +Epoch: [51/100], Step: [700/765], Loss: 0.16373883187770844 +Validation: Epoch: [51/100], mean Loss: 3.2075717449188232, last loss:0.5985192060470581 +Epoch: [52/100], Step: [100/765], Loss: 0.11761495471000671 +Epoch: [52/100], Step: [200/765], Loss: 0.13300438225269318 +Epoch: [52/100], Step: [300/765], Loss: 0.1379108875989914 +Epoch: [52/100], Step: [400/765], Loss: 0.17748796939849854 +Epoch: [52/100], Step: [500/765], Loss: 0.12014001607894897 +Epoch: [52/100], Step: [600/765], Loss: 0.2388124167919159 +Epoch: [52/100], Step: [700/765], Loss: 0.12222132086753845 +Validation: Epoch: [52/100], mean Loss: 2.8112637996673584, last loss:0.5753924250602722 +Epoch: [53/100], Step: [100/765], Loss: 0.1542615294456482 +Epoch: [53/100], Step: [200/765], Loss: 0.26815012097358704 +Epoch: [53/100], Step: [300/765], Loss: 0.20652006566524506 +Epoch: [53/100], Step: [400/765], Loss: 0.2876536548137665 +Epoch: [53/100], Step: [500/765], Loss: 0.21723246574401855 +Epoch: [53/100], Step: [600/765], Loss: 0.24247416853904724 +Epoch: [53/100], Step: [700/765], Loss: 0.10971938073635101 +Validation: Epoch: [53/100], mean Loss: 2.6192617416381836, last loss:0.34896332025527954 +Epoch: [54/100], Step: [100/765], Loss: 0.21754160523414612 +Epoch: [54/100], Step: [200/765], Loss: 0.15711072087287903 +Epoch: [54/100], Step: [300/765], Loss: 0.22377625107765198 +Epoch: [54/100], Step: [400/765], Loss: 0.16314978897571564 +Epoch: [54/100], Step: [500/765], Loss: 0.12616930902004242 +Epoch: [54/100], Step: [600/765], Loss: 0.17945842444896698 +Epoch: [54/100], Step: [700/765], Loss: 0.09015603363513947 +Validation: Epoch: [54/100], mean Loss: 2.463651180267334, last loss:0.408428430557251 +Epoch: [55/100], Step: [100/765], Loss: 0.13686636090278625 +Epoch: [55/100], Step: [200/765], Loss: 0.11055479943752289 +Epoch: [55/100], Step: [300/765], Loss: 0.08525514602661133 +Epoch: [55/100], Step: [400/765], Loss: 0.1790301501750946 +Epoch: [55/100], Step: [500/765], Loss: 0.1904478371143341 +Epoch: [55/100], Step: [600/765], Loss: 0.12232944369316101 +Epoch: [55/100], Step: [700/765], Loss: 0.15883100032806396 +Validation: Epoch: [55/100], mean Loss: 2.7769877910614014, last loss:0.9339486360549927 +Epoch: [56/100], Step: [100/765], Loss: 0.20229151844978333 +Epoch: [56/100], Step: [200/765], Loss: 0.22742187976837158 +Epoch: [56/100], Step: [300/765], Loss: 0.21232633292675018 +Epoch: [56/100], Step: [400/765], Loss: 0.11839475482702255 +Epoch: [56/100], Step: [500/765], Loss: 0.08838975429534912 +Epoch: [56/100], Step: [600/765], Loss: 0.0973229929804802 +Epoch: [56/100], Step: [700/765], Loss: 0.17586210370063782 +Validation: Epoch: [56/100], mean Loss: 3.2572247982025146, last loss:1.2743957042694092 +Epoch: [57/100], Step: [100/765], Loss: 0.151019886136055 +Epoch: [57/100], Step: [200/765], Loss: 0.17203709483146667 +Epoch: [57/100], Step: [300/765], Loss: 0.11046411842107773 +Epoch: [57/100], Step: [400/765], Loss: 0.13054317235946655 +Epoch: [57/100], Step: [500/765], Loss: 0.13304637372493744 +Epoch: [57/100], Step: [600/765], Loss: 0.35788998007774353 +Epoch: [57/100], Step: [700/765], Loss: 0.1731255054473877 +Validation: Epoch: [57/100], mean Loss: 1.8558646440505981, last loss:0.4940548539161682 +Epoch: [58/100], Step: [100/765], Loss: 0.09966131299734116 +Epoch: [58/100], Step: [200/765], Loss: 0.09944066405296326 +Epoch: [58/100], Step: [300/765], Loss: 0.12092502415180206 +Epoch: [58/100], Step: [400/765], Loss: 0.16219834983348846 +Epoch: [58/100], Step: [500/765], Loss: 0.324514776468277 +Epoch: [58/100], Step: [600/765], Loss: 0.07208049297332764 +Epoch: [58/100], Step: [700/765], Loss: 0.1266586184501648 +Validation: Epoch: [58/100], mean Loss: 4.128418922424316, last loss:1.5451582670211792 +Epoch: [59/100], Step: [100/765], Loss: 0.09210479259490967 +Epoch: [59/100], Step: [200/765], Loss: 0.12420058250427246 +Epoch: [59/100], Step: [300/765], Loss: 0.18392735719680786 +Epoch: [59/100], Step: [400/765], Loss: 0.1262768805027008 +Epoch: [59/100], Step: [500/765], Loss: 0.0969448834657669 +Epoch: [59/100], Step: [600/765], Loss: 0.10077693313360214 +Epoch: [59/100], Step: [700/765], Loss: 0.1318558156490326 +Validation: Epoch: [59/100], mean Loss: 3.55552339553833, last loss:1.544987678527832 +Epoch: [60/100], Step: [100/765], Loss: 0.1557600051164627 +Epoch: [60/100], Step: [200/765], Loss: 0.15915653109550476 +Epoch: [60/100], Step: [300/765], Loss: 0.17638175189495087 +Epoch: [60/100], Step: [400/765], Loss: 0.15366312861442566 +Epoch: [60/100], Step: [500/765], Loss: 0.12791238725185394 +Epoch: [60/100], Step: [600/765], Loss: 0.19569650292396545 +Epoch: [60/100], Step: [700/765], Loss: 0.16142061352729797 +Validation: Epoch: [60/100], mean Loss: 3.069499969482422, last loss:1.3607044219970703 +Epoch: [61/100], Step: [100/765], Loss: 0.18046820163726807 +Epoch: [61/100], Step: [200/765], Loss: 0.1900326907634735 +Epoch: [61/100], Step: [300/765], Loss: 0.1324222981929779 +Epoch: [61/100], Step: [400/765], Loss: 0.2089090347290039 +Epoch: [61/100], Step: [500/765], Loss: 0.1629778891801834 +Epoch: [61/100], Step: [600/765], Loss: 0.07334485650062561 +Epoch: [61/100], Step: [700/765], Loss: 0.1919071525335312 +Validation: Epoch: [61/100], mean Loss: 3.5752413272857666, last loss:1.70587956905365 +Epoch: [62/100], Step: [100/765], Loss: 0.07978798449039459 +Epoch: [62/100], Step: [200/765], Loss: 0.14542073011398315 +Epoch: [62/100], Step: [300/765], Loss: 0.14870229363441467 +Epoch: [62/100], Step: [400/765], Loss: 0.08728092163801193 +Epoch: [62/100], Step: [500/765], Loss: 0.0630088597536087 +Epoch: [62/100], Step: [600/765], Loss: 0.1082194447517395 +Epoch: [62/100], Step: [700/765], Loss: 0.17057013511657715 +Validation: Epoch: [62/100], mean Loss: 2.9359943866729736, last loss:1.2342991828918457 +Epoch: [63/100], Step: [100/765], Loss: 0.15810146927833557 +Epoch: [63/100], Step: [200/765], Loss: 0.10286350548267365 +Epoch: [63/100], Step: [300/765], Loss: 0.10526272654533386 +Epoch: [63/100], Step: [400/765], Loss: 0.0874096155166626 +Epoch: [63/100], Step: [500/765], Loss: 0.2415567934513092 +Epoch: [63/100], Step: [600/765], Loss: 0.22739183902740479 +Epoch: [63/100], Step: [700/765], Loss: 0.19693998992443085 +Validation: Epoch: [63/100], mean Loss: 3.156247138977051, last loss:1.1786137819290161 +Epoch: [64/100], Step: [100/765], Loss: 0.07172031700611115 +Epoch: [64/100], Step: [200/765], Loss: 0.13224366307258606 +Epoch: [64/100], Step: [300/765], Loss: 0.13654951751232147 +Epoch: [64/100], Step: [400/765], Loss: 0.12858562171459198 +Epoch: [64/100], Step: [500/765], Loss: 0.07812612503767014 +Epoch: [64/100], Step: [600/765], Loss: 0.16994939744472504 +Epoch: [64/100], Step: [700/765], Loss: 0.14727264642715454 +Validation: Epoch: [64/100], mean Loss: 2.869879961013794, last loss:1.6418170928955078 +Epoch: [65/100], Step: [100/765], Loss: 0.1076551303267479 +Epoch: [65/100], Step: [200/765], Loss: 0.09514787793159485 +Epoch: [65/100], Step: [300/765], Loss: 0.20584839582443237 +Epoch: [65/100], Step: [400/765], Loss: 0.1912773847579956 +Epoch: [65/100], Step: [500/765], Loss: 0.16124549508094788 +Epoch: [65/100], Step: [600/765], Loss: 0.19750919938087463 +Epoch: [65/100], Step: [700/765], Loss: 0.1193310022354126 +Validation: Epoch: [65/100], mean Loss: 3.6710851192474365, last loss:1.8186328411102295 +Epoch: [66/100], Step: [100/765], Loss: 0.1514180302619934 +Epoch: [66/100], Step: [200/765], Loss: 0.10391700267791748 +Epoch: [66/100], Step: [300/765], Loss: 0.1138349175453186 +Epoch: [66/100], Step: [400/765], Loss: 0.0982367992401123 +Epoch: [66/100], Step: [500/765], Loss: 0.07983949035406113 +Epoch: [66/100], Step: [600/765], Loss: 0.058761369436979294 +Epoch: [66/100], Step: [700/765], Loss: 0.09343137592077255 +Validation: Epoch: [66/100], mean Loss: 2.9366796016693115, last loss:1.1612744331359863 +Epoch: [67/100], Step: [100/765], Loss: 0.08199869841337204 +Epoch: [67/100], Step: [200/765], Loss: 0.06364266574382782 +Epoch: [67/100], Step: [300/765], Loss: 0.08920669555664062 +Epoch: [67/100], Step: [400/765], Loss: 0.24151965975761414 +Epoch: [67/100], Step: [500/765], Loss: 0.13826602697372437 +Epoch: [67/100], Step: [600/765], Loss: 0.6369223594665527 +Epoch: [67/100], Step: [700/765], Loss: 0.12863746285438538 +Validation: Epoch: [67/100], mean Loss: 2.794987201690674, last loss:1.0186833143234253 +Epoch: [68/100], Step: [100/765], Loss: 0.10267797112464905 +Epoch: [68/100], Step: [200/765], Loss: 0.1155506819486618 +Epoch: [68/100], Step: [300/765], Loss: 0.2253209948539734 +Epoch: [68/100], Step: [400/765], Loss: 0.09834009408950806 +Epoch: [68/100], Step: [500/765], Loss: 0.08530538529157639 +Epoch: [68/100], Step: [600/765], Loss: 0.09293591976165771 +Epoch: [68/100], Step: [700/765], Loss: 0.27011168003082275 +Validation: Epoch: [68/100], mean Loss: 4.0457329750061035, last loss:1.515671730041504 +Epoch: [69/100], Step: [100/765], Loss: 0.11170367896556854 +Epoch: [69/100], Step: [200/765], Loss: 0.17145298421382904 +Epoch: [69/100], Step: [300/765], Loss: 0.12828347086906433 +Epoch: [69/100], Step: [400/765], Loss: 0.12530414760112762 +Epoch: [69/100], Step: [500/765], Loss: 0.10174219310283661 +Epoch: [69/100], Step: [600/765], Loss: 0.10309851169586182 +Epoch: [69/100], Step: [700/765], Loss: 0.06619143486022949 +Validation: Epoch: [69/100], mean Loss: 3.233687162399292, last loss:1.2487761974334717 +Epoch: [70/100], Step: [100/765], Loss: 0.11584021151065826 +Epoch: [70/100], Step: [200/765], Loss: 0.09159015119075775 +Epoch: [70/100], Step: [300/765], Loss: 0.11074835062026978 +Epoch: [70/100], Step: [400/765], Loss: 0.08023452013731003 +Epoch: [70/100], Step: [500/765], Loss: 0.33050647377967834 +Epoch: [70/100], Step: [600/765], Loss: 0.06790560483932495 +Epoch: [70/100], Step: [700/765], Loss: 0.13951563835144043 +Validation: Epoch: [70/100], mean Loss: 2.5584614276885986, last loss:0.9363577365875244 +Epoch: [71/100], Step: [100/765], Loss: 0.12975893914699554 +Epoch: [71/100], Step: [200/765], Loss: 0.13549479842185974 +Epoch: [71/100], Step: [300/765], Loss: 0.12588539719581604 +Epoch: [71/100], Step: [400/765], Loss: 0.22711500525474548 +Epoch: [71/100], Step: [500/765], Loss: 0.15531933307647705 +Epoch: [71/100], Step: [600/765], Loss: 0.17040523886680603 +Epoch: [71/100], Step: [700/765], Loss: 0.23994646966457367 +Validation: Epoch: [71/100], mean Loss: 3.3210527896881104, last loss:2.2967703342437744 +Epoch: [72/100], Step: [100/765], Loss: 0.22408995032310486 +Epoch: [72/100], Step: [200/765], Loss: 0.1274830400943756 +Epoch: [72/100], Step: [300/765], Loss: 0.13614574074745178 +Epoch: [72/100], Step: [400/765], Loss: 0.13616298139095306 +Epoch: [72/100], Step: [500/765], Loss: 0.12057852745056152 +Epoch: [72/100], Step: [600/765], Loss: 0.12923890352249146 +Epoch: [72/100], Step: [700/765], Loss: 0.07836519926786423 +Validation: Epoch: [72/100], mean Loss: 3.2516117095947266, last loss:1.70921790599823 +Epoch: [73/100], Step: [100/765], Loss: 0.10332024097442627 +Epoch: [73/100], Step: [200/765], Loss: 0.0815671980381012 +Epoch: [73/100], Step: [300/765], Loss: 0.24594056606292725 +Epoch: [73/100], Step: [400/765], Loss: 0.07684211432933807 +Epoch: [73/100], Step: [500/765], Loss: 0.10788264125585556 +Epoch: [73/100], Step: [600/765], Loss: 0.11058412492275238 +Epoch: [73/100], Step: [700/765], Loss: 0.1056533083319664 +Validation: Epoch: [73/100], mean Loss: 4.140107154846191, last loss:2.34759521484375 +Epoch: [74/100], Step: [100/765], Loss: 0.11003520339727402 +Epoch: [74/100], Step: [200/765], Loss: 0.1101856678724289 +Epoch: [74/100], Step: [300/765], Loss: 0.10105223953723907 +Epoch: [74/100], Step: [400/765], Loss: 0.07286164164543152 +Epoch: [74/100], Step: [500/765], Loss: 0.07065804302692413 +Epoch: [74/100], Step: [600/765], Loss: 0.15549670159816742 +Epoch: [74/100], Step: [700/765], Loss: 0.10345791280269623 +Validation: Epoch: [74/100], mean Loss: 3.2286884784698486, last loss:2.1174447536468506 +Epoch: [75/100], Step: [100/765], Loss: 0.11381234973669052 +Epoch: [75/100], Step: [200/765], Loss: 0.10315024852752686 +Epoch: [75/100], Step: [300/765], Loss: 0.10600386559963226 +Epoch: [75/100], Step: [400/765], Loss: 0.152496337890625 +Epoch: [75/100], Step: [500/765], Loss: 0.1475619524717331 +Epoch: [75/100], Step: [600/765], Loss: 0.10499917715787888 +Epoch: [75/100], Step: [700/765], Loss: 0.09950484335422516 +Validation: Epoch: [75/100], mean Loss: 3.2105045318603516, last loss:0.650496244430542 +Epoch: [76/100], Step: [100/765], Loss: 0.17213599383831024 +Epoch: [76/100], Step: [200/765], Loss: 0.16184554994106293 +Epoch: [76/100], Step: [300/765], Loss: 0.1043553575873375 +Epoch: [76/100], Step: [400/765], Loss: 0.07642920315265656 +Epoch: [76/100], Step: [500/765], Loss: 0.10694470256567001 +Epoch: [76/100], Step: [600/765], Loss: 0.11539426445960999 +Epoch: [76/100], Step: [700/765], Loss: 0.047489725053310394 +Validation: Epoch: [76/100], mean Loss: 1.614574670791626, last loss:0.31247004866600037 +Epoch: [77/100], Step: [100/765], Loss: 0.1267596334218979 +Epoch: [77/100], Step: [200/765], Loss: 0.09090617299079895 +Epoch: [77/100], Step: [300/765], Loss: 0.11771756410598755 +Epoch: [77/100], Step: [400/765], Loss: 0.163203626871109 +Epoch: [77/100], Step: [500/765], Loss: 0.2100202739238739 +Epoch: [77/100], Step: [600/765], Loss: 0.20857660472393036 +Epoch: [77/100], Step: [700/765], Loss: 0.09103240817785263 +Validation: Epoch: [77/100], mean Loss: 2.498793363571167, last loss:1.2072319984436035 +Epoch: [78/100], Step: [100/765], Loss: 0.06696365773677826 +Epoch: [78/100], Step: [200/765], Loss: 0.05126894637942314 +Epoch: [78/100], Step: [300/765], Loss: 0.09620487689971924 +Epoch: [78/100], Step: [400/765], Loss: 0.139369398355484 +Epoch: [78/100], Step: [500/765], Loss: 0.07588110864162445 +Epoch: [78/100], Step: [600/765], Loss: 0.21160000562667847 +Epoch: [78/100], Step: [700/765], Loss: 0.12435983121395111 +Validation: Epoch: [78/100], mean Loss: 2.769120931625366, last loss:0.6183798313140869 +Epoch: [79/100], Step: [100/765], Loss: 0.16089510917663574 +Epoch: [79/100], Step: [200/765], Loss: 0.1080828458070755 +Epoch: [79/100], Step: [300/765], Loss: 0.11346644163131714 +Epoch: [79/100], Step: [400/765], Loss: 0.07360606640577316 +Epoch: [79/100], Step: [500/765], Loss: 0.225216805934906 +Epoch: [79/100], Step: [600/765], Loss: 0.1031067967414856 +Epoch: [79/100], Step: [700/765], Loss: 0.1423145979642868 +Validation: Epoch: [79/100], mean Loss: 6.650424003601074, last loss:5.164020538330078 +Epoch: [80/100], Step: [100/765], Loss: 0.10562749952077866 +Epoch: [80/100], Step: [200/765], Loss: 0.13776952028274536 +Epoch: [80/100], Step: [300/765], Loss: 0.06661178916692734 +Epoch: [80/100], Step: [400/765], Loss: 0.10424407571554184 +Epoch: [80/100], Step: [500/765], Loss: 0.05861511453986168 +Epoch: [80/100], Step: [600/765], Loss: 0.10705547034740448 +Epoch: [80/100], Step: [700/765], Loss: 0.11985844373703003 +Validation: Epoch: [80/100], mean Loss: 3.595507860183716, last loss:2.407508611679077 +Epoch: [81/100], Step: [100/765], Loss: 0.11371951550245285 +Epoch: [81/100], Step: [200/765], Loss: 0.0833238959312439 +Epoch: [81/100], Step: [300/765], Loss: 0.049094997346401215 +Epoch: [81/100], Step: [400/765], Loss: 0.15762612223625183 +Epoch: [81/100], Step: [500/765], Loss: 0.07535415142774582 +Epoch: [81/100], Step: [600/765], Loss: 0.08632492274045944 +Epoch: [81/100], Step: [700/765], Loss: 0.13275477290153503 +Validation: Epoch: [81/100], mean Loss: 2.6872150897979736, last loss:1.724841833114624 +Epoch: [82/100], Step: [100/765], Loss: 0.090543232858181 +Epoch: [82/100], Step: [200/765], Loss: 0.06918288767337799 +Epoch: [82/100], Step: [300/765], Loss: 0.14901015162467957 +Epoch: [82/100], Step: [400/765], Loss: 0.08927497267723083 +Epoch: [82/100], Step: [500/765], Loss: 0.11074972152709961 +Epoch: [82/100], Step: [600/765], Loss: 0.09697529673576355 +Epoch: [82/100], Step: [700/765], Loss: 0.08328250050544739 +Validation: Epoch: [82/100], mean Loss: 3.9909191131591797, last loss:3.5000827312469482 +Epoch: [83/100], Step: [100/765], Loss: 0.1433153748512268 +Epoch: [83/100], Step: [200/765], Loss: 0.06558878719806671 +Epoch: [83/100], Step: [300/765], Loss: 0.08070793747901917 +Epoch: [83/100], Step: [400/765], Loss: 0.08549007773399353 +Epoch: [83/100], Step: [500/765], Loss: 0.10519608110189438 +Epoch: [83/100], Step: [600/765], Loss: 0.09342532604932785 +Epoch: [83/100], Step: [700/765], Loss: 0.03930706903338432 +Validation: Epoch: [83/100], mean Loss: 4.10153865814209, last loss:1.8591723442077637 +Epoch: [84/100], Step: [100/765], Loss: 0.21245460212230682 +Epoch: [84/100], Step: [200/765], Loss: 0.11082687228918076 +Epoch: [84/100], Step: [300/765], Loss: 0.10452054440975189 +Epoch: [84/100], Step: [400/765], Loss: 0.12543319165706635 +Epoch: [84/100], Step: [500/765], Loss: 0.10484500974416733 +Epoch: [84/100], Step: [600/765], Loss: 0.18227806687355042 +Epoch: [84/100], Step: [700/765], Loss: 0.05984624847769737 +Validation: Epoch: [84/100], mean Loss: 3.0734803676605225, last loss:0.7184871435165405 +Epoch: [85/100], Step: [100/765], Loss: 0.13152921199798584 +Epoch: [85/100], Step: [200/765], Loss: 0.10369189083576202 +Epoch: [85/100], Step: [300/765], Loss: 0.13960550725460052 +Epoch: [85/100], Step: [400/765], Loss: 0.1199067234992981 +Epoch: [85/100], Step: [500/765], Loss: 0.05705832690000534 +Epoch: [85/100], Step: [600/765], Loss: 0.13700063526630402 +Epoch: [85/100], Step: [700/765], Loss: 0.1310325264930725 +Validation: Epoch: [85/100], mean Loss: 2.9940638542175293, last loss:0.7363426685333252 +Epoch: [86/100], Step: [100/765], Loss: 0.17189614474773407 +Epoch: [86/100], Step: [200/765], Loss: 0.18920084834098816 +Epoch: [86/100], Step: [300/765], Loss: 0.07313309609889984 +Epoch: [86/100], Step: [400/765], Loss: 0.09457184374332428 +Epoch: [86/100], Step: [500/765], Loss: 0.1285209059715271 +Epoch: [86/100], Step: [600/765], Loss: 0.0859486311674118 +Epoch: [86/100], Step: [700/765], Loss: 0.08527982234954834 +Validation: Epoch: [86/100], mean Loss: 3.6137192249298096, last loss:1.80108642578125 +Epoch: [87/100], Step: [100/765], Loss: 0.1094503328204155 +Epoch: [87/100], Step: [200/765], Loss: 0.11129839718341827 +Epoch: [87/100], Step: [300/765], Loss: 0.12339701503515244 +Epoch: [87/100], Step: [400/765], Loss: 0.19046130776405334 +Epoch: [87/100], Step: [500/765], Loss: 0.07549241185188293 +Epoch: [87/100], Step: [600/765], Loss: 0.15762244164943695 +Epoch: [87/100], Step: [700/765], Loss: 0.14183145761489868 +Validation: Epoch: [87/100], mean Loss: 3.246918201446533, last loss:2.8592476844787598 +Epoch: [88/100], Step: [100/765], Loss: 0.1441868394613266 +Epoch: [88/100], Step: [200/765], Loss: 0.09548866748809814 +Epoch: [88/100], Step: [300/765], Loss: 0.186201274394989 +Epoch: [88/100], Step: [400/765], Loss: 0.060490354895591736 +Epoch: [88/100], Step: [500/765], Loss: 0.13057538866996765 +Epoch: [88/100], Step: [600/765], Loss: 0.1409609168767929 +Epoch: [88/100], Step: [700/765], Loss: 0.14392104744911194 +Validation: Epoch: [88/100], mean Loss: 4.808816909790039, last loss:3.226395606994629 +Epoch: [89/100], Step: [100/765], Loss: 0.22375962138175964 +Epoch: [89/100], Step: [200/765], Loss: 0.06817605346441269 +Epoch: [89/100], Step: [300/765], Loss: 0.1546579897403717 +Epoch: [89/100], Step: [400/765], Loss: 0.16434986889362335 +Epoch: [89/100], Step: [500/765], Loss: 0.1439143866300583 +Epoch: [89/100], Step: [600/765], Loss: 0.13622786104679108 +Epoch: [89/100], Step: [700/765], Loss: 0.06382735073566437 +Validation: Epoch: [89/100], mean Loss: 3.027179718017578, last loss:1.5715612173080444 +Epoch: [90/100], Step: [100/765], Loss: 0.06234396621584892 +Epoch: [90/100], Step: [200/765], Loss: 0.1498025506734848 +Epoch: [90/100], Step: [300/765], Loss: 0.1267995536327362 +Epoch: [90/100], Step: [400/765], Loss: 0.06497752666473389 +Epoch: [90/100], Step: [500/765], Loss: 0.0995950922369957 +Epoch: [90/100], Step: [600/765], Loss: 0.14627104997634888 +Epoch: [90/100], Step: [700/765], Loss: 0.07080290466547012 +Validation: Epoch: [90/100], mean Loss: 3.9077699184417725, last loss:2.494699001312256 +Epoch: [91/100], Step: [100/765], Loss: 0.10960668325424194 +Epoch: [91/100], Step: [200/765], Loss: 0.13306358456611633 +Epoch: [91/100], Step: [300/765], Loss: 0.13387401401996613 +Epoch: [91/100], Step: [400/765], Loss: 0.08547186851501465 +Epoch: [91/100], Step: [500/765], Loss: 0.11636418104171753 +Epoch: [91/100], Step: [600/765], Loss: 0.07466407120227814 +Epoch: [91/100], Step: [700/765], Loss: 0.12566545605659485 +Validation: Epoch: [91/100], mean Loss: 3.6627421379089355, last loss:2.0042521953582764 +Epoch: [92/100], Step: [100/765], Loss: 0.1380692422389984 +Epoch: [92/100], Step: [200/765], Loss: 0.13401161134243011 +Epoch: [92/100], Step: [300/765], Loss: 0.09973546117544174 +Epoch: [92/100], Step: [400/765], Loss: 0.11488395184278488 +Epoch: [92/100], Step: [500/765], Loss: 0.048836879432201385 +Epoch: [92/100], Step: [600/765], Loss: 0.08654676377773285 +Epoch: [92/100], Step: [700/765], Loss: 0.1489015519618988 +Validation: Epoch: [92/100], mean Loss: 3.1755924224853516, last loss:1.3591675758361816 +Epoch: [93/100], Step: [100/765], Loss: 0.10958229750394821 +Epoch: [93/100], Step: [200/765], Loss: 0.10707986354827881 +Epoch: [93/100], Step: [300/765], Loss: 0.10911339521408081 +Epoch: [93/100], Step: [400/765], Loss: 0.10189063847064972 +Epoch: [93/100], Step: [500/765], Loss: 0.1489415466785431 +Epoch: [93/100], Step: [600/765], Loss: 0.11220594495534897 +Epoch: [93/100], Step: [700/765], Loss: 0.12314735352993011 +Validation: Epoch: [93/100], mean Loss: 3.147447347640991, last loss:1.6575558185577393 +Epoch: [94/100], Step: [100/765], Loss: 0.0683051273226738 +Epoch: [94/100], Step: [200/765], Loss: 0.12370799481868744 +Epoch: [94/100], Step: [300/765], Loss: 0.07200360298156738 +Epoch: [94/100], Step: [400/765], Loss: 0.23404762148857117 +Epoch: [94/100], Step: [500/765], Loss: 0.09273209422826767 +Epoch: [94/100], Step: [600/765], Loss: 0.15586473047733307 +Epoch: [94/100], Step: [700/765], Loss: 0.09531646966934204 +Validation: Epoch: [94/100], mean Loss: 4.2060675621032715, last loss:2.4402034282684326 +Epoch: [95/100], Step: [100/765], Loss: 0.1721697300672531 +Epoch: [95/100], Step: [200/765], Loss: 0.07604295015335083 +Epoch: [95/100], Step: [300/765], Loss: 0.1142793744802475 +Epoch: [95/100], Step: [400/765], Loss: 0.2409006804227829 +Epoch: [95/100], Step: [500/765], Loss: 0.14978471398353577 +Epoch: [95/100], Step: [600/765], Loss: 0.10689188539981842 +Epoch: [95/100], Step: [700/765], Loss: 0.13230222463607788 +Validation: Epoch: [95/100], mean Loss: 3.7927093505859375, last loss:1.5213725566864014 +Epoch: [96/100], Step: [100/765], Loss: 0.17020338773727417 +Epoch: [96/100], Step: [200/765], Loss: 0.14961977303028107 +Epoch: [96/100], Step: [300/765], Loss: 0.17865899205207825 +Epoch: [96/100], Step: [400/765], Loss: 0.1094353124499321 +Epoch: [96/100], Step: [500/765], Loss: 0.10365374386310577 +Epoch: [96/100], Step: [600/765], Loss: 0.15325693786144257 +Epoch: [96/100], Step: [700/765], Loss: 0.08836466073989868 +Validation: Epoch: [96/100], mean Loss: 3.2049431800842285, last loss:0.9437203407287598 +Epoch: [97/100], Step: [100/765], Loss: 0.14307865500450134 +Epoch: [97/100], Step: [200/765], Loss: 0.09734338521957397 +Epoch: [97/100], Step: [300/765], Loss: 0.05233170837163925 +Epoch: [97/100], Step: [400/765], Loss: 0.07877646386623383 +Epoch: [97/100], Step: [500/765], Loss: 0.1144217699766159 +Epoch: [97/100], Step: [600/765], Loss: 0.09084270894527435 +Epoch: [97/100], Step: [700/765], Loss: 0.10042661428451538 +Validation: Epoch: [97/100], mean Loss: 2.6578054428100586, last loss:0.7754126787185669 +Epoch: [98/100], Step: [100/765], Loss: 0.17296645045280457 +Epoch: [98/100], Step: [200/765], Loss: 0.07047905772924423 +Epoch: [98/100], Step: [300/765], Loss: 0.08505215495824814 +Epoch: [98/100], Step: [400/765], Loss: 0.16511666774749756 +Epoch: [98/100], Step: [500/765], Loss: 0.05493509769439697 +Epoch: [98/100], Step: [600/765], Loss: 0.119672492146492 +Epoch: [98/100], Step: [700/765], Loss: 0.1216701865196228 +Validation: Epoch: [98/100], mean Loss: 3.078092098236084, last loss:1.0203723907470703 +Epoch: [99/100], Step: [100/765], Loss: 0.09372224658727646 +Epoch: [99/100], Step: [200/765], Loss: 0.07143770903348923 +Epoch: [99/100], Step: [300/765], Loss: 0.08610081672668457 +Epoch: [99/100], Step: [400/765], Loss: 0.2680703401565552 +Epoch: [99/100], Step: [500/765], Loss: 0.12031631171703339 +Epoch: [99/100], Step: [600/765], Loss: 0.06326824426651001 +Epoch: [99/100], Step: [700/765], Loss: 0.07000817358493805 +Validation: Epoch: [99/100], mean Loss: 3.999647617340088, last loss:1.2856686115264893 +Epoch: [100/100], Step: [100/765], Loss: 0.09329093992710114 +Epoch: [100/100], Step: [200/765], Loss: 0.1043417751789093 +Epoch: [100/100], Step: [300/765], Loss: 0.061168499290943146 +Epoch: [100/100], Step: [400/765], Loss: 0.14198079705238342 +Epoch: [100/100], Step: [500/765], Loss: 0.38819241523742676 +Epoch: [100/100], Step: [600/765], Loss: 0.10808806866407394 +Epoch: [100/100], Step: [700/765], Loss: 0.11493819952011108 +Validation: Epoch: [100/100], mean Loss: 3.246203660964966, last loss:0.8759809732437134 diff --git a/nohup_old.out b/nohup_old.out new file mode 100644 index 0000000..01d826e --- /dev/null +++ b/nohup_old.out @@ -0,0 +1,702 @@ +2021-08-09 19:33:21.343594: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0 +Loaded pretrained weights for efficientnet-b0 +Epoch: [1/100], Step: [100/680], Loss: 42.08773422241211 +Epoch: [1/100], Step: [200/680], Loss: 20.338226318359375 +Epoch: [1/100], Step: [300/680], Loss: 39.07540512084961 +Epoch: [1/100], Step: [400/680], Loss: 18.76742172241211 +Epoch: [1/100], Step: [500/680], Loss: 11.524312973022461 +Epoch: [1/100], Step: [600/680], Loss: 17.488178253173828 +Validation: Epoch: [1/100], Loss: 113.13748168945312 +Epoch: [2/100], Step: [100/680], Loss: 12.966280937194824 +Epoch: [2/100], Step: [200/680], Loss: 12.915827751159668 +Epoch: [2/100], Step: [300/680], Loss: 10.573070526123047 +Epoch: [2/100], Step: [400/680], Loss: 12.197542190551758 +Epoch: [2/100], Step: [500/680], Loss: 22.129161834716797 +Epoch: [2/100], Step: [600/680], Loss: 8.930990219116211 +Validation: Epoch: [2/100], Loss: 174.36077880859375 +Epoch: [3/100], Step: [100/680], Loss: 3.9377334117889404 +Epoch: [3/100], Step: [200/680], Loss: 9.49067497253418 +Epoch: [3/100], Step: [300/680], Loss: 17.963512420654297 +Epoch: [3/100], Step: [400/680], Loss: 8.231329917907715 +Epoch: [3/100], Step: [500/680], Loss: 2.881049871444702 +Epoch: [3/100], Step: [600/680], Loss: 21.9798583984375 +Validation: Epoch: [3/100], Loss: 153.9739227294922 +Epoch: [4/100], Step: [100/680], Loss: 11.177938461303711 +Epoch: [4/100], Step: [200/680], Loss: 6.284990310668945 +Epoch: [4/100], Step: [300/680], Loss: 3.3739356994628906 +Epoch: [4/100], Step: [400/680], Loss: 8.005712509155273 +Epoch: [4/100], Step: [500/680], Loss: 5.764804840087891 +Epoch: [4/100], Step: [600/680], Loss: 5.015941143035889 +Validation: Epoch: [4/100], Loss: 117.2547607421875 +Epoch: [5/100], Step: [100/680], Loss: 5.659461975097656 +Epoch: [5/100], Step: [200/680], Loss: 11.669017791748047 +Epoch: [5/100], Step: [300/680], Loss: 4.3777174949646 +Epoch: [5/100], Step: [400/680], Loss: 2.4973504543304443 +Epoch: [5/100], Step: [500/680], Loss: 7.5753984451293945 +Epoch: [5/100], Step: [600/680], Loss: 3.4455337524414062 +Validation: Epoch: [5/100], Loss: 66.31558990478516 +Epoch: [6/100], Step: [100/680], Loss: 3.4913578033447266 +Epoch: [6/100], Step: [200/680], Loss: 9.565852165222168 +Epoch: [6/100], Step: [300/680], Loss: 5.404956340789795 +Epoch: [6/100], Step: [400/680], Loss: 6.9781293869018555 +Epoch: [6/100], Step: [500/680], Loss: 4.692740440368652 +Epoch: [6/100], Step: [600/680], Loss: 2.6335411071777344 +Validation: Epoch: [6/100], Loss: 101.88142395019531 +Epoch: [7/100], Step: [100/680], Loss: 3.965503454208374 +Epoch: [7/100], Step: [200/680], Loss: 2.9632701873779297 +Epoch: [7/100], Step: [300/680], Loss: 1.2729971408843994 +Epoch: [7/100], Step: [400/680], Loss: 3.5818400382995605 +Epoch: [7/100], Step: [500/680], Loss: 2.685885190963745 +Epoch: [7/100], Step: [600/680], Loss: 1.6309003829956055 +Validation: Epoch: [7/100], Loss: 92.83055877685547 +Epoch: [8/100], Step: [100/680], Loss: 2.692882537841797 +Epoch: [8/100], Step: [200/680], Loss: 1.660478949546814 +Epoch: [8/100], Step: [300/680], Loss: 0.9471501111984253 +Epoch: [8/100], Step: [400/680], Loss: 2.352476119995117 +Epoch: [8/100], Step: [500/680], Loss: 1.551361322402954 +Epoch: [8/100], Step: [600/680], Loss: 3.489506721496582 +Validation: Epoch: [8/100], Loss: 134.86203002929688 +Epoch: [9/100], Step: [100/680], Loss: 1.4857869148254395 +Epoch: [9/100], Step: [200/680], Loss: 1.627076506614685 +Epoch: [9/100], Step: [300/680], Loss: 8.40201187133789 +Epoch: [9/100], Step: [400/680], Loss: 7.125185966491699 +Epoch: [9/100], Step: [500/680], Loss: 2.008545398712158 +Epoch: [9/100], Step: [600/680], Loss: 1.31290864944458 +Validation: Epoch: [9/100], Loss: 132.91534423828125 +Epoch: [10/100], Step: [100/680], Loss: 3.5563693046569824 +Epoch: [10/100], Step: [200/680], Loss: 2.685227870941162 +Epoch: [10/100], Step: [300/680], Loss: 1.2780121564865112 +Epoch: [10/100], Step: [400/680], Loss: 0.9038333296775818 +Epoch: [10/100], Step: [500/680], Loss: 0.8319239020347595 +Epoch: [10/100], Step: [600/680], Loss: 2.7253236770629883 +Validation: Epoch: [10/100], Loss: 87.28910064697266 +Epoch: [11/100], Step: [100/680], Loss: 1.4775874614715576 +Epoch: [11/100], Step: [200/680], Loss: 2.7177419662475586 +Epoch: [11/100], Step: [300/680], Loss: 5.126859188079834 +Epoch: [11/100], Step: [400/680], Loss: 0.6278368234634399 +Epoch: [11/100], Step: [500/680], Loss: 2.563856601715088 +Epoch: [11/100], Step: [600/680], Loss: 0.9441148638725281 +Validation: Epoch: [11/100], Loss: 88.02972412109375 +Epoch: [12/100], Step: [100/680], Loss: 2.2371511459350586 +Epoch: [12/100], Step: [200/680], Loss: 1.5196762084960938 +Epoch: [12/100], Step: [300/680], Loss: 0.7531331777572632 +Epoch: [12/100], Step: [400/680], Loss: 1.2254178524017334 +Epoch: [12/100], Step: [500/680], Loss: 0.6459958553314209 +Epoch: [12/100], Step: [600/680], Loss: 1.3048095703125 +Validation: Epoch: [12/100], Loss: 146.68702697753906 +Epoch: [13/100], Step: [100/680], Loss: 2.760282278060913 +Epoch: [13/100], Step: [200/680], Loss: 1.6967251300811768 +Epoch: [13/100], Step: [300/680], Loss: 1.3440603017807007 +Epoch: [13/100], Step: [400/680], Loss: 5.084449291229248 +Epoch: [13/100], Step: [500/680], Loss: 3.261690139770508 +Epoch: [13/100], Step: [600/680], Loss: 2.9978742599487305 +Validation: Epoch: [13/100], Loss: 140.329833984375 +Epoch: [14/100], Step: [100/680], Loss: 0.9337338209152222 +Epoch: [14/100], Step: [200/680], Loss: 0.7974573969841003 +Epoch: [14/100], Step: [300/680], Loss: 0.9798294305801392 +Epoch: [14/100], Step: [400/680], Loss: 1.2460771799087524 +Epoch: [14/100], Step: [500/680], Loss: 1.3652446269989014 +Epoch: [14/100], Step: [600/680], Loss: 3.104870557785034 +Validation: Epoch: [14/100], Loss: 114.0672607421875 +Epoch: [15/100], Step: [100/680], Loss: 1.5180301666259766 +Epoch: [15/100], Step: [200/680], Loss: 1.7851428985595703 +Epoch: [15/100], Step: [300/680], Loss: 2.258220911026001 +Epoch: [15/100], Step: [400/680], Loss: 1.8230323791503906 +Epoch: [15/100], Step: [500/680], Loss: 3.766043186187744 +Epoch: [15/100], Step: [600/680], Loss: 2.7770748138427734 +Validation: Epoch: [15/100], Loss: 125.08272552490234 +Epoch: [16/100], Step: [100/680], Loss: 1.359506368637085 +Epoch: [16/100], Step: [200/680], Loss: 1.489200472831726 +Epoch: [16/100], Step: [300/680], Loss: 1.1073423624038696 +Epoch: [16/100], Step: [400/680], Loss: 0.6025079488754272 +Epoch: [16/100], Step: [500/680], Loss: 1.3574641942977905 +Epoch: [16/100], Step: [600/680], Loss: 0.9008890986442566 +Validation: Epoch: [16/100], Loss: 142.3663787841797 +Epoch: [17/100], Step: [100/680], Loss: 0.7386741042137146 +Epoch: [17/100], Step: [200/680], Loss: 1.4846112728118896 +Epoch: [17/100], Step: [300/680], Loss: 0.8834511637687683 +Epoch: [17/100], Step: [400/680], Loss: 1.1860921382904053 +Epoch: [17/100], Step: [500/680], Loss: 5.9515509605407715 +Epoch: [17/100], Step: [600/680], Loss: 2.3041932582855225 +Validation: Epoch: [17/100], Loss: 118.66573333740234 +Epoch: [18/100], Step: [100/680], Loss: 1.4107029438018799 +Epoch: [18/100], Step: [200/680], Loss: 0.6978998184204102 +Epoch: [18/100], Step: [300/680], Loss: 1.0563044548034668 +Epoch: [18/100], Step: [400/680], Loss: 3.08616304397583 +Epoch: [18/100], Step: [500/680], Loss: 1.6440508365631104 +Epoch: [18/100], Step: [600/680], Loss: 1.1813266277313232 +Validation: Epoch: [18/100], Loss: 134.44577026367188 +Epoch: [19/100], Step: [100/680], Loss: 0.43591952323913574 +Epoch: [19/100], Step: [200/680], Loss: 0.4950043559074402 +Epoch: [19/100], Step: [300/680], Loss: 1.1762412786483765 +Epoch: [19/100], Step: [400/680], Loss: 1.2217864990234375 +Epoch: [19/100], Step: [500/680], Loss: 0.6617264747619629 +Epoch: [19/100], Step: [600/680], Loss: 0.2061888426542282 +Validation: Epoch: [19/100], Loss: 132.0081329345703 +Epoch: [20/100], Step: [100/680], Loss: 0.2825021743774414 +Epoch: [20/100], Step: [200/680], Loss: 0.2704210877418518 +Epoch: [20/100], Step: [300/680], Loss: 0.48911362886428833 +Epoch: [20/100], Step: [400/680], Loss: 0.33978158235549927 +Epoch: [20/100], Step: [500/680], Loss: 0.40647292137145996 +Epoch: [20/100], Step: [600/680], Loss: 0.46170830726623535 +Validation: Epoch: [20/100], Loss: 139.62979125976562 +Epoch: [21/100], Step: [100/680], Loss: 0.40589138865470886 +Epoch: [21/100], Step: [200/680], Loss: 1.1459741592407227 +Epoch: [21/100], Step: [300/680], Loss: 1.271165370941162 +Epoch: [21/100], Step: [400/680], Loss: 3.3508355617523193 +Epoch: [21/100], Step: [500/680], Loss: 2.4807558059692383 +Epoch: [21/100], Step: [600/680], Loss: 0.9055013656616211 +Validation: Epoch: [21/100], Loss: 109.35813903808594 +Epoch: [22/100], Step: [100/680], Loss: 0.8442277312278748 +Epoch: [22/100], Step: [200/680], Loss: 0.6779292821884155 +Epoch: [22/100], Step: [300/680], Loss: 1.9858567714691162 +Epoch: [22/100], Step: [400/680], Loss: 3.646360397338867 +Epoch: [22/100], Step: [500/680], Loss: 3.7468910217285156 +Epoch: [22/100], Step: [600/680], Loss: 3.489607572555542 +Validation: Epoch: [22/100], Loss: 166.97506713867188 +Epoch: [23/100], Step: [100/680], Loss: 1.0641471147537231 +Epoch: [23/100], Step: [200/680], Loss: 0.7466883659362793 +Epoch: [23/100], Step: [300/680], Loss: 0.5051393508911133 +Epoch: [23/100], Step: [400/680], Loss: 0.7184466123580933 +Epoch: [23/100], Step: [500/680], Loss: 0.43783068656921387 +Epoch: [23/100], Step: [600/680], Loss: 2.8897032737731934 +Validation: Epoch: [23/100], Loss: 150.16680908203125 +Epoch: [24/100], Step: [100/680], Loss: 0.4133644104003906 +Epoch: [24/100], Step: [200/680], Loss: 0.9319460391998291 +Epoch: [24/100], Step: [300/680], Loss: 0.3687102198600769 +Epoch: [24/100], Step: [400/680], Loss: 0.5385958552360535 +Epoch: [24/100], Step: [500/680], Loss: 0.3854494094848633 +Epoch: [24/100], Step: [600/680], Loss: 0.38146528601646423 +Validation: Epoch: [24/100], Loss: 145.0279083251953 +Epoch: [25/100], Step: [100/680], Loss: 0.8830331563949585 +Epoch: [25/100], Step: [200/680], Loss: 1.1259737014770508 +Epoch: [25/100], Step: [300/680], Loss: 0.23256060481071472 +Epoch: [25/100], Step: [400/680], Loss: 0.37697821855545044 +Epoch: [25/100], Step: [500/680], Loss: 0.9988774061203003 +Epoch: [25/100], Step: [600/680], Loss: 1.0965161323547363 +Validation: Epoch: [25/100], Loss: 101.18888092041016 +Epoch: [26/100], Step: [100/680], Loss: 0.35209473967552185 +Epoch: [26/100], Step: [200/680], Loss: 0.8763043284416199 +Epoch: [26/100], Step: [300/680], Loss: 3.084153652191162 +Epoch: [26/100], Step: [400/680], Loss: 2.028120517730713 +Epoch: [26/100], Step: [500/680], Loss: 3.6416988372802734 +Epoch: [26/100], Step: [600/680], Loss: 0.4464954137802124 +Validation: Epoch: [26/100], Loss: 109.10047149658203 +Epoch: [27/100], Step: [100/680], Loss: 0.5752577185630798 +Epoch: [27/100], Step: [200/680], Loss: 2.1121835708618164 +Epoch: [27/100], Step: [300/680], Loss: 3.7936599254608154 +Epoch: [27/100], Step: [400/680], Loss: 0.6647546291351318 +Epoch: [27/100], Step: [500/680], Loss: 0.5087329745292664 +Epoch: [27/100], Step: [600/680], Loss: 0.5537607073783875 +Validation: Epoch: [27/100], Loss: 131.9998779296875 +Epoch: [28/100], Step: [100/680], Loss: 0.24435816705226898 +Epoch: [28/100], Step: [200/680], Loss: 0.9550342559814453 +Epoch: [28/100], Step: [300/680], Loss: 0.3480904996395111 +Epoch: [28/100], Step: [400/680], Loss: 0.3706749379634857 +Epoch: [28/100], Step: [500/680], Loss: 1.4134706258773804 +Epoch: [28/100], Step: [600/680], Loss: 1.415859580039978 +Validation: Epoch: [28/100], Loss: 110.52899169921875 +Epoch: [29/100], Step: [100/680], Loss: 0.5700390338897705 +Epoch: [29/100], Step: [200/680], Loss: 0.2652028799057007 +Epoch: [29/100], Step: [300/680], Loss: 0.32471561431884766 +Epoch: [29/100], Step: [400/680], Loss: 0.45669814944267273 +Epoch: [29/100], Step: [500/680], Loss: 0.814159095287323 +Epoch: [29/100], Step: [600/680], Loss: 0.15655113756656647 +Validation: Epoch: [29/100], Loss: 127.62281036376953 +Epoch: [30/100], Step: [100/680], Loss: 0.3318609595298767 +Epoch: [30/100], Step: [200/680], Loss: 5.38978910446167 +Epoch: [30/100], Step: [300/680], Loss: 1.0317672491073608 +Epoch: [30/100], Step: [400/680], Loss: 1.4776127338409424 +Epoch: [30/100], Step: [500/680], Loss: 1.3042426109313965 +Epoch: [30/100], Step: [600/680], Loss: 0.9143840074539185 +Validation: Epoch: [30/100], Loss: 94.01283264160156 +Epoch: [31/100], Step: [100/680], Loss: 0.32995742559432983 +Epoch: [31/100], Step: [200/680], Loss: 0.6718083620071411 +Epoch: [31/100], Step: [300/680], Loss: 0.27516698837280273 +Epoch: [31/100], Step: [400/680], Loss: 0.30320748686790466 +Epoch: [31/100], Step: [500/680], Loss: 0.3416476249694824 +Epoch: [31/100], Step: [600/680], Loss: 0.6601850390434265 +Validation: Epoch: [31/100], Loss: 118.610595703125 +Epoch: [32/100], Step: [100/680], Loss: 0.34140390157699585 +Epoch: [32/100], Step: [200/680], Loss: 0.5094431638717651 +Epoch: [32/100], Step: [300/680], Loss: 0.43552422523498535 +Epoch: [32/100], Step: [400/680], Loss: 0.4988057613372803 +Epoch: [32/100], Step: [500/680], Loss: 0.3988090455532074 +Epoch: [32/100], Step: [600/680], Loss: 0.5750784873962402 +Validation: Epoch: [32/100], Loss: 124.2453842163086 +Epoch: [33/100], Step: [100/680], Loss: 0.7253291010856628 +Epoch: [33/100], Step: [200/680], Loss: 0.5373010039329529 +Epoch: [33/100], Step: [300/680], Loss: 0.38233232498168945 +Epoch: [33/100], Step: [400/680], Loss: 1.6588764190673828 +Epoch: [33/100], Step: [500/680], Loss: 0.5123493671417236 +Epoch: [33/100], Step: [600/680], Loss: 0.3598690927028656 +Validation: Epoch: [33/100], Loss: 118.84521484375 +Epoch: [34/100], Step: [100/680], Loss: 0.28316712379455566 +Epoch: [34/100], Step: [200/680], Loss: 0.4094765782356262 +Epoch: [34/100], Step: [300/680], Loss: 0.36709070205688477 +Epoch: [34/100], Step: [400/680], Loss: 0.45155152678489685 +Epoch: [34/100], Step: [500/680], Loss: 1.7308229207992554 +Epoch: [34/100], Step: [600/680], Loss: 1.1608045101165771 +Validation: Epoch: [34/100], Loss: 158.50384521484375 +Epoch: [35/100], Step: [100/680], Loss: 0.404979407787323 +Epoch: [35/100], Step: [200/680], Loss: 0.3288879990577698 +Epoch: [35/100], Step: [300/680], Loss: 1.4897401332855225 +Epoch: [35/100], Step: [400/680], Loss: 1.2252018451690674 +Epoch: [35/100], Step: [500/680], Loss: 0.32670867443084717 +Epoch: [35/100], Step: [600/680], Loss: 0.7887551188468933 +Validation: Epoch: [35/100], Loss: 121.2586898803711 +Epoch: [36/100], Step: [100/680], Loss: 0.9414698481559753 +Epoch: [36/100], Step: [200/680], Loss: 0.7270007133483887 +Epoch: [36/100], Step: [300/680], Loss: 0.312831312417984 +Epoch: [36/100], Step: [400/680], Loss: 0.9397424459457397 +Epoch: [36/100], Step: [500/680], Loss: 0.27096107602119446 +Epoch: [36/100], Step: [600/680], Loss: 0.8067895770072937 +Validation: Epoch: [36/100], Loss: 116.6343002319336 +Epoch: [37/100], Step: [100/680], Loss: 0.3846052885055542 +Epoch: [37/100], Step: [200/680], Loss: 0.4324929714202881 +Epoch: [37/100], Step: [300/680], Loss: 0.6751405596733093 +Epoch: [37/100], Step: [400/680], Loss: 1.1744565963745117 +Epoch: [37/100], Step: [500/680], Loss: 2.612726926803589 +Epoch: [37/100], Step: [600/680], Loss: 0.5433594584465027 +Validation: Epoch: [37/100], Loss: 113.11954498291016 +Epoch: [38/100], Step: [100/680], Loss: 0.35257136821746826 +Epoch: [38/100], Step: [200/680], Loss: 0.36936819553375244 +Epoch: [38/100], Step: [300/680], Loss: 0.40261954069137573 +Epoch: [38/100], Step: [400/680], Loss: 0.7713561058044434 +Epoch: [38/100], Step: [500/680], Loss: 0.7425975799560547 +Epoch: [38/100], Step: [600/680], Loss: 0.29783186316490173 +Validation: Epoch: [38/100], Loss: 139.19842529296875 +Epoch: [39/100], Step: [100/680], Loss: 0.3598310351371765 +Epoch: [39/100], Step: [200/680], Loss: 0.7577313780784607 +Epoch: [39/100], Step: [300/680], Loss: 0.34490475058555603 +Epoch: [39/100], Step: [400/680], Loss: 0.40035128593444824 +Epoch: [39/100], Step: [500/680], Loss: 0.34266990423202515 +Epoch: [39/100], Step: [600/680], Loss: 0.43692049384117126 +Validation: Epoch: [39/100], Loss: 114.1820068359375 +Epoch: [40/100], Step: [100/680], Loss: 0.4654652774333954 +Epoch: [40/100], Step: [200/680], Loss: 0.2175636738538742 +Epoch: [40/100], Step: [300/680], Loss: 0.18664368987083435 +Epoch: [40/100], Step: [400/680], Loss: 0.5592482089996338 +Epoch: [40/100], Step: [500/680], Loss: 0.18992476165294647 +Epoch: [40/100], Step: [600/680], Loss: 0.4101440906524658 +Validation: Epoch: [40/100], Loss: 124.35780334472656 +Epoch: [41/100], Step: [100/680], Loss: 0.3053450584411621 +Epoch: [41/100], Step: [200/680], Loss: 0.2230885922908783 +Epoch: [41/100], Step: [300/680], Loss: 0.4368531405925751 +Epoch: [41/100], Step: [400/680], Loss: 0.37804827094078064 +Epoch: [41/100], Step: [500/680], Loss: 0.23352520167827606 +Epoch: [41/100], Step: [600/680], Loss: 0.49612173438072205 +Validation: Epoch: [41/100], Loss: 140.5076141357422 +Epoch: [42/100], Step: [100/680], Loss: 0.26326489448547363 +Epoch: [42/100], Step: [200/680], Loss: 0.18977975845336914 +Epoch: [42/100], Step: [300/680], Loss: 0.3481760025024414 +Epoch: [42/100], Step: [400/680], Loss: 0.8546700477600098 +Epoch: [42/100], Step: [500/680], Loss: 1.7940783500671387 +Epoch: [42/100], Step: [600/680], Loss: 1.1836810111999512 +Validation: Epoch: [42/100], Loss: 114.9022216796875 +Epoch: [43/100], Step: [100/680], Loss: 0.6356401443481445 +Epoch: [43/100], Step: [200/680], Loss: 0.70953369140625 +Epoch: [43/100], Step: [300/680], Loss: 0.685760498046875 +Epoch: [43/100], Step: [400/680], Loss: 0.46409159898757935 +Epoch: [43/100], Step: [500/680], Loss: 0.21103040874004364 +Epoch: [43/100], Step: [600/680], Loss: 0.3444387912750244 +Validation: Epoch: [43/100], Loss: 123.66532897949219 +Epoch: [44/100], Step: [100/680], Loss: 0.37896499037742615 +Epoch: [44/100], Step: [200/680], Loss: 0.22293619811534882 +Epoch: [44/100], Step: [300/680], Loss: 0.4692683219909668 +Epoch: [44/100], Step: [400/680], Loss: 0.3813449740409851 +Epoch: [44/100], Step: [500/680], Loss: 0.36218488216400146 +Epoch: [44/100], Step: [600/680], Loss: 0.17616146802902222 +Validation: Epoch: [44/100], Loss: 138.228515625 +Epoch: [45/100], Step: [100/680], Loss: 0.1976364254951477 +Epoch: [45/100], Step: [200/680], Loss: 0.332550585269928 +Epoch: [45/100], Step: [300/680], Loss: 0.28882503509521484 +Epoch: [45/100], Step: [400/680], Loss: 0.2776379883289337 +Epoch: [45/100], Step: [500/680], Loss: 0.20119434595108032 +Epoch: [45/100], Step: [600/680], Loss: 0.15909716486930847 +Validation: Epoch: [45/100], Loss: 138.67332458496094 +Epoch: [46/100], Step: [100/680], Loss: 0.16632398962974548 +Epoch: [46/100], Step: [200/680], Loss: 0.1869855374097824 +Epoch: [46/100], Step: [300/680], Loss: 0.2736726403236389 +Epoch: [46/100], Step: [400/680], Loss: 0.15035603940486908 +Epoch: [46/100], Step: [500/680], Loss: 0.1999194622039795 +Epoch: [46/100], Step: [600/680], Loss: 0.5191007256507874 +Validation: Epoch: [46/100], Loss: 160.48489379882812 +Epoch: [47/100], Step: [100/680], Loss: 3.0455541610717773 +Epoch: [47/100], Step: [200/680], Loss: 2.5584263801574707 +Epoch: [47/100], Step: [300/680], Loss: 0.4790472686290741 +Epoch: [47/100], Step: [400/680], Loss: 0.354235976934433 +Epoch: [47/100], Step: [500/680], Loss: 0.4826790690422058 +Epoch: [47/100], Step: [600/680], Loss: 1.5409181118011475 +Validation: Epoch: [47/100], Loss: 122.79859924316406 +Epoch: [48/100], Step: [100/680], Loss: 0.4945765435695648 +Epoch: [48/100], Step: [200/680], Loss: 0.4317488372325897 +Epoch: [48/100], Step: [300/680], Loss: 0.44913384318351746 +Epoch: [48/100], Step: [400/680], Loss: 0.6141060590744019 +Epoch: [48/100], Step: [500/680], Loss: 0.9781373739242554 +Epoch: [48/100], Step: [600/680], Loss: 0.6209713220596313 +Validation: Epoch: [48/100], Loss: 126.14895629882812 +Epoch: [49/100], Step: [100/680], Loss: 0.2569514214992523 +Epoch: [49/100], Step: [200/680], Loss: 0.2501160800457001 +Epoch: [49/100], Step: [300/680], Loss: 0.24417877197265625 +Epoch: [49/100], Step: [400/680], Loss: 0.2613925337791443 +Epoch: [49/100], Step: [500/680], Loss: 0.6111541986465454 +Epoch: [49/100], Step: [600/680], Loss: 0.32592877745628357 +Validation: Epoch: [49/100], Loss: 107.39228057861328 +Epoch: [50/100], Step: [100/680], Loss: 0.36540526151657104 +Epoch: [50/100], Step: [200/680], Loss: 0.7109190821647644 +Epoch: [50/100], Step: [300/680], Loss: 0.26437467336654663 +Epoch: [50/100], Step: [400/680], Loss: 1.3459632396697998 +Epoch: [50/100], Step: [500/680], Loss: 0.545814573764801 +Epoch: [50/100], Step: [600/680], Loss: 0.3650609850883484 +Validation: Epoch: [50/100], Loss: 145.03433227539062 +Epoch: [51/100], Step: [100/680], Loss: 0.2998584806919098 +Epoch: [51/100], Step: [200/680], Loss: 0.551548421382904 +Epoch: [51/100], Step: [300/680], Loss: 0.7554014921188354 +Epoch: [51/100], Step: [400/680], Loss: 0.7761049270629883 +Epoch: [51/100], Step: [500/680], Loss: 0.31566983461380005 +Epoch: [51/100], Step: [600/680], Loss: 0.5151493549346924 +Validation: Epoch: [51/100], Loss: 138.19737243652344 +Epoch: [52/100], Step: [100/680], Loss: 0.22262422740459442 +Epoch: [52/100], Step: [200/680], Loss: 0.3053339719772339 +Epoch: [52/100], Step: [300/680], Loss: 0.3274711072444916 +Epoch: [52/100], Step: [400/680], Loss: 0.29679471254348755 +Epoch: [52/100], Step: [500/680], Loss: 0.2640130817890167 +Epoch: [52/100], Step: [600/680], Loss: 0.22037509083747864 +Validation: Epoch: [52/100], Loss: 145.943359375 +Epoch: [53/100], Step: [100/680], Loss: 0.28323817253112793 +Epoch: [53/100], Step: [200/680], Loss: 0.18284368515014648 +Epoch: [53/100], Step: [300/680], Loss: 0.30806422233581543 +Epoch: [53/100], Step: [400/680], Loss: 0.21644341945648193 +Epoch: [53/100], Step: [500/680], Loss: 0.3039116859436035 +Epoch: [53/100], Step: [600/680], Loss: 0.30350252985954285 +Validation: Epoch: [53/100], Loss: 142.5040283203125 +Epoch: [54/100], Step: [100/680], Loss: 0.2726573348045349 +Epoch: [54/100], Step: [200/680], Loss: 0.4320160150527954 +Epoch: [54/100], Step: [300/680], Loss: 0.12685054540634155 +Epoch: [54/100], Step: [400/680], Loss: 0.15678644180297852 +Epoch: [54/100], Step: [500/680], Loss: 0.4313732385635376 +Epoch: [54/100], Step: [600/680], Loss: 0.21446357667446136 +Validation: Epoch: [54/100], Loss: 87.72711944580078 +Epoch: [55/100], Step: [100/680], Loss: 0.4781193137168884 +Epoch: [55/100], Step: [200/680], Loss: 0.24480287730693817 +Epoch: [55/100], Step: [300/680], Loss: 0.5583814382553101 +Epoch: [55/100], Step: [400/680], Loss: 0.254697322845459 +Epoch: [55/100], Step: [500/680], Loss: 0.29334214329719543 +Epoch: [55/100], Step: [600/680], Loss: 0.18579022586345673 +Validation: Epoch: [55/100], Loss: 139.3447723388672 +Epoch: [56/100], Step: [100/680], Loss: 0.16339869797229767 +Epoch: [56/100], Step: [200/680], Loss: 0.19468705356121063 +Epoch: [56/100], Step: [300/680], Loss: 0.554909884929657 +Epoch: [56/100], Step: [400/680], Loss: 0.7921079397201538 +Epoch: [56/100], Step: [500/680], Loss: 0.588929295539856 +Epoch: [56/100], Step: [600/680], Loss: 0.21321479976177216 +Validation: Epoch: [56/100], Loss: 159.9489288330078 +Epoch: [57/100], Step: [100/680], Loss: 0.23823224008083344 +Epoch: [57/100], Step: [200/680], Loss: 0.45930391550064087 +Epoch: [57/100], Step: [300/680], Loss: 1.044921636581421 +Epoch: [57/100], Step: [400/680], Loss: 0.48871147632598877 +Epoch: [57/100], Step: [500/680], Loss: 0.6625090837478638 +Epoch: [57/100], Step: [600/680], Loss: 0.6721829175949097 +Validation: Epoch: [57/100], Loss: 119.33077239990234 +Epoch: [58/100], Step: [100/680], Loss: 0.28045326471328735 +Epoch: [58/100], Step: [200/680], Loss: 0.49216240644454956 +Epoch: [58/100], Step: [300/680], Loss: 0.2199138104915619 +Epoch: [58/100], Step: [400/680], Loss: 0.7884189486503601 +Epoch: [58/100], Step: [500/680], Loss: 0.24760791659355164 +Epoch: [58/100], Step: [600/680], Loss: 0.47002172470092773 +Validation: Epoch: [58/100], Loss: 126.72733306884766 +Epoch: [59/100], Step: [100/680], Loss: 0.33308374881744385 +Epoch: [59/100], Step: [200/680], Loss: 0.2498069703578949 +Epoch: [59/100], Step: [300/680], Loss: 0.0899105817079544 +Epoch: [59/100], Step: [400/680], Loss: 0.2408786416053772 +Epoch: [59/100], Step: [500/680], Loss: 0.12963616847991943 +Epoch: [59/100], Step: [600/680], Loss: 0.28680065274238586 +Validation: Epoch: [59/100], Loss: 127.0295181274414 +Epoch: [60/100], Step: [100/680], Loss: 0.15431807935237885 +Epoch: [60/100], Step: [200/680], Loss: 0.1813969612121582 +Epoch: [60/100], Step: [300/680], Loss: 0.17524755001068115 +Epoch: [60/100], Step: [400/680], Loss: 0.28256726264953613 +Epoch: [60/100], Step: [500/680], Loss: 0.23345264792442322 +Epoch: [60/100], Step: [600/680], Loss: 0.33601874113082886 +Validation: Epoch: [60/100], Loss: 124.72280883789062 +Epoch: [61/100], Step: [100/680], Loss: 0.10679229348897934 +Epoch: [61/100], Step: [200/680], Loss: 0.20587709546089172 +Epoch: [61/100], Step: [300/680], Loss: 0.2576431632041931 +Epoch: [61/100], Step: [400/680], Loss: 0.2411276400089264 +Epoch: [61/100], Step: [500/680], Loss: 0.20333123207092285 +Epoch: [61/100], Step: [600/680], Loss: 0.22614476084709167 +Validation: Epoch: [61/100], Loss: 135.398193359375 +Epoch: [62/100], Step: [100/680], Loss: 0.3665962219238281 +Epoch: [62/100], Step: [200/680], Loss: 0.20107446610927582 +Epoch: [62/100], Step: [300/680], Loss: 0.4834147095680237 +Epoch: [62/100], Step: [400/680], Loss: 1.209322214126587 +Epoch: [62/100], Step: [500/680], Loss: 0.8566607236862183 +Epoch: [62/100], Step: [600/680], Loss: 0.3043145537376404 +Validation: Epoch: [62/100], Loss: 92.83320617675781 +Epoch: [63/100], Step: [100/680], Loss: 0.685355544090271 +Epoch: [63/100], Step: [200/680], Loss: 0.2131982296705246 +Epoch: [63/100], Step: [300/680], Loss: 0.23575735092163086 +Epoch: [63/100], Step: [400/680], Loss: 0.3796747624874115 +Epoch: [63/100], Step: [500/680], Loss: 0.41051626205444336 +Epoch: [63/100], Step: [600/680], Loss: 0.11957093328237534 +Validation: Epoch: [63/100], Loss: 96.8208236694336 +Epoch: [64/100], Step: [100/680], Loss: 0.2592289447784424 +Epoch: [64/100], Step: [200/680], Loss: 0.2709100842475891 +Epoch: [64/100], Step: [300/680], Loss: 0.1608431190252304 +Epoch: [64/100], Step: [400/680], Loss: 0.3106761872768402 +Epoch: [64/100], Step: [500/680], Loss: 0.657141387462616 +Epoch: [64/100], Step: [600/680], Loss: 0.17232637107372284 +Validation: Epoch: [64/100], Loss: 119.43749237060547 +Epoch: [65/100], Step: [100/680], Loss: 0.11202101409435272 +Epoch: [65/100], Step: [200/680], Loss: 0.1950226128101349 +Epoch: [65/100], Step: [300/680], Loss: 0.1901119202375412 +Epoch: [65/100], Step: [400/680], Loss: 0.38007113337516785 +Epoch: [65/100], Step: [500/680], Loss: 0.19882403314113617 +Epoch: [65/100], Step: [600/680], Loss: 0.11886309832334518 +Validation: Epoch: [65/100], Loss: 125.57588958740234 +Epoch: [66/100], Step: [100/680], Loss: 0.540618896484375 +Epoch: [66/100], Step: [200/680], Loss: 0.3224482238292694 +Epoch: [66/100], Step: [300/680], Loss: 0.8388031721115112 +Epoch: [66/100], Step: [400/680], Loss: 0.48428571224212646 +Epoch: [66/100], Step: [500/680], Loss: 0.38726386427879333 +Epoch: [66/100], Step: [600/680], Loss: 0.24256794154644012 +Validation: Epoch: [66/100], Loss: 120.53839874267578 +Epoch: [67/100], Step: [100/680], Loss: 0.5800354480743408 +Epoch: [67/100], Step: [200/680], Loss: 0.22061952948570251 +Epoch: [67/100], Step: [300/680], Loss: 0.24963152408599854 +Epoch: [67/100], Step: [400/680], Loss: 0.29890698194503784 +Epoch: [67/100], Step: [500/680], Loss: 0.38786372542381287 +Epoch: [67/100], Step: [600/680], Loss: 0.20089983940124512 +Validation: Epoch: [67/100], Loss: 127.31731414794922 +Epoch: [68/100], Step: [100/680], Loss: 0.20411652326583862 +Epoch: [68/100], Step: [200/680], Loss: 0.11369208991527557 +Epoch: [68/100], Step: [300/680], Loss: 0.31742197275161743 +Epoch: [68/100], Step: [400/680], Loss: 0.34966596961021423 +Epoch: [68/100], Step: [500/680], Loss: 0.17967259883880615 +Epoch: [68/100], Step: [600/680], Loss: 0.26843875646591187 +Validation: Epoch: [68/100], Loss: 143.29759216308594 +Epoch: [69/100], Step: [100/680], Loss: 0.23272037506103516 +Epoch: [69/100], Step: [200/680], Loss: 0.1865832656621933 +Epoch: [69/100], Step: [300/680], Loss: 0.18692049384117126 +Epoch: [69/100], Step: [400/680], Loss: 0.4997200667858124 +Epoch: [69/100], Step: [500/680], Loss: 0.35724660754203796 +Epoch: [69/100], Step: [600/680], Loss: 0.09855391830205917 +Validation: Epoch: [69/100], Loss: 138.0304718017578 +Epoch: [70/100], Step: [100/680], Loss: 0.45236682891845703 +Epoch: [70/100], Step: [200/680], Loss: 0.41267985105514526 +Epoch: [70/100], Step: [300/680], Loss: 0.13626301288604736 +Epoch: [70/100], Step: [400/680], Loss: 0.14095555245876312 +Epoch: [70/100], Step: [500/680], Loss: 0.24299898743629456 +Epoch: [70/100], Step: [600/680], Loss: 0.33292633295059204 +Validation: Epoch: [70/100], Loss: 140.4873809814453 +Epoch: [71/100], Step: [100/680], Loss: 0.29031574726104736 +Epoch: [71/100], Step: [200/680], Loss: 0.254686176776886 +Epoch: [71/100], Step: [300/680], Loss: 0.177392840385437 +Epoch: [71/100], Step: [400/680], Loss: 0.1816754788160324 +Epoch: [71/100], Step: [500/680], Loss: 0.11778411269187927 +Epoch: [71/100], Step: [600/680], Loss: 0.12198355048894882 +Validation: Epoch: [71/100], Loss: 123.95487213134766 +Epoch: [72/100], Step: [100/680], Loss: 1.4002422094345093 +Epoch: [72/100], Step: [200/680], Loss: 0.1957639455795288 +Epoch: [72/100], Step: [300/680], Loss: 0.24492236971855164 +Epoch: [72/100], Step: [400/680], Loss: 0.3666999042034149 +Epoch: [72/100], Step: [500/680], Loss: 0.22621145844459534 +Epoch: [72/100], Step: [600/680], Loss: 0.2872737944126129 +Validation: Epoch: [72/100], Loss: 141.94140625 +Epoch: [73/100], Step: [100/680], Loss: 0.1993759572505951 +Epoch: [73/100], Step: [200/680], Loss: 1.7966092824935913 +Epoch: [73/100], Step: [300/680], Loss: 0.48547062277793884 +Epoch: [73/100], Step: [400/680], Loss: 0.27030766010284424 +Epoch: [73/100], Step: [500/680], Loss: 0.582628607749939 +Epoch: [73/100], Step: [600/680], Loss: 1.2065341472625732 +Validation: Epoch: [73/100], Loss: 88.27092742919922 +Epoch: [74/100], Step: [100/680], Loss: 0.2272988259792328 +Epoch: [74/100], Step: [200/680], Loss: 0.7235705852508545 +Epoch: [74/100], Step: [300/680], Loss: 0.35184234380722046 +Epoch: [74/100], Step: [400/680], Loss: 0.22438983619213104 +Epoch: [74/100], Step: [500/680], Loss: 0.20466411113739014 +Epoch: [74/100], Step: [600/680], Loss: 0.5032851099967957 +Validation: Epoch: [74/100], Loss: 131.8302459716797 +Epoch: [75/100], Step: [100/680], Loss: 0.20630201697349548 +Epoch: [75/100], Step: [200/680], Loss: 0.44608479738235474 +Epoch: [75/100], Step: [300/680], Loss: 0.27283167839050293 +Epoch: [75/100], Step: [400/680], Loss: 0.2351841777563095 +Epoch: [75/100], Step: [500/680], Loss: 0.3543769121170044 +Epoch: [75/100], Step: [600/680], Loss: 0.299265056848526 +Validation: Epoch: [75/100], Loss: 123.07632446289062 +Epoch: [76/100], Step: [100/680], Loss: 0.21062277257442474 +Epoch: [76/100], Step: [200/680], Loss: 0.2420920580625534 +Epoch: [76/100], Step: [300/680], Loss: 0.15641313791275024 +Epoch: [76/100], Step: [400/680], Loss: 0.28129372000694275 +Epoch: [76/100], Step: [500/680], Loss: 0.32803159952163696 +Epoch: [76/100], Step: [600/680], Loss: 0.2229217290878296 +Validation: Epoch: [76/100], Loss: 136.2874298095703 +Epoch: [77/100], Step: [100/680], Loss: 0.20090150833129883 +Epoch: [77/100], Step: [200/680], Loss: 0.33777567744255066 +Epoch: [77/100], Step: [300/680], Loss: 0.17651747167110443 +Epoch: [77/100], Step: [400/680], Loss: 0.13699355721473694 +Epoch: [77/100], Step: [500/680], Loss: 0.33115795254707336 +Epoch: [77/100], Step: [600/680], Loss: 0.1455255001783371 +Validation: Epoch: [77/100], Loss: 135.0991668701172 +Epoch: [78/100], Step: [100/680], Loss: 0.11203309148550034 +Epoch: [78/100], Step: [200/680], Loss: 0.21396712958812714 +Epoch: [78/100], Step: [300/680], Loss: 0.11561038345098495 +Epoch: [78/100], Step: [400/680], Loss: 0.22872623801231384 +Epoch: [78/100], Step: [500/680], Loss: 0.19051901996135712 +Epoch: [78/100], Step: [600/680], Loss: 0.2017596960067749 +Validation: Epoch: [78/100], Loss: 108.56279754638672 +Epoch: [79/100], Step: [100/680], Loss: 0.1572631299495697 +Epoch: [79/100], Step: [200/680], Loss: 0.19110189378261566 +Epoch: [79/100], Step: [300/680], Loss: 0.0813293606042862 +Epoch: [79/100], Step: [400/680], Loss: 0.2910497188568115 +Epoch: [79/100], Step: [500/680], Loss: 0.35641980171203613 +Epoch: [79/100], Step: [600/680], Loss: 0.2767791152000427 +Validation: Epoch: [79/100], Loss: 129.2438201904297 +Epoch: [80/100], Step: [100/680], Loss: 0.23767374455928802 +Epoch: [80/100], Step: [200/680], Loss: 0.4633343815803528 +Epoch: [80/100], Step: [300/680], Loss: 0.08053230494260788 +Epoch: [80/100], Step: [400/680], Loss: 0.21465373039245605 +Epoch: [80/100], Step: [500/680], Loss: 0.20504415035247803 +Epoch: [80/100], Step: [600/680], Loss: 0.17653396725654602 +Validation: Epoch: [80/100], Loss: 129.34959411621094 +Epoch: [81/100], Step: [100/680], Loss: 0.21527859568595886 +Epoch: [81/100], Step: [200/680], Loss: 0.129389226436615 +Epoch: [81/100], Step: [300/680], Loss: 0.21292632818222046 +Epoch: [81/100], Step: [400/680], Loss: 0.17186538875102997 +Epoch: [81/100], Step: [500/680], Loss: 0.15226209163665771 +Epoch: [81/100], Step: [600/680], Loss: 0.2035132646560669 +Validation: Epoch: [81/100], Loss: 148.19107055664062 +Epoch: [82/100], Step: [100/680], Loss: 0.45378726720809937 +Epoch: [82/100], Step: [200/680], Loss: 1.3919291496276855 +Epoch: [82/100], Step: [300/680], Loss: 0.16199415922164917 +Epoch: [82/100], Step: [400/680], Loss: 2.549616813659668 +Epoch: [82/100], Step: [500/680], Loss: 0.5917989015579224 +Epoch: [82/100], Step: [600/680], Loss: 0.7559736967086792 +Validation: Epoch: [82/100], Loss: 152.4188995361328 +Epoch: [83/100], Step: [100/680], Loss: 0.43943583965301514 +Epoch: [83/100], Step: [200/680], Loss: 0.15874110162258148 +Epoch: [83/100], Step: [300/680], Loss: 0.1208728551864624 +Epoch: [83/100], Step: [400/680], Loss: 0.2436203956604004 +Epoch: [83/100], Step: [500/680], Loss: 0.14963003993034363 +Epoch: [83/100], Step: [600/680], Loss: 0.27863138914108276 +Validation: Epoch: [83/100], Loss: 142.38998413085938 +Epoch: [84/100], Step: [100/680], Loss: 0.2688747048377991 +Epoch: [84/100], Step: [200/680], Loss: 0.21162055432796478 +Epoch: [84/100], Step: [300/680], Loss: 0.2791566550731659 +Epoch: [84/100], Step: [400/680], Loss: 0.3564302325248718 +Epoch: [84/100], Step: [500/680], Loss: 0.12415248155593872 +Epoch: [84/100], Step: [600/680], Loss: 0.22146546840667725 +Validation: Epoch: [84/100], Loss: 160.804443359375 +Epoch: [85/100], Step: [100/680], Loss: 0.22910523414611816 +Epoch: [85/100], Step: [200/680], Loss: 0.2466922402381897 +Epoch: [85/100], Step: [300/680], Loss: 0.27864548563957214 +Epoch: [85/100], Step: [400/680], Loss: 0.2695089280605316 +Epoch: [85/100], Step: [500/680], Loss: 0.17981621623039246 +Epoch: [85/100], Step: [600/680], Loss: 0.20110127329826355 +Validation: Epoch: [85/100], Loss: 132.79962158203125 +Epoch: [86/100], Step: [100/680], Loss: 0.245111346244812 +Epoch: [86/100], Step: [200/680], Loss: 0.8019170165061951 +Epoch: [86/100], Step: [300/680], Loss: 0.23607861995697021 +Epoch: [86/100], Step: [400/680], Loss: 0.20735633373260498 +Epoch: [86/100], Step: [500/680], Loss: 0.7176779508590698 +Epoch: [86/100], Step: [600/680], Loss: 0.17241494357585907 +Validation: Epoch: [86/100], Loss: 151.35861206054688 +Epoch: [87/100], Step: [100/680], Loss: 0.35481810569763184 +Epoch: [87/100], Step: [200/680], Loss: 0.36882251501083374 +Epoch: [87/100], Step: [300/680], Loss: 0.20749688148498535 +Epoch: [87/100], Step: [400/680], Loss: 0.4163151681423187 +Epoch: [87/100], Step: [500/680], Loss: 0.22293540835380554 +Epoch: [87/100], Step: [600/680], Loss: 0.5461419224739075 +Validation: Epoch: [87/100], Loss: 125.8123550415039 +Epoch: [88/100], Step: [100/680], Loss: 0.1389733850955963 +Epoch: [88/100], Step: [200/680], Loss: 0.27176642417907715 +Epoch: [88/100], Step: [300/680], Loss: 0.23382234573364258 +Epoch: [88/100], Step: [400/680], Loss: 0.16109292209148407 +Epoch: [88/100], Step: [500/680], Loss: 0.21473565697669983 +Epoch: [88/100], Step: [600/680], Loss: 0.14323240518569946 +Validation: Epoch: [88/100], Loss: 107.3889389038086 +Epoch: [89/100], Step: [100/680], Loss: 0.2933708429336548 +Epoch: [89/100], Step: [200/680], Loss: 7.951340675354004 +Epoch: [89/100], Step: [300/680], Loss: 0.26647886633872986 +Epoch: [89/100], Step: [400/680], Loss: 0.5064060091972351 +Epoch: [89/100], Step: [500/680], Loss: 0.1649632453918457 +Epoch: [89/100], Step: [600/680], Loss: 0.17304491996765137 +Validation: Epoch: [89/100], Loss: 114.87511444091797 +Epoch: [90/100], Step: [100/680], Loss: 0.11677339673042297 +Epoch: [90/100], Step: [200/680], Loss: 0.20158539712429047 +Epoch: [90/100], Step: [300/680], Loss: 0.1302635818719864 +Epoch: [90/100], Step: [400/680], Loss: 0.11068616807460785 +Epoch: [90/100], Step: [500/680], Loss: 0.2702479362487793 +Epoch: [90/100], Step: [600/680], Loss: 0.22718366980552673 +Validation: Epoch: [90/100], Loss: 121.66673278808594 +Epoch: [91/100], Step: [100/680], Loss: 0.12057503312826157 +Epoch: [91/100], Step: [200/680], Loss: 0.30372294783592224 +Epoch: [91/100], Step: [300/680], Loss: 0.3157999813556671 +Epoch: [91/100], Step: [400/680], Loss: 0.42615649104118347 +Epoch: [91/100], Step: [500/680], Loss: 0.13080410659313202 +Epoch: [91/100], Step: [600/680], Loss: 0.28415238857269287 +Validation: Epoch: [91/100], Loss: 109.53471374511719 +Epoch: [92/100], Step: [100/680], Loss: 0.2717171907424927 +Epoch: [92/100], Step: [200/680], Loss: 0.10132275521755219 +Epoch: [92/100], Step: [300/680], Loss: 0.22681006789207458 +Epoch: [92/100], Step: [400/680], Loss: 0.19614028930664062 +Epoch: [92/100], Step: [500/680], Loss: 0.17804449796676636 +Epoch: [92/100], Step: [600/680], Loss: 0.4558412432670593 +Validation: Epoch: [92/100], Loss: 98.51337432861328 +Epoch: [93/100], Step: [100/680], Loss: 0.09203554689884186 +Epoch: [93/100], Step: [200/680], Loss: 0.13900257647037506 +Epoch: [93/100], Step: [300/680], Loss: 0.09819301217794418 +Epoch: [93/100], Step: [400/680], Loss: 0.16072478890419006 +Epoch: [93/100], Step: [500/680], Loss: 0.17697416245937347 +Epoch: [93/100], Step: [600/680], Loss: 0.755016028881073 +Validation: Epoch: [93/100], Loss: 100.18537902832031 +Epoch: [94/100], Step: [100/680], Loss: 0.16905725002288818 +Epoch: [94/100], Step: [200/680], Loss: 0.3225775361061096 +Epoch: [94/100], Step: [300/680], Loss: 0.23698775470256805 +Epoch: [94/100], Step: [400/680], Loss: 0.32111698389053345 +Epoch: [94/100], Step: [500/680], Loss: 0.2510087490081787 +Epoch: [94/100], Step: [600/680], Loss: 0.24779050052165985 +Validation: Epoch: [94/100], Loss: 147.05657958984375 +Epoch: [95/100], Step: [100/680], Loss: 0.2526690661907196 +Epoch: [95/100], Step: [200/680], Loss: 0.2748056650161743 +Epoch: [95/100], Step: [300/680], Loss: 0.3027384281158447 +Epoch: [95/100], Step: [400/680], Loss: 0.6114857196807861 +Epoch: [95/100], Step: [500/680], Loss: 0.19567066431045532 +Epoch: [95/100], Step: [600/680], Loss: 0.4995303153991699 +Validation: Epoch: [95/100], Loss: 125.1033706665039 +Epoch: [96/100], Step: [100/680], Loss: 0.1401134729385376 +Epoch: [96/100], Step: [200/680], Loss: 0.14421415328979492 +Epoch: [96/100], Step: [300/680], Loss: 0.2419934868812561 +Epoch: [96/100], Step: [400/680], Loss: 0.19180206954479218 +Epoch: [96/100], Step: [500/680], Loss: 0.24117523431777954 +Epoch: [96/100], Step: [600/680], Loss: 0.3957882523536682 +Validation: Epoch: [96/100], Loss: 146.24819946289062 +Epoch: [97/100], Step: [100/680], Loss: 0.20869383215904236 +Epoch: [97/100], Step: [200/680], Loss: 0.11615301668643951 +Epoch: [97/100], Step: [300/680], Loss: 0.4052520990371704 +Epoch: [97/100], Step: [400/680], Loss: 0.11103163659572601 +Epoch: [97/100], Step: [500/680], Loss: 0.2054709494113922 +Epoch: [97/100], Step: [600/680], Loss: 0.22040459513664246 +Validation: Epoch: [97/100], Loss: 134.00572204589844 +Epoch: [98/100], Step: [100/680], Loss: 0.23618167638778687 +Epoch: [98/100], Step: [200/680], Loss: 0.15879853069782257 +Epoch: [98/100], Step: [300/680], Loss: 0.1587459146976471 +Epoch: [98/100], Step: [400/680], Loss: 0.19607391953468323 +Epoch: [98/100], Step: [500/680], Loss: 0.1803901195526123 +Epoch: [98/100], Step: [600/680], Loss: 0.0974336713552475 +Validation: Epoch: [98/100], Loss: 119.94475555419922 +Epoch: [99/100], Step: [100/680], Loss: 0.1670381873846054 +Epoch: [99/100], Step: [200/680], Loss: 0.2016807645559311 +Epoch: [99/100], Step: [300/680], Loss: 0.2135326862335205 +Epoch: [99/100], Step: [400/680], Loss: 0.1624399870634079 +Epoch: [99/100], Step: [500/680], Loss: 0.09752011299133301 +Epoch: [99/100], Step: [600/680], Loss: 0.15493488311767578 +Validation: Epoch: [99/100], Loss: 130.24119567871094 +Epoch: [100/100], Step: [100/680], Loss: 0.11449050903320312 +Epoch: [100/100], Step: [200/680], Loss: 0.09641017764806747 +Epoch: [100/100], Step: [300/680], Loss: 0.27741098403930664 +Epoch: [100/100], Step: [400/680], Loss: 0.40730223059654236 +Epoch: [100/100], Step: [500/680], Loss: 0.21397081017494202 +Epoch: [100/100], Step: [600/680], Loss: 0.4144144654273987 +Validation: Epoch: [100/100], Loss: 123.77079772949219 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 0fc9cce..0000000 --- a/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -torch==1.6 -torchvision==0.7 -Pillow -efficientnet-pytorch==0.7.0 -tensorboard \ No newline at end of file diff --git a/result/events.out.tfevents.1628688176.cxhpc.57213.0 b/result/events.out.tfevents.1628688176.cxhpc.57213.0 new file mode 100644 index 0000000..8c03ca6 Binary files /dev/null and b/result/events.out.tfevents.1628688176.cxhpc.57213.0 differ diff --git a/test.py b/test.py new file mode 100644 index 0000000..6f5a2f3 --- /dev/null +++ b/test.py @@ -0,0 +1,41 @@ +import os +import torch +from efficientnet_pytorch import EfficientNet +from PIL import Image, ImageDraw, ImageFont +import numpy as np +from pathlib import Path + +os.environ['CUDA_VISIBLE_DEVICES'] = '7' +# check if cuda is available +device = 'cuda' if torch.cuda.is_available() else 'cpu' + + +# you can find a pretrained model at model/b3.pth +MODEL_F = '/home/ljw/projects/vehicle-speed-estimation/model/b0.pth' +# directory with the numpy optical flow images you want to use for inference +OF_NPY_DIR = '/data_4T/EV_RAFT/opticalflow/' + + + +V = 0 # what version of efficientnet did you use +IN_C = 2 # number of input channels +NUM_C = 1 # number of classes to predict + +model = EfficientNet.from_pretrained(f'efficientnet-b{V}', in_channels=IN_C, num_classes=NUM_C) +state = torch.load(MODEL_F) +model.load_state_dict(state) +model.to(device) + + +def inference(of_f): + of = np.load(of_f) + i = torch.from_numpy(of).to(device) + pred = model(i) + del i + torch.cuda.empty_cache() + return pred + +# loop over all files in directory and predict +for f in Path(OF_NPY_DIR).glob('*.npy'): + y_hat = inference(f).item() + print(f'{f.name}: {round(y_hat, 2)}') \ No newline at end of file diff --git a/train.ipynb b/train.ipynb index 289598a..98624e9 100644 --- a/train.ipynb +++ b/train.ipynb @@ -2,9 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], + "execution_count": 1, "source": [ "import torch\n", "import torch.nn as nn\n", @@ -16,116 +14,116 @@ "from pathlib import Path\n", "import numpy as np\n", "import multiprocessing" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 2, - "metadata": {}, - "outputs": [], "source": [ "# check if cuda is available\n", "device = 'cuda' if torch.cuda.is_available() else 'cpu'" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Model" - ] + ], + "metadata": {} }, { "cell_type": "code", "execution_count": 3, - "metadata": {}, - "outputs": [], "source": [ "v = 0 # model version\n", "in_c = 2 # number of input channels\n", "num_c = 1 # number of classes to predict" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 4, - "metadata": {}, - "outputs": [], "source": [ "# The optical flow input will look like this\n", "of = torch.randn(1,2,640,480)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "source": [ + "model = EfficientNet.from_pretrained(f'efficientnet-b{v}', in_channels=in_c, num_classes=num_c)\n", + "model.to(device);" + ], "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ "Loaded pretrained weights for efficientnet-b0\n" ] } ], - "source": [ - "model = EfficientNet.from_pretrained(f'efficientnet-b{v}', in_channels=in_c, num_classes=num_c)\n", - "model.to(device);" - ] + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "#### The output of the model will look like this" - ] + ], + "metadata": {} }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": null, + "source": [ + "of = of.to(device)\n", + "model(of).item()" + ], "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ - "0.08474025130271912" + "0.10573935508728027" ] }, - "execution_count": 6, "metadata": {}, - "output_type": "execute_result" + "execution_count": 12 } ], - "source": [ - "of = of.to(device)\n", - "model(of).item()" - ] + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Data" - ] + ], + "metadata": {} }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "# directory with the optical flow images\n", - "of_dir = ''\n", + "of_dir = '/data_4T/EV_RAFT/opticalflow/'\n", "# labels as txt file\n", - "labels_f = ''" - ] + "labels_f = '/home/ljw/projects/vehicle-speed-estimation/speedchallenge/data/train.txt'" + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "class OFDataset(Dataset):\n", " def __init__(self, of_dir, label_f):\n", @@ -138,124 +136,124 @@ " of_tensor = torch.squeeze(torch.Tensor(of_array))\n", " label = float(self.label_file[idx].split()[0])\n", " return [of_tensor, label]" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "ds = OFDataset(of_dir, labels_f)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "# 80% of data for training\n", "# 20% of data for validation\n", "train_split = .8" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "ds_size = len(ds)\n", "indices = list(range(ds_size))\n", "split = int(np.floor(train_split * ds_size))\n", "train_idx, val_idx = indices[:split], indices[split:]" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "sample = ds[3]\n", "assert type(sample[0]) == torch.Tensor\n", "assert type(sample[1]) == float" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "train_sampler = SubsetRandomSampler(train_idx)\n", "val_sampler = SubsetRandomSampler(val_idx)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": null, + "source": [ + "cpu_cores = multiprocessing.cpu_count()\n", + "cpu_cores" + ], "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ "6" ] }, - "execution_count": 16, "metadata": {}, - "output_type": "execute_result" + "execution_count": 16 } ], - "source": [ - "cpu_cores = multiprocessing.cpu_count()\n", - "cpu_cores" - ] + "metadata": {} }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "train_dl = DataLoader(ds, batch_size=8, sampler=train_sampler, num_workers=cpu_cores)\n", "val_dl = DataLoader(ds, batch_size=8, sampler=val_sampler, num_workers=cpu_cores)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "markdown", - "metadata": {}, "source": [ "## Train" - ] + ], + "metadata": {} }, { "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "epochs = 1000\n", "log_train_steps = 100" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], + "execution_count": null, "source": [ "criterion = nn.MSELoss()\n", "opt = optim.Adam(model.parameters())" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "metadata": {}, - "outputs": [], "source": [ "for epoch in range(epochs):\n", " model.train()\n", @@ -268,6 +266,9 @@ " loss = criterion(pred, label)\n", " loss.backward()\n", " opt.step()\n", + " if (i+1) % 100 == 0:\n", + " print('Epoch: [{}/{}], Step: [{}/{}], Loss: {}'\n", + " .format(epoch+1, epochs, i+1, len(train_dl), loss.item()))\n", " # validation\n", " model.eval()\n", " val_losses = []\n", @@ -279,14 +280,15 @@ " loss = criterion(pred, label)\n", " val_losses.append(loss)\n", " print(f'{epoch}: {sum(val_losses)/len(val_losses)}')" - ] + ], + "outputs": [], + "metadata": {} } ], "metadata": { "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + "name": "python3", + "display_name": "Python 3.8.8 64-bit ('base': conda)" }, "language_info": { "codemirror_mode": { @@ -298,9 +300,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3" + "version": "3.8.8" + }, + "interpreter": { + "hash": "2aeb8807af674c25e42d3b954bdf81ebbd8b3b7269d8598fd0a060a9edf341c1" } }, "nbformat": 4, "nbformat_minor": 4 -} +} \ No newline at end of file diff --git a/train.py b/train.py new file mode 100644 index 0000000..d90310f --- /dev/null +++ b/train.py @@ -0,0 +1,130 @@ +import os +import torch +import torch.nn as nn +import torch.nn.functional as F +from torch.utils.data import Dataset, DataLoader +from torch.utils.data.sampler import SubsetRandomSampler +import torch.optim as optim +from efficientnet_pytorch import EfficientNet +from pathlib import Path +import numpy as np +import multiprocessing +from torch.utils.tensorboard import SummaryWriter + + +os.environ['CUDA_VISIBLE_DEVICES'] = '7' +device = 'cuda' if torch.cuda.is_available() else 'cpu' + +v = 0 # model version +in_c = 2 # number of input channels +num_c = 1 # number of classes to predict + + +# directory with the optical flow images +of_dir = '/data_4T/EV_RAFT/opticalflow/' +# labels as txt file +labels_f = '/data_4T/EV_RAFT/speedchallenge/data/train.txt' +model_f = '/home/ljw/projects/vehicle-speed-estimation/model/efnet_b0.pth' + +#of = torch.randn(1,2,640,480) # input shape (1,2,640,480) + +model = EfficientNet.from_pretrained(f'efficientnet-b{v}', in_channels=in_c, num_classes=num_c) +#state = torch.load(MODEL_F) +#model.load_state_dict(state) +model.to(device) + +#of = of.to(device) +#model(of).item() + + + +class OFDataset(Dataset): + def __init__(self, of_dir, label_f): + self.len = len(list(Path(of_dir).glob('*.npy'))) + self.of_dir = of_dir + self.label_file = open(label_f).readlines() + def __len__(self): return self.len + def __getitem__(self, idx): + of_array = np.load(Path(self.of_dir)/f'{idx}.npy') + of_tensor = torch.squeeze(torch.Tensor(of_array)) + label = float(self.label_file[idx].split()[0]) + return [of_tensor, label] + +ds = OFDataset(of_dir, labels_f) + +# 80% of data for training +# 20% of data for validation +train_split = .9 + +ds_size = len(ds) +indices = list(range(ds_size)) +split = int(np.floor(train_split * ds_size)) +train_idx, val_idx = indices[:split], indices[split:] +sample = ds[3] + + +train_set = torch.utils.data.Subset(ds, train_idx) +val_set = torch.utils.data.Subset(ds, val_idx) +print(train_set[0][1]) + +train_dl = DataLoader(train_set, batch_size=24, shuffle=True, num_workers=12) +val_dl = DataLoader(val_set, batch_size=24, shuffle=False, num_workers=12) + +print(len(train_dl), len(val_dl)) + + +''' +assert type(sample[0]) == torch.Tensor +assert type(sample[1]) == float + +train_sampler = SubsetRandomSampler(train_idx) +val_sampler = SubsetRandomSampler(val_idx) +cpu_cores = multiprocessing.cpu_count() + + +train_dl = DataLoader(ds, batch_size=16, sampler=train_sampler, num_workers=12) +val_dl = DataLoader(ds, batch_size=16, sampler=val_sampler, num_workers=12) +''' + +epochs = 100 +#log_train_steps = 100 + +writer = SummaryWriter('/home/ljw/projects/vehicle-speed-estimation/result') + + +criterion = nn.MSELoss() +opt = optim.Adam(model.parameters(),lr=0.0001) + +for epoch in range(epochs): + model.train() + running_loss = 0.0 + for i, sample in enumerate(train_dl): + of_tensor = sample[0].cuda() + label = sample[1].float().cuda() + opt.zero_grad() + pred = torch.squeeze(model(of_tensor)) + loss = criterion(pred, label) + loss.backward() + opt.step() + + if (i+1) % 100 == 0: + print('Epoch: [{}/{}], Step: [{}/{}], Loss: {}' + .format(epoch+1, epochs, i+1, len(train_dl), loss.item())) + writer.add_scalar('Training loss', loss.item(), global_step=i+epoch*len(train_dl)) + + # validation + model.eval() + val_losses = [] + with torch.no_grad(): + for j, val_sample in enumerate(val_dl): + of_tensor = val_sample[0].cuda() + label = val_sample[1].float().cuda() + pred = torch.squeeze(model(of_tensor)) + loss = criterion(pred, label) + val_losses.append(loss) + print('Validation: Epoch: [{}/{}], mean Loss: {}, last loss:{}' + .format(epoch+1, epochs, sum(val_losses)/len(val_losses), loss.item())) + #print(f'{epoch}: {sum(val_losses)/len(val_losses)}') + writer.add_scalar('Validation loss', sum(val_losses)/len(val_losses), global_step=epoch) + +torch.save(model, model_f) \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/__pycache__/__init__.cpython-38.pyc b/utils/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..97adcdf Binary files /dev/null and b/utils/__pycache__/__init__.cpython-38.pyc differ diff --git a/utils/__pycache__/corr.cpython-38.pyc b/utils/__pycache__/corr.cpython-38.pyc new file mode 100644 index 0000000..3a3ed8c Binary files /dev/null and b/utils/__pycache__/corr.cpython-38.pyc differ diff --git a/utils/__pycache__/extractor.cpython-38.pyc b/utils/__pycache__/extractor.cpython-38.pyc new file mode 100644 index 0000000..4b6ff8b Binary files /dev/null and b/utils/__pycache__/extractor.cpython-38.pyc differ diff --git a/utils/__pycache__/flow_viz.cpython-38.pyc b/utils/__pycache__/flow_viz.cpython-38.pyc new file mode 100644 index 0000000..152ceaa Binary files /dev/null and b/utils/__pycache__/flow_viz.cpython-38.pyc differ diff --git a/utils/__pycache__/raft.cpython-38.pyc b/utils/__pycache__/raft.cpython-38.pyc new file mode 100644 index 0000000..b259d5d Binary files /dev/null and b/utils/__pycache__/raft.cpython-38.pyc differ diff --git a/utils/__pycache__/update.cpython-38.pyc b/utils/__pycache__/update.cpython-38.pyc new file mode 100644 index 0000000..9f1f2d4 Binary files /dev/null and b/utils/__pycache__/update.cpython-38.pyc differ diff --git a/utils/__pycache__/utils.cpython-38.pyc b/utils/__pycache__/utils.cpython-38.pyc new file mode 100644 index 0000000..005fd90 Binary files /dev/null and b/utils/__pycache__/utils.cpython-38.pyc differ diff --git a/utils/corr.py b/utils/corr.py new file mode 100644 index 0000000..400103f --- /dev/null +++ b/utils/corr.py @@ -0,0 +1,91 @@ +import torch +import torch.nn.functional as F +from utils.utils import bilinear_sampler + +try: + import alt_cuda_corr +except: + # alt_cuda_corr is not compiled + pass + + +class CorrBlock: + def __init__(self, fmap1, fmap2, num_levels=4, radius=4): + self.num_levels = num_levels + self.radius = radius + self.corr_pyramid = [] + + # all pairs correlation + corr = CorrBlock.corr(fmap1, fmap2) + + batch, h1, w1, dim, h2, w2 = corr.shape + corr = corr.reshape(batch*h1*w1, dim, h2, w2) + + self.corr_pyramid.append(corr) + for i in range(self.num_levels-1): + corr = F.avg_pool2d(corr, 2, stride=2) + self.corr_pyramid.append(corr) + + def __call__(self, coords): + r = self.radius + coords = coords.permute(0, 2, 3, 1) + batch, h1, w1, _ = coords.shape + + out_pyramid = [] + for i in range(self.num_levels): + corr = self.corr_pyramid[i] + dx = torch.linspace(-r, r, 2*r+1) + dy = torch.linspace(-r, r, 2*r+1) + delta = torch.stack(torch.meshgrid(dy, dx), axis=-1).to(coords.device) + + centroid_lvl = coords.reshape(batch*h1*w1, 1, 1, 2) / 2**i + delta_lvl = delta.view(1, 2*r+1, 2*r+1, 2) + coords_lvl = centroid_lvl + delta_lvl + + corr = bilinear_sampler(corr, coords_lvl) + corr = corr.view(batch, h1, w1, -1) + out_pyramid.append(corr) + + out = torch.cat(out_pyramid, dim=-1) + return out.permute(0, 3, 1, 2).contiguous().float() + + @staticmethod + def corr(fmap1, fmap2): + batch, dim, ht, wd = fmap1.shape + fmap1 = fmap1.view(batch, dim, ht*wd) + fmap2 = fmap2.view(batch, dim, ht*wd) + + corr = torch.matmul(fmap1.transpose(1,2), fmap2) + corr = corr.view(batch, ht, wd, 1, ht, wd) + return corr / torch.sqrt(torch.tensor(dim).float()) + + +class AlternateCorrBlock: + def __init__(self, fmap1, fmap2, num_levels=4, radius=4): + self.num_levels = num_levels + self.radius = radius + + self.pyramid = [(fmap1, fmap2)] + for i in range(self.num_levels): + fmap1 = F.avg_pool2d(fmap1, 2, stride=2) + fmap2 = F.avg_pool2d(fmap2, 2, stride=2) + self.pyramid.append((fmap1, fmap2)) + + def __call__(self, coords): + coords = coords.permute(0, 2, 3, 1) + B, H, W, _ = coords.shape + dim = self.pyramid[0][0].shape[1] + + corr_list = [] + for i in range(self.num_levels): + r = self.radius + fmap1_i = self.pyramid[0][0].permute(0, 2, 3, 1).contiguous() + fmap2_i = self.pyramid[i][1].permute(0, 2, 3, 1).contiguous() + + coords_i = (coords / 2**i).reshape(B, 1, H, W, 2).contiguous() + corr, = alt_cuda_corr.forward(fmap1_i, fmap2_i, coords_i, r) + corr_list.append(corr.squeeze(1)) + + corr = torch.stack(corr_list, dim=1) + corr = corr.reshape(B, -1, H, W) + return corr / torch.sqrt(torch.tensor(dim).float()) \ No newline at end of file diff --git a/utils/extractor.py b/utils/extractor.py new file mode 100644 index 0000000..d1501f0 --- /dev/null +++ b/utils/extractor.py @@ -0,0 +1,267 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class ResidualBlock(nn.Module): + def __init__(self, in_planes, planes, norm_fn='group', stride=1): + super(ResidualBlock, self).__init__() + + self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=3, padding=1, stride=stride) + self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, padding=1) + self.relu = nn.ReLU(inplace=True) + + num_groups = planes // 8 + + if norm_fn == 'group': + self.norm1 = nn.GroupNorm(num_groups=num_groups, num_channels=planes) + self.norm2 = nn.GroupNorm(num_groups=num_groups, num_channels=planes) + if not stride == 1: + self.norm3 = nn.GroupNorm(num_groups=num_groups, num_channels=planes) + + elif norm_fn == 'batch': + self.norm1 = nn.BatchNorm2d(planes) + self.norm2 = nn.BatchNorm2d(planes) + if not stride == 1: + self.norm3 = nn.BatchNorm2d(planes) + + elif norm_fn == 'instance': + self.norm1 = nn.InstanceNorm2d(planes) + self.norm2 = nn.InstanceNorm2d(planes) + if not stride == 1: + self.norm3 = nn.InstanceNorm2d(planes) + + elif norm_fn == 'none': + self.norm1 = nn.Sequential() + self.norm2 = nn.Sequential() + if not stride == 1: + self.norm3 = nn.Sequential() + + if stride == 1: + self.downsample = None + + else: + self.downsample = nn.Sequential( + nn.Conv2d(in_planes, planes, kernel_size=1, stride=stride), self.norm3) + + + def forward(self, x): + y = x + y = self.relu(self.norm1(self.conv1(y))) + y = self.relu(self.norm2(self.conv2(y))) + + if self.downsample is not None: + x = self.downsample(x) + + return self.relu(x+y) + + + +class BottleneckBlock(nn.Module): + def __init__(self, in_planes, planes, norm_fn='group', stride=1): + super(BottleneckBlock, self).__init__() + + self.conv1 = nn.Conv2d(in_planes, planes//4, kernel_size=1, padding=0) + self.conv2 = nn.Conv2d(planes//4, planes//4, kernel_size=3, padding=1, stride=stride) + self.conv3 = nn.Conv2d(planes//4, planes, kernel_size=1, padding=0) + self.relu = nn.ReLU(inplace=True) + + num_groups = planes // 8 + + if norm_fn == 'group': + self.norm1 = nn.GroupNorm(num_groups=num_groups, num_channels=planes//4) + self.norm2 = nn.GroupNorm(num_groups=num_groups, num_channels=planes//4) + self.norm3 = nn.GroupNorm(num_groups=num_groups, num_channels=planes) + if not stride == 1: + self.norm4 = nn.GroupNorm(num_groups=num_groups, num_channels=planes) + + elif norm_fn == 'batch': + self.norm1 = nn.BatchNorm2d(planes//4) + self.norm2 = nn.BatchNorm2d(planes//4) + self.norm3 = nn.BatchNorm2d(planes) + if not stride == 1: + self.norm4 = nn.BatchNorm2d(planes) + + elif norm_fn == 'instance': + self.norm1 = nn.InstanceNorm2d(planes//4) + self.norm2 = nn.InstanceNorm2d(planes//4) + self.norm3 = nn.InstanceNorm2d(planes) + if not stride == 1: + self.norm4 = nn.InstanceNorm2d(planes) + + elif norm_fn == 'none': + self.norm1 = nn.Sequential() + self.norm2 = nn.Sequential() + self.norm3 = nn.Sequential() + if not stride == 1: + self.norm4 = nn.Sequential() + + if stride == 1: + self.downsample = None + + else: + self.downsample = nn.Sequential( + nn.Conv2d(in_planes, planes, kernel_size=1, stride=stride), self.norm4) + + + def forward(self, x): + y = x + y = self.relu(self.norm1(self.conv1(y))) + y = self.relu(self.norm2(self.conv2(y))) + y = self.relu(self.norm3(self.conv3(y))) + + if self.downsample is not None: + x = self.downsample(x) + + return self.relu(x+y) + +class BasicEncoder(nn.Module): + def __init__(self, output_dim=128, norm_fn='batch', dropout=0.0): + super(BasicEncoder, self).__init__() + self.norm_fn = norm_fn + + if self.norm_fn == 'group': + self.norm1 = nn.GroupNorm(num_groups=8, num_channels=64) + + elif self.norm_fn == 'batch': + self.norm1 = nn.BatchNorm2d(64) + + elif self.norm_fn == 'instance': + self.norm1 = nn.InstanceNorm2d(64) + + elif self.norm_fn == 'none': + self.norm1 = nn.Sequential() + + self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3) + self.relu1 = nn.ReLU(inplace=True) + + self.in_planes = 64 + self.layer1 = self._make_layer(64, stride=1) + self.layer2 = self._make_layer(96, stride=2) + self.layer3 = self._make_layer(128, stride=2) + + # output convolution + self.conv2 = nn.Conv2d(128, output_dim, kernel_size=1) + + self.dropout = None + if dropout > 0: + self.dropout = nn.Dropout2d(p=dropout) + + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + elif isinstance(m, (nn.BatchNorm2d, nn.InstanceNorm2d, nn.GroupNorm)): + if m.weight is not None: + nn.init.constant_(m.weight, 1) + if m.bias is not None: + nn.init.constant_(m.bias, 0) + + def _make_layer(self, dim, stride=1): + layer1 = ResidualBlock(self.in_planes, dim, self.norm_fn, stride=stride) + layer2 = ResidualBlock(dim, dim, self.norm_fn, stride=1) + layers = (layer1, layer2) + + self.in_planes = dim + return nn.Sequential(*layers) + + + def forward(self, x): + + # if input is list, combine batch dimension + is_list = isinstance(x, tuple) or isinstance(x, list) + if is_list: + batch_dim = x[0].shape[0] + x = torch.cat(x, dim=0) + + x = self.conv1(x) + x = self.norm1(x) + x = self.relu1(x) + + x = self.layer1(x) + x = self.layer2(x) + x = self.layer3(x) + + x = self.conv2(x) + + if self.training and self.dropout is not None: + x = self.dropout(x) + + if is_list: + x = torch.split(x, [batch_dim, batch_dim], dim=0) + + return x + + +class SmallEncoder(nn.Module): + def __init__(self, output_dim=128, norm_fn='batch', dropout=0.0): + super(SmallEncoder, self).__init__() + self.norm_fn = norm_fn + + if self.norm_fn == 'group': + self.norm1 = nn.GroupNorm(num_groups=8, num_channels=32) + + elif self.norm_fn == 'batch': + self.norm1 = nn.BatchNorm2d(32) + + elif self.norm_fn == 'instance': + self.norm1 = nn.InstanceNorm2d(32) + + elif self.norm_fn == 'none': + self.norm1 = nn.Sequential() + + self.conv1 = nn.Conv2d(3, 32, kernel_size=7, stride=2, padding=3) + self.relu1 = nn.ReLU(inplace=True) + + self.in_planes = 32 + self.layer1 = self._make_layer(32, stride=1) + self.layer2 = self._make_layer(64, stride=2) + self.layer3 = self._make_layer(96, stride=2) + + self.dropout = None + if dropout > 0: + self.dropout = nn.Dropout2d(p=dropout) + + self.conv2 = nn.Conv2d(96, output_dim, kernel_size=1) + + for m in self.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + elif isinstance(m, (nn.BatchNorm2d, nn.InstanceNorm2d, nn.GroupNorm)): + if m.weight is not None: + nn.init.constant_(m.weight, 1) + if m.bias is not None: + nn.init.constant_(m.bias, 0) + + def _make_layer(self, dim, stride=1): + layer1 = BottleneckBlock(self.in_planes, dim, self.norm_fn, stride=stride) + layer2 = BottleneckBlock(dim, dim, self.norm_fn, stride=1) + layers = (layer1, layer2) + + self.in_planes = dim + return nn.Sequential(*layers) + + + def forward(self, x): + + # if input is list, combine batch dimension + is_list = isinstance(x, tuple) or isinstance(x, list) + if is_list: + batch_dim = x[0].shape[0] + x = torch.cat(x, dim=0) + + x = self.conv1(x) + x = self.norm1(x) + x = self.relu1(x) + + x = self.layer1(x) + x = self.layer2(x) + x = self.layer3(x) + x = self.conv2(x) + + if self.training and self.dropout is not None: + x = self.dropout(x) + + if is_list: + x = torch.split(x, [batch_dim, batch_dim], dim=0) + + return x \ No newline at end of file diff --git a/utils/flow_viz.py b/utils/flow_viz.py new file mode 100644 index 0000000..55c483d --- /dev/null +++ b/utils/flow_viz.py @@ -0,0 +1,108 @@ +import numpy as np + +def make_colorwheel(): + """ + Generates a color wheel for optical flow visualization as presented in: + Baker et al. "A Database and Evaluation Methodology for Optical Flow" (ICCV, 2007) + URL: http://vision.middlebury.edu/flow/flowEval-iccv07.pdf + Code follows the original C++ source code of Daniel Scharstein. + Code follows the the Matlab source code of Deqing Sun. + Returns: + np.ndarray: Color wheel + """ + + RY = 15 + YG = 6 + GC = 4 + CB = 11 + BM = 13 + MR = 6 + + ncols = RY + YG + GC + CB + BM + MR + colorwheel = np.zeros((ncols, 3)) + col = 0 + + # RY + colorwheel[0:RY, 0] = 255 + colorwheel[0:RY, 1] = np.floor(255*np.arange(0,RY)/RY) + col = col+RY + # YG + colorwheel[col:col+YG, 0] = 255 - np.floor(255*np.arange(0,YG)/YG) + colorwheel[col:col+YG, 1] = 255 + col = col+YG + # GC + colorwheel[col:col+GC, 1] = 255 + colorwheel[col:col+GC, 2] = np.floor(255*np.arange(0,GC)/GC) + col = col+GC + # CB + colorwheel[col:col+CB, 1] = 255 - np.floor(255*np.arange(CB)/CB) + colorwheel[col:col+CB, 2] = 255 + col = col+CB + # BM + colorwheel[col:col+BM, 2] = 255 + colorwheel[col:col+BM, 0] = np.floor(255*np.arange(0,BM)/BM) + col = col+BM + # MR + colorwheel[col:col+MR, 2] = 255 - np.floor(255*np.arange(MR)/MR) + colorwheel[col:col+MR, 0] = 255 + return colorwheel + + +def flow_uv_to_colors(u, v, convert_to_bgr=False): + """ + Applies the flow color wheel to (possibly clipped) flow components u and v. + According to the C++ source code of Daniel Scharstein + According to the Matlab source code of Deqing Sun + Args: + u (np.ndarray): Input horizontal flow of shape [H,W] + v (np.ndarray): Input vertical flow of shape [H,W] + convert_to_bgr (bool, optional): Convert output image to BGR. Defaults to False. + Returns: + np.ndarray: Flow visualization image of shape [H,W,3] + """ + flow_image = np.zeros((u.shape[0], u.shape[1], 3), np.uint8) + colorwheel = make_colorwheel() # shape [55x3] + ncols = colorwheel.shape[0] + rad = np.sqrt(np.square(u) + np.square(v)) + a = np.arctan2(-v, -u)/np.pi + fk = (a+1) / 2*(ncols-1) + k0 = np.floor(fk).astype(np.int32) + k1 = k0 + 1 + k1[k1 == ncols] = 0 + f = fk - k0 + for i in range(colorwheel.shape[1]): + tmp = colorwheel[:,i] + col0 = tmp[k0] / 255.0 + col1 = tmp[k1] / 255.0 + col = (1-f)*col0 + f*col1 + idx = (rad <= 1) + col[idx] = 1 - rad[idx] * (1-col[idx]) + col[~idx] = col[~idx] * 0.75 # out of range + # Note the 2-i => BGR instead of RGB + ch_idx = 2-i if convert_to_bgr else i + flow_image[:,:,ch_idx] = np.floor(255 * col) + return flow_image + + +def flow_to_image(flow_uv, clip_flow=None, convert_to_bgr=False): + """ + Expects a two dimensional flow image of shape. + Args: + flow_uv (np.ndarray): Flow UV image of shape [H,W,2] + clip_flow (float, optional): Clip maximum of flow values. Defaults to None. + convert_to_bgr (bool, optional): Convert output image to BGR. Defaults to False. + Returns: + np.ndarray: Flow visualization image of shape [H,W,3] + """ + assert flow_uv.ndim == 3, 'input flow must have three dimensions' + assert flow_uv.shape[2] == 2, 'input flow must have shape [H,W,2]' + if clip_flow is not None: + flow_uv = np.clip(flow_uv, 0, clip_flow) + u = flow_uv[:,:,0] + v = flow_uv[:,:,1] + rad = np.sqrt(np.square(u) + np.square(v)) + rad_max = np.max(rad) + epsilon = 1e-5 + u = u / (rad_max + epsilon) + v = v / (rad_max + epsilon) + return flow_uv_to_colors(u, v, convert_to_bgr) \ No newline at end of file diff --git a/utils/raft.py b/utils/raft.py new file mode 100644 index 0000000..accbebf --- /dev/null +++ b/utils/raft.py @@ -0,0 +1,146 @@ +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F + +from utils.update import BasicUpdateBlock +from utils.extractor import BasicEncoder +from utils.corr import CorrBlock, AlternateCorrBlock +from utils.utils import coords_grid, upflow8 + +try: + autocast = torch.cuda.amp.autocast +except: + # dummy autocast for PyTorch < 1.6 + class autocast: + def __init__(self, enabled): + pass + def __enter__(self): + pass + def __exit__(self, *args): + pass + + +class RAFT(nn.Module): + def __init__(self, args): + super(RAFT, self).__init__() + self.args = args + """ + if args.small: + self.hidden_dim = hdim = 96 + self.context_dim = cdim = 64 + args.corr_levels = 4 + args.corr_radius = 3 + """ + + self.hidden_dim = hdim = 128 + self.context_dim = cdim = 128 + args.corr_levels = 4 + args.corr_radius = 4 + + if 'dropout' not in self.args: + self.args.dropout = 0 + + if 'alternate_corr' not in self.args: + self.args.alternate_corr = False + + # feature network, context network, and update block + """ + if args.small: + self.fnet = SmallEncoder(output_dim=128, norm_fn='instance', dropout=args.dropout) + self.cnet = SmallEncoder(output_dim=hdim+cdim, norm_fn='none', dropout=args.dropout) + self.update_block = SmallUpdateBlock(self.args, hidden_dim=hdim) + """ + + self.fnet = BasicEncoder(output_dim=256, norm_fn='instance', dropout=args.dropout) + self.cnet = BasicEncoder(output_dim=hdim+cdim, norm_fn='batch', dropout=args.dropout) + self.update_block = BasicUpdateBlock(self.args, hidden_dim=hdim) + + def freeze_bn(self): + for m in self.modules(): + if isinstance(m, nn.BatchNorm2d): + m.eval() + + def initialize_flow(self, img): + """ Flow is represented as difference between two coordinate grids flow = coords1 - coords0""" + N, C, H, W = img.shape + coords0 = coords_grid(N, H//8, W//8).to(img.device) + coords1 = coords_grid(N, H//8, W//8).to(img.device) + + # optical flow computed as difference: flow = coords1 - coords0 + return coords0, coords1 + + def upsample_flow(self, flow, mask): + """ Upsample flow field [H/8, W/8, 2] -> [H, W, 2] using convex combination """ + N, _, H, W = flow.shape + mask = mask.view(N, 1, 9, 8, 8, H, W) + mask = torch.softmax(mask, dim=2) + + up_flow = F.unfold(8 * flow, [3,3], padding=1) + up_flow = up_flow.view(N, 2, 9, 1, 1, H, W) + + up_flow = torch.sum(mask * up_flow, dim=2) + up_flow = up_flow.permute(0, 1, 4, 2, 5, 3) + return up_flow.reshape(N, 2, 8*H, 8*W) + + + def forward(self, image1, image2, iters=12, flow_init=None, upsample=True, test_mode=False): + """ Estimate optical flow between pair of frames """ + + image1 = 2 * (image1 / 255.0) - 1.0 + image2 = 2 * (image2 / 255.0) - 1.0 + + image1 = image1.contiguous() + image2 = image2.contiguous() + + hdim = self.hidden_dim + cdim = self.context_dim + + # run the feature network + #with autocast(enabled=self.args.mixed_precision): + with autocast(): + fmap1, fmap2 = self.fnet([image1, image2]) + + fmap1 = fmap1.float() + fmap2 = fmap2.float() + if self.args.alternate_corr: + corr_fn = AlternateCorrBlock(fmap1, fmap2, radius=self.args.corr_radius) + else: + corr_fn = CorrBlock(fmap1, fmap2, radius=self.args.corr_radius) + + # run the context network + with autocast(): + cnet = self.cnet(image1) + net, inp = torch.split(cnet, [hdim, cdim], dim=1) + net = torch.tanh(net) + inp = torch.relu(inp) + + coords0, coords1 = self.initialize_flow(image1) + + if flow_init is not None: + coords1 = coords1 + flow_init + + flow_predictions = [] + for itr in range(iters): + coords1 = coords1.detach() + corr = corr_fn(coords1) # index correlation volume + + flow = coords1 - coords0 + with autocast(): + net, up_mask, delta_flow = self.update_block(net, inp, corr, flow) + + # F(t+1) = F(t) + \Delta(t) + coords1 = coords1 + delta_flow + + # upsample predictions + if up_mask is None: + flow_up = upflow8(coords1 - coords0) + else: + flow_up = self.upsample_flow(coords1 - coords0, up_mask) + + flow_predictions.append(flow_up) + + if test_mode: + return coords1 - coords0, flow_up + + return flow_predictions \ No newline at end of file diff --git a/utils/update.py b/utils/update.py new file mode 100644 index 0000000..9d485fc --- /dev/null +++ b/utils/update.py @@ -0,0 +1,136 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + + +class FlowHead(nn.Module): + def __init__(self, input_dim=128, hidden_dim=256): + super(FlowHead, self).__init__() + self.conv1 = nn.Conv2d(input_dim, hidden_dim, 3, padding=1) + self.conv2 = nn.Conv2d(hidden_dim, 2, 3, padding=1) + self.relu = nn.ReLU(inplace=True) + + def forward(self, x): + return self.conv2(self.relu(self.conv1(x))) + +class ConvGRU(nn.Module): + def __init__(self, hidden_dim=128, input_dim=192+128): + super(ConvGRU, self).__init__() + self.convz = nn.Conv2d(hidden_dim+input_dim, hidden_dim, 3, padding=1) + self.convr = nn.Conv2d(hidden_dim+input_dim, hidden_dim, 3, padding=1) + self.convq = nn.Conv2d(hidden_dim+input_dim, hidden_dim, 3, padding=1) + + def forward(self, h, x): + hx = torch.cat([h, x], dim=1) + + z = torch.sigmoid(self.convz(hx)) + r = torch.sigmoid(self.convr(hx)) + q = torch.tanh(self.convq(torch.cat([r*h, x], dim=1))) + + h = (1-z) * h + z * q + return h + +class SepConvGRU(nn.Module): + def __init__(self, hidden_dim=128, input_dim=192+128): + super(SepConvGRU, self).__init__() + self.convz1 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (1,5), padding=(0,2)) + self.convr1 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (1,5), padding=(0,2)) + self.convq1 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (1,5), padding=(0,2)) + + self.convz2 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (5,1), padding=(2,0)) + self.convr2 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (5,1), padding=(2,0)) + self.convq2 = nn.Conv2d(hidden_dim+input_dim, hidden_dim, (5,1), padding=(2,0)) + + + def forward(self, h, x): + # horizontal + hx = torch.cat([h, x], dim=1) + z = torch.sigmoid(self.convz1(hx)) + r = torch.sigmoid(self.convr1(hx)) + q = torch.tanh(self.convq1(torch.cat([r*h, x], dim=1))) + h = (1-z) * h + z * q + + # vertical + hx = torch.cat([h, x], dim=1) + z = torch.sigmoid(self.convz2(hx)) + r = torch.sigmoid(self.convr2(hx)) + q = torch.tanh(self.convq2(torch.cat([r*h, x], dim=1))) + h = (1-z) * h + z * q + + return h + +class SmallMotionEncoder(nn.Module): + def __init__(self, args): + super(SmallMotionEncoder, self).__init__() + cor_planes = args.corr_levels * (2*args.corr_radius + 1)**2 + self.convc1 = nn.Conv2d(cor_planes, 96, 1, padding=0) + self.convf1 = nn.Conv2d(2, 64, 7, padding=3) + self.convf2 = nn.Conv2d(64, 32, 3, padding=1) + self.conv = nn.Conv2d(128, 80, 3, padding=1) + + def forward(self, flow, corr): + cor = F.relu(self.convc1(corr)) + flo = F.relu(self.convf1(flow)) + flo = F.relu(self.convf2(flo)) + cor_flo = torch.cat([cor, flo], dim=1) + out = F.relu(self.conv(cor_flo)) + return torch.cat([out, flow], dim=1) + +class BasicMotionEncoder(nn.Module): + def __init__(self, args): + super(BasicMotionEncoder, self).__init__() + cor_planes = args.corr_levels * (2*args.corr_radius + 1)**2 + self.convc1 = nn.Conv2d(cor_planes, 256, 1, padding=0) + self.convc2 = nn.Conv2d(256, 192, 3, padding=1) + self.convf1 = nn.Conv2d(2, 128, 7, padding=3) + self.convf2 = nn.Conv2d(128, 64, 3, padding=1) + self.conv = nn.Conv2d(64+192, 128-2, 3, padding=1) + + def forward(self, flow, corr): + cor = F.relu(self.convc1(corr)) + cor = F.relu(self.convc2(cor)) + flo = F.relu(self.convf1(flow)) + flo = F.relu(self.convf2(flo)) + + cor_flo = torch.cat([cor, flo], dim=1) + out = F.relu(self.conv(cor_flo)) + return torch.cat([out, flow], dim=1) + +class SmallUpdateBlock(nn.Module): + def __init__(self, args, hidden_dim=96): + super(SmallUpdateBlock, self).__init__() + self.encoder = SmallMotionEncoder(args) + self.gru = ConvGRU(hidden_dim=hidden_dim, input_dim=82+64) + self.flow_head = FlowHead(hidden_dim, hidden_dim=128) + + def forward(self, net, inp, corr, flow): + motion_features = self.encoder(flow, corr) + inp = torch.cat([inp, motion_features], dim=1) + net = self.gru(net, inp) + delta_flow = self.flow_head(net) + + return net, None, delta_flow + +class BasicUpdateBlock(nn.Module): + def __init__(self, args, hidden_dim=128, input_dim=128): + super(BasicUpdateBlock, self).__init__() + self.args = args + self.encoder = BasicMotionEncoder(args) + self.gru = SepConvGRU(hidden_dim=hidden_dim, input_dim=128+hidden_dim) + self.flow_head = FlowHead(hidden_dim, hidden_dim=256) + + self.mask = nn.Sequential( + nn.Conv2d(128, 256, 3, padding=1), + nn.ReLU(inplace=True), + nn.Conv2d(256, 64*9, 1, padding=0)) + + def forward(self, net, inp, corr, flow, upsample=True): + motion_features = self.encoder(flow, corr) + inp = torch.cat([inp, motion_features], dim=1) + + net = self.gru(net, inp) + delta_flow = self.flow_head(net) + + # scale mask to balence gradients + mask = .25 * self.mask(net) + return net, mask, delta_flow diff --git a/utils/utils.py b/utils/utils.py new file mode 100644 index 0000000..4f94acf --- /dev/null +++ b/utils/utils.py @@ -0,0 +1,82 @@ +import torch +import torch.nn.functional as F +import numpy as np +from scipy import interpolate + + +class InputPadder: + """ Pads images such that dimensions are divisible by 8 """ + def __init__(self, dims, mode='sintel'): + self.ht, self.wd = dims[-2:] + pad_ht = (((self.ht // 8) + 1) * 8 - self.ht) % 8 + pad_wd = (((self.wd // 8) + 1) * 8 - self.wd) % 8 + if mode == 'sintel': + self._pad = [pad_wd//2, pad_wd - pad_wd//2, pad_ht//2, pad_ht - pad_ht//2] + else: + self._pad = [pad_wd//2, pad_wd - pad_wd//2, 0, pad_ht] + + def pad(self, *inputs): + return [F.pad(x, self._pad, mode='replicate') for x in inputs] + + def unpad(self,x): + ht, wd = x.shape[-2:] + c = [self._pad[2], ht-self._pad[3], self._pad[0], wd-self._pad[1]] + return x[..., c[0]:c[1], c[2]:c[3]] + +def forward_interpolate(flow): + flow = flow.detach().cpu().numpy() + dx, dy = flow[0], flow[1] + + ht, wd = dx.shape + x0, y0 = np.meshgrid(np.arange(wd), np.arange(ht)) + + x1 = x0 + dx + y1 = y0 + dy + + x1 = x1.reshape(-1) + y1 = y1.reshape(-1) + dx = dx.reshape(-1) + dy = dy.reshape(-1) + + valid = (x1 > 0) & (x1 < wd) & (y1 > 0) & (y1 < ht) + x1 = x1[valid] + y1 = y1[valid] + dx = dx[valid] + dy = dy[valid] + + flow_x = interpolate.griddata( + (x1, y1), dx, (x0, y0), method='nearest', fill_value=0) + + flow_y = interpolate.griddata( + (x1, y1), dy, (x0, y0), method='nearest', fill_value=0) + + flow = np.stack([flow_x, flow_y], axis=0) + return torch.from_numpy(flow).float() + + +def bilinear_sampler(img, coords, mode='bilinear', mask=False): + """ Wrapper for grid_sample, uses pixel coordinates """ + H, W = img.shape[-2:] + xgrid, ygrid = coords.split([1,1], dim=-1) + xgrid = 2*xgrid/(W-1) - 1 + ygrid = 2*ygrid/(H-1) - 1 + + grid = torch.cat([xgrid, ygrid], dim=-1) + img = F.grid_sample(img, grid, align_corners=True) + + if mask: + mask = (xgrid > -1) & (ygrid > -1) & (xgrid < 1) & (ygrid < 1) + return img, mask.float() + + return img + + +def coords_grid(batch, ht, wd): + coords = torch.meshgrid(torch.arange(ht), torch.arange(wd)) + coords = torch.stack(coords[::-1], dim=0).float() + return coords[None].repeat(batch, 1, 1, 1) + + +def upflow8(flow, mode='bilinear'): + new_size = (8 * flow.shape[2], 8 * flow.shape[3]) + return 8 * F.interpolate(flow, size=new_size, mode=mode, align_corners=True) \ No newline at end of file