예제 #1
0
    print("CUDA will be used")
else:
    print("CUDA won't be used")

data_path = sys.argv[1]
models_rep = sys.argv[2]

BATCH_SIZE = 100
HEIGHT = 80
WIDTH = 80

print(f"Loading dataset from {data_path}...")
ds = CustomDataSetSimple(nb_digit=5, nb_samples=100)
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=BATCH_SIZE, shuffle=False)
model = to_best_device(SimpleModel())

do_load_model(models_rep, model, exit_on_error=True)

model.eval()
start = time.time()
results = []


def from_target_labels(target: torch.Tensor) -> str:
    """

    :param target: tensor of shape (n) with n being the length of the sequence
    and each element containing the index of one of the character
    :return: a trimmed string containing only relevant characters
    """
예제 #2
0
        selected_values = losses[-val_patience:]
        idx_min = selected_values.index(min(selected_values))
        return idx_min < (val_patience / 2 - 1)
    else:
        return False

print(f"Loading dataset ...")
ds = CustomRawDataSet(root_dir=data_path)
len_train = int(len(ds) * 0.8)
train_set, val_set = torch.utils.data.random_split(ds, [len_train, len(ds) - len_train])
#imshow(train_set[5][0])
#exit()
print(f"...dataset loaded")
dataloader = DataLoader(train_set, batch_size=BATCH_SIZE, shuffle=True)
dataloader_val = DataLoader(val_set, batch_size=BATCH_SIZE, shuffle=False)
model = to_best_device(CRNN())
best_model = to_best_device(CRNN())


if load_model:
    if not do_load_model(models_rep, model):
        model.initialize_weights()
else:
    if not os.path.exists(models_rep):
        os.makedirs(models_rep)
    model.initialize_weights()

model.train()
loss = to_best_device(nn.CTCLoss(blank=0, zero_infinity=True, reduction="mean"))
#optimizer = torch.optim.AdamW(model.parameters(), lr=LEARNING_RATE)
#scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, 'min', cooldown=0, verbose=True, patience=10)
예제 #3
0
    print("CUDA won't be used")

data_path = sys.argv[1]
models_rep = sys.argv[2]
MAX_SENTENCE_LENGTH = int(sys.argv[3])

BATCH_SIZE = 100
HEIGHT = 80
WIDTH = 80


print(f"Loading dataset from {data_path}...")
ds = CustomDataSetSimple(nb_digit=MAX_SENTENCE_LENGTH, nb_samples=100)
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=BATCH_SIZE, shuffle=False)
model = to_best_device(MultiMdlstm(height=10, width=MAX_SENTENCE_LENGTH, nb_classes=11))

do_load_model(models_rep, model, exit_on_error=True)

model.eval()
start = time.time()
results = []


def from_target_labels(target: torch.Tensor) -> str:
    """

    :param target: tensor of shape (n) with n being the length of the sequence
    and each element containing the index of one of the character
    :return: a trimmed string containing only relevant characters
    """
예제 #4
0
else:
    print("CUDA won't be used")

args = parse_args()

data_path = args.data_path
models_rep = args.models_path

BATCH_SIZE = int(args.batch)
MAX_SENTENCE_LENGTH = int(args.sentence)

print(f"Loading dataset from {data_path}...")
ds = CustomRawDataSet(root_dir=data_path)
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=BATCH_SIZE, shuffle=False)
model = to_best_device(CRNN())

do_load_model(models_rep, model, exit_on_error=True)

model.eval()
start = time.time()
results = []


