awacke1 commited on
Commit
17fa1d3
1 Parent(s): 26ec3a4

Create new file

Browse files
Files changed (1) hide show
  1. app.py +66 -0
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import cv2
2
+ import streamlit as st
3
+ import time
4
+
5
+ from huggingface_sb3 import load_from_hub
6
+
7
+ from stable_baselines3 import PPO
8
+ from stable_baselines3.common.env_util import make_atari_env
9
+ from stable_baselines3.common.vec_env import VecFrameStack
10
+
11
+ from stable_baselines3.common.env_util import make_atari_env
12
+
13
+ st.title("Atari Environments Live Model")
14
+
15
+ # @st.cache This is not cachable :(
16
+ def load_env(env_name):
17
+ env = make_atari_env(env_name, n_envs=1)
18
+ env = VecFrameStack(env, n_stack=4)
19
+ return env
20
+
21
+
22
+ # @st.cache This is not cachable :(
23
+ def load_model(env_name):
24
+ custom_objects = {
25
+ "learning_rate": 0.0,
26
+ "lr_schedule": lambda _: 0.0,
27
+ "clip_range": lambda _: 0.0,
28
+ }
29
+
30
+ checkpoint = load_from_hub(
31
+ f"ThomasSimonini/ppo-{env_name}",
32
+ f"ppo-{env_name}.zip",
33
+ )
34
+
35
+ model = PPO.load(checkpoint, custom_objects=custom_objects)
36
+
37
+ return model
38
+
39
+
40
+ env_name = st.selectbox(
41
+ "Select environment",
42
+ (
43
+ "SpaceInvadersNoFrameskip-v4",
44
+ "PongNoFrameskip-v4",
45
+ "SeaquestNoFrameskip-v4",
46
+ "QbertNoFrameskip-v4",
47
+ ),
48
+ )
49
+
50
+ num_episodes = st.slider("Number of Episodes", 1, 20, 5)
51
+ env = load_env(env_name)
52
+ model = load_model(env_name)
53
+
54
+ obs = env.reset()
55
+
56
+ with st.empty():
57
+ for i in range(num_episodes):
58
+ obs = env.reset()
59
+ done = False
60
+ while not done:
61
+ frame = env.render(mode="rgb_array")
62
+ im = st.image(frame, width=400)
63
+ action, _states = model.predict(obs)
64
+ obs, reward, done, info = env.step([action])
65
+
66
+ time.sleep(0.1)