Esempio n. 1
0
def proofread():
    # 开始测试。此句是防止改变权值。
    net.eval()
    rand = np.random.randint(0, len(image_list))
    with open(cfg.OUTPUT.LOGGING, 'a') as f:
        print('测试图片为:',
              image_list[rand],
              '\n对应Obj为:',
              label_list[rand],
              file=f)
    test = SingleTest(img_path=image_path + image_list[rand])
    image = test.output_data(img_path=image_path + image_list[rand])
    image = image.expand(cfg.TEST.IMAGE_BATCH, cfg.TEST.IMAGE_CHANNEL,
                         cfg.TEST.IMAGE_LENGTH, cfg.TEST.IMAGE_HEIGHT)
    image = image.to(device)
    mkdir(cfg.TEST.SAVE_OBJ)
    with torch.no_grad():
        predict = net(image)[0]
        vertics, faces = get_vertics(label_list[rand])
        vertics = torch.tensor(
            vertics.reshape(3, cfg.INPUT.VERTICS_NUM // 3).T.reshape(
                cfg.INPUT.VERTICS_NUM))
        predict = predict.cpu().numpy()
        predict = torch.tensor(pca.inverse_transform(predict))
        loss = criterion(vertics, predict)
        with open(cfg.OUTPUT.LOGGING, 'a') as f:
            print('Loss =', loss.item(), file=f)
    # 输出为.obj文件
    pre_vertics = []
    for order in range(len(predict) // 3):
        pre_vertics.append([
            predict[3 * order], predict[3 * order + 1], predict[3 * order + 2]
        ])
    writeObj(cfg.TEST.SAVE_OBJ + '/' + label_list[rand], pre_vertics, faces)
Esempio n. 2
0
def proofread():
    # 开始测试。此句是防止改变权值。
    net.eval()
    rand = np.random.randint(0, len(image_list))
    with open(cfg.OUTPUT.LOGGING, 'a') as f:
        print('测试图片为:', image_list[rand], '\n对应Obj为:', label_list[rand], file=f)
    test = SingleTest(img_path=image_path + image_list[rand])
    image = test.output_data(img_path=image_path + image_list[rand])
    image = image.expand(cfg.TEST.IMAGE_BATCH, cfg.TEST.IMAGE_CHANNEL, cfg.TEST.IMAGE_LENGTH, cfg.TEST.IMAGE_HEIGHT)
    image = image.to(device)
    with torch.no_grad():
        predict = net(image)[0]
        vertics, faces = get_vertics(rand)
        vertics = torch.Tensor(vertics).to(device)
        loss = criterion(vertics, predict)
        with open(cfg.OUTPUT.LOGGING, 'a') as f:
            print('测试图片输出数据Loss =', loss.item(), file=f)
    # 输出为.obj文件
    mkdir(cfg.TEST.SAVE_OBJ)
    predict = predict.cpu().numpy()
    pre_vertics = []
    for order in range(len(predict) // cfg.TEST.VERTICS_DIMENSION):
        pre_vertics.append([predict[order], predict[order + len(predict) // cfg.TEST.VERTICS_DIMENSION],
                            predict[order + len(predict) // cfg.TEST.VERTICS_DIMENSION * 2]])
    writeObj(cfg.TEST.SAVE_OBJ + '/' + label_list[rand], pre_vertics, faces)
Esempio n. 3
0
def save(number):
    mkdir(cfg.OUTPUT.PARAMETER)
    torch.save(net.state_dict(), cfg.OUTPUT.PARAMETER + '/' + str(number + 1) + '_CNN.pkl',
               _use_new_zipfile_serialization=False)
    torch.save(optimizer.state_dict(),  cfg.OUTPUT.PARAMETER + '/' + str(number + 1) + '_opt.pkl',
               _use_new_zipfile_serialization=False)
    print('\n网络参数已保存!\n')
Esempio n. 4
0
def check_before_train(images, labels, faces, item):
    restore(images).convert('L')
    vertics = []
    for i in range(len(labels) // 3):
        vertics.append([
            labels[i], labels[i + len(labels) // 3],
            labels[i + 2 * len(labels) // 3]
        ])
    mkdir(cfg.INPUT.CHECK)
    writeObj(cfg.INPUT.CHECK + str(item) + '_check.obj', vertics, faces)
Esempio n. 5
0
def whole_proofread():
    net.eval()
    for rand in range(len(image_list)):
        print('测试图片为:', image_list[rand])
        test = SingleTest(img_path=image_path + image_list[rand])
        image = test.output_data(img_path=image_path + image_list[rand])
        image = image.expand(cfg.TEST.IMAGE_BATCH, cfg.TEST.IMAGE_CHANNEL,
                             cfg.TEST.IMAGE_LENGTH, cfg.TEST.IMAGE_HEIGHT)
        image = image.to(device)
        mkdir(cfg.TEST.SAVE_OBJ)
        with torch.no_grad():
            predict = net(image)[0]
            vertics, faces = get_vertics(0)
            predict = predict.cpu().numpy()
            predict = torch.tensor(pca.inverse_transform(predict))
        # 输出为.obj文件
        pre_vertics = []
        for order in range(len(predict) // 3):
            pre_vertics.append([
                predict[3 * order], predict[3 * order + 1],
                predict[3 * order + 2]
            ])
        writeObj(cfg.TEST.SAVE_OBJ + '/' + str(rand) + '.obj', pre_vertics,
                 faces)
Esempio n. 6
0
import sys

sys.path.insert(0, '../../')
import os
from ConvNet.config.defaults import get_cfg_defaults
from PIL import Image
from torchvision import transforms
from ConvNet.tools.preprocess_data import mkdir

if __name__ == '__main__':
    print('The photo data is being resized...')
    cfg = get_cfg_defaults()
    cfg.merge_from_file(cfg.MODEL.CONFIG + os.listdir(cfg.MODEL.CONFIG)[-1])
    transform = transforms.Compose([
        transforms.Resize(cfg.DATASETS.TRANSFORM_RESIZE),
    ])

    image_path = cfg.DATASETS.IMAGES_PATH
    save_image_path = cfg.INPUT.SAVE_RESIZE_IMAGES
    images = os.listdir(image_path)
    mkdir(save_image_path)
    for i in range(len(images)):
        figure = Image.open(image_path + images[i]).convert('L')
        new_figure = transform(figure)
        new_figure.save(save_image_path + images[i])