Example #1
0
def init_saliency_map(args,
                      agent,
                      history,
                      first_frame=0,
                      prefix='QF_',
                      resolution=75,
                      save_dir='./movies/',
                      env_name='Breakout-v0'):

    _, _, load_model, _ = build_network(agent.observation_shape,
                                        agent.action_space_n)
    #_, _,load_model_cam,_ = build_network(agent.observation_shape, agent.action_space_n)
    #_, _, load_model_guided_backprop ,_= build_guided_model(agent.observation_shape, agent.action_space_n)
    _, _, load_guided_model, _ = build_guided_model(agent.observation_shape,
                                                    agent.action_space_n)

    load_model.load_weights(args.load_network_path)
    load_guided_model.load_weights(args.load_network_path)
    #load_model_guided_backprop.load_weights(args.load_network_path)
    #load_model_grad_cam.load_weights(args.load_network_path)
    frame_1 = np.zeros((84, 84))
    total_frames = len(history['state'])
    backprop_actor = init_guided_backprop(load_model, "dense_6")
    backprop_critic = init_guided_backprop(load_model, "dense_5")
    cam_actor = init_grad_cam(load_model, "convolution2d_4")
    cam_critic = init_grad_cam(load_model, "convolution2d_4", False)
    guidedBackprop_actor = init_guided_backprop(load_guided_model, "dense_9")
    guidedBackprop_critic = init_guided_backprop(load_guided_model, "dense_8")
    gradCAM_actor = init_grad_cam(load_guided_model, "convolution2d_7")
    gradCAM_critic = init_grad_cam(load_guided_model, "convolution2d_7", False)
    fig_array = np.zeros((4, 2, num_frames, 84, 84, 3))
    for i in range(num_frames):  #total_frames): #num_frames
        ix = first_frame + i
        if ix < total_frames:  # prevent loop from trying to process a frame ix greater than rollout length
            frame = history['state'][ix].copy()
            action = history['action'][ix]  #.copy()
            frame = np.expand_dims(frame, axis=0)
            if ix % 10 == 0:
                print(ix)

            actor_gbp_heatmap = guided_backprop(frame, backprop_actor)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gradients_actor'].append(actor_gbp_heatmap)

            actor_gbp_heatmap = guided_backprop(frame, backprop_critic)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gradients_critic'].append(actor_gbp_heatmap)

            Cam_heatmap = grad_cam(cam_actor, frame, action)
            Cam_heatmap = np.asarray(Cam_heatmap)
            history['gradCam_actor'].append(Cam_heatmap)

            gradCam_heatmap = grad_cam(cam_critic, frame, action, False)
            gradCam_heatmap = np.asarray(gradCam_heatmap)
            history['gradCam_critic'].append(gradCam_heatmap)

            actor_gbp_heatmap = guided_backprop(frame, guidedBackprop_actor)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gdb_actor'].append(actor_gbp_heatmap)

            critic_gbp_heatmap = guided_backprop(frame, guidedBackprop_critic)
            critic_gbp_heatmap = np.asarray(critic_gbp_heatmap)
            history['gdb_critic'].append(critic_gbp_heatmap)

            gradCam_heatmap = grad_cam(gradCAM_actor, frame, action)
            gradCam_heatmap = np.asarray(Cam_heatmap)
            history['guidedGradCam_actor'].append(Cam_heatmap)

            gradCam_heatmap = grad_cam(gradCAM_critic, frame, action, False)
            gradCam_heatmap = np.asarray(gradCam_heatmap)
            history['guidedGradCam_critic'].append(gradCam_heatmap)

    history_gradients_actor = history['gradients_actor'].copy()
    history_gradients_critic = history['gradients_critic'].copy()
    history_gradCam_actor = history['gradCam_actor'].copy()
    history_gradCam_critic = history['gradCam_critic'].copy()
    history_gdb_actor = history['gdb_actor'].copy()
    history_gdb_critic = history['gdb_critic'].copy()
    history_guidedGradCam_actor = history['guidedGradCam_actor'].copy()
    history_guidedGradCam_critic = history['guidedGradCam_critic'].copy()
    fig_array[0, 0] = normalization(history_gradients_actor,
                                    history,
                                    "gdb",
                                    GDB_actor=1)
    fig_array[0, 1] = normalization(history_gradients_critic, history, 'gdb')
    fig_array[1, 0] = normalization(
        history_gradCam_actor,
        history,
        "cam",
    )
    fig_array[1, 1] = normalization(history_gradCam_critic, history, 'cam')
    fig_array[2, 0] = normalization(history_gdb_actor,
                                    history,
                                    "gdb",
                                    GDB_actor=1)
    fig_array[2, 1] = normalization(history_gdb_critic, history, 'gdb')
    fig_array[3, 0] = normalization(history_guidedGradCam_actor, history,
                                    "cam")
    fig_array[3, 1] = normalization(history_guidedGradCam_critic, history,
                                    'cam')

    make_movie(args, history, fig_array, first_frame, num_frames, resolution,
               save_dir, prefix, env_name)