def from_predicted_labels(predicted: torch.Tensor) -> str:
    """

    :param predicted: tensor of shape (L, X) with :
    - L being the length of the sequence
    - X being the size of the list of known characters
    and each element containing the index of one of the character
예제 #5
0
def imshow(inp):
    inp = inp.numpy()[0]
    mean = 0.1307
    std = 0.3081
    inp = ((mean * inp) + std)
    plt.imshow(inp, cmap='gray')
    plt.show()

print(f"Loading dataset ...")
ds = CustomDataSetSimple(nb_digit=MAX_SENTENCE_LENGTH, nb_samples=1000)
#imshow(ds[5][0])
#exit()
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=int(len(ds) / 3), shuffle=True)
model = to_best_device(MultiMdlstm(height=10, width=MAX_SENTENCE_LENGTH, nb_classes=11))
best_model = to_best_device(MultiMdlstm(height=10, width=MAX_SENTENCE_LENGTH, nb_classes=11))


if load_model:
    if not do_load_model(models_rep, model):
        model.initialize_weights()
else:
    model.initialize_weights()

model.train()
loss = to_best_device(nn.CTCLoss(blank=10, zero_infinity=True, reduction="sum"))
optimizer = torch.optim.AdamW(model.parameters(), lr=LEARNING_RATE)
scheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer,
                                          max_lr=MAX_LR,
                                          steps_per_epoch=int(len(dataloader)),
예제 #6
0
def imshow(inp):
    inp = inp.numpy()[0]
    mean = 0.1307
    std = 0.3081
    inp = ((mean * inp) + std)
    plt.imshow(inp, cmap='gray')
    plt.show()


print(f"Loading dataset from {data_path}...")
ds = get_dataset(data_path, width=WIDTH, height=HEIGHT, target_length=MAX_SENTENCE_LENGTH)
#imshow(ds[5][0])
#exit()
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=int(len(ds) / 3), shuffle=True)
model = to_best_device(ParagraphReader(height=HEIGHT, width=WIDTH, nb_layers=3, feature_maps_multiplicity=features_multiplicity))
best_model = to_best_device(ParagraphReader(height=HEIGHT, width=WIDTH, nb_layers=3, feature_maps_multiplicity=features_multiplicity))


if load_model:
    if not do_load_model(models_rep, model):
        model.initialize_weights()
else:
    model.initialize_weights()

model.train()
loss = to_best_device(nn.CTCLoss(blank=blank_id, zero_infinity=True, reduction="sum"))
optimizer = torch.optim.AdamW(model.parameters(), lr=LEARNING_RATE)
scheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer,
                                          max_lr=MAX_LR,
                                          steps_per_epoch=int(len(dataloader)),
예제 #7
0
def imshow(inp):
    inp = inp.numpy()[0]
    mean = 0.1307
    std = 0.3081
    inp = ((mean * inp) + std)
    plt.imshow(inp, cmap='gray')
    plt.show()


print(f"Loading dataset ...")
ds = CustomDataSetSimple(nb_digit=MAX_SENTENCE_LENGTH, nb_samples=1000)
#imshow(ds[5][0])
#exit()
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=int(len(ds) / 3), shuffle=True)
model = to_best_device(SimpleModel())
best_model = to_best_device(SimpleModel())

if load_model:
    if not do_load_model(models_rep, model):
        model.initialize_weights()
else:
    model.initialize_weights()

model.train()
loss = to_best_device(nn.CTCLoss(blank=10, zero_infinity=True,
                                 reduction="sum"))
optimizer = torch.optim.AdamW(model.parameters(), lr=LEARNING_RATE)
scheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer,
                                                max_lr=MAX_LR,
                                                steps_per_epoch=int(
예제 #8
0
BATCH_SIZE = 100
HEIGHT = 40
WIDTH = 80
MAX_SENTENCE_LENGTH = int(sys.argv[3])
features_multiplicity = int(sys.argv[4])

print(f"Loading dataset from {data_path}...")
ds = get_dataset(data_path,
                 width=WIDTH,
                 height=HEIGHT,
                 target_length=MAX_SENTENCE_LENGTH)
print(f"...dataset loaded")
dataloader = DataLoader(ds, batch_size=BATCH_SIZE, shuffle=False)
model = to_best_device(
    ParagraphReader(height=HEIGHT,
                    width=WIDTH,
                    nb_layers=3,
                    feature_maps_multiplicity=features_multiplicity))

do_load_model(models_rep, model, exit_on_error=True)

model.eval()
start = time.time()
results = []


def from_target_labels(target: torch.Tensor) -> str:
    """

    :param target: tensor of shape (n) with n being the length of the sequence
    and each element containing the index of one of the character