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)
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)