def test_multisource(Res_model, A_model, featurenet, main=False):
    Res_model.eval()
    test_record = []

    #    testset = FAB_DataSet(TEST_DIR, ['people_to_people.json']) # use this for multispeaker
    testset = FMA_DataSet(TEST_DIR, ['captaincook_white.json'], TEST_DIR,
                          ['captaincook_clean.json'])
    if main:
        testloader = torch.utils.data.DataLoader(dataset = testset, \
            batch_size = BS, \
            shuffle = False)
    else:
        testloader = torch.utils.data.DataLoader(dataset = testset, \
            batch_size = BS, \
            shuffle = False)

    for i, data in enumerate(testloader, 0):
        # get mix spec & label
        feat_data, mix_specs, a_specs = data  # use this for denoise test

        print("mix_specs = ", np.sum(np.array(mix_specs)))
        mix_specs = mel_norm(mix_specs) / 10  # use this for denoise test
        #        feat_data, a_specs, b_specs = data  # use this for multispeaker test
        #        mix_specs = mel_norm(mix(a_specs, b_specs)) # use this for multispeaker test
        print("mix_specs = ", np.sum(np.array(mix_specs)))

        target_specs = mel_norm(a_specs) / 10
        #        b_specs = mel_norm(b_specs) # use this for multispeaker test
        #        target_specs = a_specs       # use this for multispeaker test

        if ATTEND:
            # get feature
            feats = featurenet.feature(feat_data)
            # feed in feature to ANet
            a7, a6, a5, a4, a3, a2 = A_model(feats)
            # Res_model
            tops = Res_model.upward(mix_specs, a7, a6, a5, a4, a3, a2)
        else:
            tops = Res_model.upward(mix_specs)

        #top_record.append(tops.detach().numpy().tolist())
        outputs = Res_model.downward(tops, shortcut=True)
        loss_test = criterion(outputs, target_specs)

        if (not main) or (main and i % 1 == 0):
            # print images: mix, target, attention, separated
            tarr = (target_specs[0]).view(256, 128).detach().numpy()
            #mask = (b_specs[0]).view(256, 128).detach().numpy()
            mixx = (mix_specs[0]).view(256, 128).detach().numpy()
            outt = (outputs[0]).view(256, 128).detach().numpy()

            cv2.imwrite(
                os.path.join(ROOT_DIR, 'results/people_to_people/' + str(i) +
                             "_tar.png"), tarr)
            #            cv2.imwrite(os.path.join(ROOT_DIR, 'results/people_to_people/' + str(i)  + "_mask.png"), mask)
            cv2.imwrite(
                os.path.join(ROOT_DIR, 'results/people_to_people/' + str(i) +
                             "_mix.png"), mixx)
            cv2.imwrite(
                os.path.join(ROOT_DIR, 'results/people_to_people/' + str(i) +
                             "_sep.png"), outt)

            print(np.mean(inv_mel(tarr[-10:])), np.mean(inv_mel(mixx[-10:])))

    return np.average(test_record)
Ejemplo n.º 2
0
# ============================================

from mel import mel_norm, mel
zeros = torch.zeros(bs, 256, 128)

Res_model.eval()
for epo in range(1):
    # train
    for i, data in enumerate(testloader, 0):
        # get mix spec & label
        feat_data, _, a_specs = data

        feat_data = feat_data.squeeze()
        a_specs = a_specs.squeeze()

        a_specs = mel_norm(a_specs)
        target_specs = a_specs

        # get feature
        feats = featurenet.feature(feat_data)

        # feed in feature to ANet
        a7, a6, a5, a4, a3, a2 = A_model(feats)

        # Res_model
        tops = Res_model.upward(a_specs, a7, a6, a5, a4, a3, a2)

        outputs = Res_model.downward(tops, shortcut = True).squeeze()

        loss_train = criterion(outputs, target_specs)
Ejemplo n.º 3
0
zeros = torch.zeros(BS, 256, 128)

for epo in range(epoch):
    # train
    for i, data in enumerate(mixloader, 0):

        Res_model.train()

        # get mix spec & label
        feat_data, a_specs, b_specs = data

        feat_data = feat_data.squeeze()
        #a_specs = norm(a_specs.squeeze())
        #b_specs = norm(b_specs.squeeze())

        mix_specs = mel_norm(mix(a_specs, b_specs))
        target_specs = mel_norm(a_specs)

        #feat_optimizer.zero_grad()
        anet_optimizer.zero_grad()
        res_optimizer.zero_grad()

        # get feature
        feats = featurenet.feature(feat_data)

        # feed in feature to ANet
        a7, a6, a5, a4, a3, a2 = A_model(feats)

        # Res_model
        tops = Res_model.upward(mix_specs, a7, a6, a5, a4, a3, a2)
Ejemplo n.º 4
0
except:
    print("model not available")

#=============================================
#        Loss
#=============================================
criterion = nn.MSELoss()

loss_record = []

from mel import mel_norm

model.eval()
for i, data in enumerate(testloader, 0):

    data = mel_norm(data)

    top = model.upward(data)
    outputs = model.downward(top, shortcut=True)

    targets = data.view(bs, 1, 256, 128)
    outputs = outputs.view(bs, 1, 256, 128)
    loss = criterion(outputs, targets)

    loss_record.append(loss.item())

    print('[%d] loss: %.3f' % (i, loss.item()))

    if i % 1 == 0:
        inn = data[0].view(256, 128).detach().numpy() * 255
        cv2.imwrite(
#        Train
#=============================================

from mel import mel, norm, mel_norm
zeros = torch.zeros(BS, 256, 128)

Res_model.train()
for epo in range(epoch):
    # train
    for i, data in enumerate(mixloader, 0):
        # get mix spec & label
        feat_data, a_specs, _ = data

        feat_data = feat_data.squeeze()

        target_specs = mel_norm(a_specs.squeeze())

        #        a_specs = a_specs.squeeze()

        #        a_specs = norm(a_specs)
        #        target_specs = a_specs

        #       feat_optimizer.zero_grad()
        anet_optimizer.zero_grad()
        res_optimizer.zero_grad()

        # get feature
        feats = featurenet.feature(feat_data)

        # feed in feature to ANet
        a7, a6, a5, a4, a3, a2 = A_model(feats)