Example #2
0
def init_saliency_map(args,
                      agent,
                      history,
                      first_frame=0,
                      num_frames=num_frames,
                      prefix='QF_',
                      resolution=450,
                      save_dir='./movies/',
                      env_name='Breakout-v0'):
    #load_model = create_model(agent.input_shape, agent.num_actions, agent.net_mode, args, "QNet")
    load_model = build_network(agent.input_shape, agent.num_actions)
    load_guided_model = build_guided_model(agent.input_shape,
                                           agent.num_actions)

    load_model.load_weights(args.load_network_path)
    load_guided_model.load_weights(args.load_network_path)
    total_frames = len(history['state'])
    backprop_actor = init_guided_backprop(load_model, "Attention A")
    backprop_critic = init_guided_backprop(load_model, "Attention V")
    cam_actor = init_grad_cam(load_model, "timedistributed_16")
    cam_critic = init_grad_cam(load_model, "timedistributed_16", False)
    guidedBackprop_actor = init_guided_backprop(load_guided_model,
                                                "Attention A")
    guidedBackprop_critic = init_guided_backprop(load_guided_model,
                                                 "Attention V")
    gradCAM_actor = init_grad_cam(load_guided_model, "timedistributed_23")
    gradCAM_critic = init_grad_cam(load_guided_model, "timedistributed_23",
                                   False)
    fig_array = np.zeros((6, 2, num_frames, 84, 84, 3))
    for i in range(num_frames):  #total_frames): #num_frames
        ix = first_frame + i
        if ix < total_frames:  # prevent loop from trying to process a frame ix greater than rollout length
            frame = history['state'][ix].copy()
            action = history['action'][ix]  #.copy()
            frame = np.expand_dims(frame, axis=0)
            if ix % 10 == 0:
                print(ix)

            actor_gbp_heatmap = guided_backprop(frame, backprop_actor)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gradients_actor'].append(actor_gbp_heatmap)

            actor_gbp_heatmap = guided_backprop(frame, backprop_critic)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gradients_critic'].append(actor_gbp_heatmap)

            Cam_heatmap = grad_cam(cam_actor, frame, action)
            Cam_heatmap = np.asarray(Cam_heatmap)
            history['gradCam_actor'].append(Cam_heatmap)

            gradCam_heatmap = grad_cam(cam_critic, frame, action, False)
            gradCam_heatmap = np.asarray(gradCam_heatmap)
            history['gradCam_critic'].append(gradCam_heatmap)

            actor_gbp_heatmap = guided_backprop(frame, guidedBackprop_actor)
            actor_gbp_heatmap = np.asarray(actor_gbp_heatmap)
            history['gdb_actor'].append(actor_gbp_heatmap)

            critic_gbp_heatmap = guided_backprop(frame, guidedBackprop_critic)
            critic_gbp_heatmap = np.asarray(critic_gbp_heatmap)
            history['gdb_critic'].append(critic_gbp_heatmap)

            gradCam_heatmap = grad_cam(gradCAM_actor, frame, action)
            gradCam_heatmap = np.asarray(gradCam_heatmap)
            history['guidedGradCam_actor'].append(gradCam_heatmap)

            gradCam_heatmap = grad_cam(gradCAM_critic, frame, action, False)
            gradCam_heatmap = np.asarray(gradCam_heatmap)
            history['guidedGradCam_critic'].append(gradCam_heatmap)

    history_gradients_actor = history['gradients_actor'].copy()
    history_gradients_critic = history['gradients_critic'].copy()
    history_gdb_actor = history['gdb_actor'].copy()
    history_gdb_critic = history['gdb_critic'].copy()
    history_gradCam_actor = history['gradCam_actor'].copy()
    history_gradCam_critic = history['gradCam_critic'].copy()
    history_gradCamGuided_actor = history['guidedGradCam_actor'].copy()
    history_gradCamGuided_critic = history['guidedGradCam_critic'].copy()
    fig_array[0, 0] = normalization(history_gradients_actor,
                                    history,
                                    "gdb",
                                    GDB_actor=1)
    fig_array[0, 1] = normalization(history_gradients_critic, history, 'gdb')
    fig_array[1, 0] = normalization(history_gdb_actor,
                                    history,
                                    "gdb",
                                    GDB_actor=1)
    fig_array[1, 1] = normalization(history_gdb_critic, history, 'gdb')
    fig_array[2, 0] = normalization(
        history_gradCam_actor,
        history,
        "cam",
    )
    fig_array[2, 1] = normalization(history_gradCam_critic, history, "cam")
    fig_array[3, 0] = normalization(history_gradCam_actor,
                                    history,
                                    "cam",
                                    GDB_actor=1,
                                    guided_model=history_gdb_actor)
    fig_array[3, 1] = normalization(history_gradCam_critic,
                                    history,
                                    'cam',
                                    guided_model=history_gdb_critic)
    fig_array[4, 0] = normalization(history_gradCamGuided_actor, history,
                                    "cam")
    fig_array[4, 1] = normalization(history_gradCamGuided_critic, history,
                                    "cam")
    fig_array[5, 0] = normalization(history_gradCamGuided_actor,
                                    history,
                                    "cam",
                                    GDB_actor=1,
                                    guided_model=history_gdb_actor)
    fig_array[5, 1] = normalization(history_gradCamGuided_critic,
                                    history,
                                    'cam',
                                    guided_model=history_gdb_critic)

    make_movie(args, history, fig_array, first_frame, num_frames, resolution,
               save_dir, prefix, env_name)