Exemple #1
0
                board_train.add_scalar('D/loss_D', loss_D.item(), step)

                print(
                    "step={}, loss_G={:.5f}, loss_l1={:.5f}, loss_vgg={:.5f}".
                    format(step, loss_G.item(), loss_l1.item(),
                           loss_vgg.item(), loss_adv.item()))
                print(
                    "step={}, loss_D={:.5f}, loss_D_real={:.5f}, loss_D_fake={:.5f}"
                    .format(step, loss_D.item(), loss_D_real.item(),
                            loss_D_fake.item()))

                # visual images
                visuals = [
                    [pose_parse_onehot_vis, pose_gt, output],
                ]
                board_add_images(board_train, 'train', visuals, step + 1)

            #====================================================
            # valid データでの処理
            #====================================================
            if (step % args.n_display_valid_step == 0):
                loss_G_total, loss_l1_total, loss_vgg_total, loss_adv_total = 0, 0, 0, 0
                loss_D_total, loss_D_real_total, loss_D_fake_total = 0, 0, 0
                n_valid_loop = 0
                for iter, inputs in enumerate(tqdm(dloader_valid,
                                                   desc="valid")):
                    model_G.eval()
                    model_D.eval()

                    # 一番最後のミニバッチループで、バッチサイズに満たない場合は無視する(後の計算で、shape の不一致をおこすため)
                    if inputs["pose_parse_onehot"].shape[
Exemple #2
0
                                loss_rec.item()))
                    print(
                        "step={}, loss_D={:.5f}, loss_D_real={:.5f}, loss_D_fake={:.5f}"
                        .format(step, loss_D.item(), loss_D_real.item(),
                                loss_D_fake.item()))

                    # visual images
                    """
                    visuals = [
                        [ noize_image_z, image_gt, output ],
                    ]
                    """
                    visuals = [
                        [image_gt, output],
                    ]
                    board_add_images(board_train, 'train', visuals, step + 1)

                    for i in range(len(output_list)):
                        visuals = [
                            [image_gt_list[i], output_list[i]],
                        ]
                        board_add_images(board_train,
                                         'train_progress_{}'.format(i),
                                         visuals, step + 1)

            #====================================================
            # valid データでの処理
            #====================================================
            """
            if( step != 0 and ( step % args.n_display_valid_step == 0 ) ):
                loss_G_total, loss_l1_total, loss_vgg_total, loss_adv_total = 0, 0, 0, 0
        image_name = inputs["image_name"]
        image = inputs["image"].to(device)
        if (args.debug and n_print > 0):
            print("image.shape : ", image.shape)

        #----------------------------------------------------
        # 生成器の推論処理
        #----------------------------------------------------
        with torch.no_grad():
            output = model_G(image)
            if (args.debug and n_print > 0):
                print("output.shape : ", output.shape)

        #====================================================
        # 推論結果の保存
        #====================================================
        save_image_w_norm(
            output,
            os.path.join(args.results_dir, args.exper_name, "output",
                         image_name[0]))

        # tensorboard
        visuals = [
            [image, output],
        ]
        board_add_images(board_test, 'test', visuals, step + 1)

        n_print -= 1
        if (step >= args.n_samplings):
            break
Exemple #4
0
            materials=materials) * 2.0 - 1.0
        save_image(
            mesh_img_tsr.transpose(1, 3).transpose(2, 3),
            os.path.join(args.results_dir, args.exper_name, "mesh.png"))
        save_image(
            mesh_ffd_img_tsr.transpose(1, 3).transpose(2, 3),
            os.path.join(args.results_dir, args.exper_name, "mesh_ffd.png"))

        # visual images
        visuals = [
            [
                mesh_img_tsr.transpose(1, 3).transpose(2, 3),
                mesh_ffd_img_tsr.transpose(1, 3).transpose(2, 3)
            ],
        ]
        board_add_images(board_train, 'render_ffd', visuals, step + 1)

        #-----------------------------
        # カメラの移動&再レンダリング
        #-----------------------------
        camera_dist += 0.0
        camera_elev += 0.0
        camera_azim += 5.0
        rot_matrix, trans_matrix = look_at_view_transform(dist=camera_dist,
                                                          elev=camera_elev,
                                                          azim=camera_azim)
        new_cameras = OpenGLPerspectiveCameras(device=device,
                                               R=rot_matrix,
                                               T=trans_matrix)

        # メッシュのレンダリング
        mesh_img_tsr[:,1,:,:] = mesh_img_tsr[:,1,:,:] * mesh_img_tsr[:,-1,:,:]
        mesh_img_tsr[:,2,:,:] = mesh_img_tsr[:,2,:,:] * mesh_img_tsr[:,-1,:,:]
        mesh_img_tsr = mesh_img_tsr[:,0:3,:,:]
        mesh_img_tsr = torch.from_numpy( (mesh_img_tsr.detach().cpu().numpy() > 0).astype(np.float32) * 2.0 ).to(device) - 1.0
        """

        save_image(
            mesh_img_tsr,
            os.path.join(args.results_dir, args.exper_name,
                         "mesh_render_light.png"))

        # visual images
        visuals = [
            [mesh_img_tsr],
        ]
        board_add_images(board_train, 'render_light', visuals, step + 1)

        #-----------------------------
        # カメラの移動&再レンダリング
        #-----------------------------
        camera_dist += 0.1
        camera_elev += 5.0
        camera_azim += 5.0
        rot_matrix, trans_matrix = look_at_view_transform(dist=camera_dist,
                                                          elev=camera_elev,
                                                          azim=camera_azim)
        new_cameras = OpenGLPerspectiveCameras(device=device,
                                               R=rot_matrix,
                                               T=trans_matrix)

        # メッシュのレンダリング
                            output[:, i, :, :].unsqueeze(1)
                            for i in range(args.n_classes // 4 +
                                           1, args.n_classes // 2)
                        ],
                        [
                            output[:, i, :, :].unsqueeze(1) for i in range(
                                args.n_classes // 2 + 1, args.n_classes // 2 +
                                args.n_classes // 4)
                        ],
                        [
                            output[:, i, :, :].unsqueeze(1) for i in range(
                                args.n_classes // 2 + args.n_classes // 4 +
                                1, args.n_classes)
                        ],
                    ]
                board_add_images(board_train, 'train', visuals, step + 1)

                # visual deeplab v3+ output
                visuals = [
                    [
                        embedded[:, i, :, :].unsqueeze(1)
                        for i in range(0, args.n_classes // 4)
                    ],
                    [
                        embedded[:, i, :, :].unsqueeze(1)
                        for i in range(args.n_classes // 4 +
                                       1, args.n_classes // 2)
                    ],
                    [
                        embedded[:, i, :, :].unsqueeze(1) for i in range(
                            args.n_classes // 2 + 1, args.n_classes // 2 +
                             "source_mesh_step{}.png".format(step)),
                "source mesh")
            mesh_s_img = get_plot3d_mesh_img(mesh_s, "source mesh")
            mesh_t_img = get_plot3d_mesh_img(mesh_t, "target mesh")
            mesh_s_new_img = get_plot3d_mesh_img(mesh_s_new, "source mesh")

            mesh_s_tsr = torchvision.transforms.functional.to_tensor(
                mesh_s_img).unsqueeze(0)
            mesh_s_new_tsr = torchvision.transforms.functional.to_tensor(
                mesh_s_new_img).unsqueeze(0)
            mesh_t_tsr = torchvision.transforms.functional.to_tensor(
                mesh_t_img).unsqueeze(0)
            visuals = [
                [mesh_s_tsr, mesh_t_tsr, mesh_s_new_tsr],
            ]
            board_add_images(board_train, 'train', visuals, step + 1)

        step += 1
        n_print -= 1

        #====================================================
        # モデルの保存
        #====================================================
        if (epoch % args.n_save_epoches == 0):
            print("saved mesh")
            # Fetch the verts and faces of the final predicted mesh
            final_verts, final_faces = mesh_s_new.get_mesh_verts_faces(0)

            # Scale normalize back to the original target size
            final_verts = final_verts * scale + center
Exemple #8
0
                        [image, target, output],
                    ]
                else:
                    visuals = [
                        [image, target_rgb, output_vis_rgb],
                        [
                            output[:, i, :, :].unsqueeze(1)
                            for i in range(0, args.n_classes_target // 2)
                        ],
                        [
                            output[:, i, :, :].unsqueeze(1)
                            for i in range(args.n_classes_target // 2 +
                                           1, args.n_classes_target)
                        ],
                    ]
                board_add_images(board_train, 'train', visuals, step + 1)

                # visual deeplab v3+ output
                visuals = [
                    [
                        embedded[:, i, :, :].unsqueeze(1)
                        for i in range(0, args.n_classes_target // 2)
                    ],
                    [
                        embedded[:, i, :, :].unsqueeze(1)
                        for i in range(args.n_classes_target // 2 +
                                       1, args.n_classes_target)
                    ],
                ]
                board_add_images(board_train, 'train_deeplab_embedded',
                                 visuals, step + 1)