Spaces:
Paused
Paused
Commit
·
61703cc
1
Parent(s):
1a57d99
feat: update generate video
Browse files- Dockerfile +2 -0
- web_server.py +15 -0
Dockerfile
CHANGED
@@ -30,6 +30,8 @@ RUN ./.pixi/envs/default/bin/python3 -m ensurepip
|
|
30 |
|
31 |
RUN ./.pixi/envs/default/bin/python3 -m pip install psutil
|
32 |
|
|
|
|
|
33 |
RUN ./.pixi/envs/default/bin/python /app/download_pre_datas.py
|
34 |
|
35 |
CMD ["./.pixi/envs/default/bin/python", "web_server.py"]
|
|
|
30 |
|
31 |
RUN ./.pixi/envs/default/bin/python3 -m pip install psutil
|
32 |
|
33 |
+
RUN ./.pixi/envs/default/bin/python3 -m pip install moviepy
|
34 |
+
|
35 |
RUN ./.pixi/envs/default/bin/python /app/download_pre_datas.py
|
36 |
|
37 |
CMD ["./.pixi/envs/default/bin/python", "web_server.py"]
|
web_server.py
CHANGED
@@ -14,6 +14,7 @@ from typing import Any, Dict, Optional, List
|
|
14 |
from dataclasses import dataclass
|
15 |
sys.path.append(os.getcwd())
|
16 |
|
|
|
17 |
from fastapi import FastAPI, Body, Header, Depends, HTTPException, Query
|
18 |
from fastapi.responses import HTMLResponse, Response
|
19 |
from omegaconf import OmegaConf, DictConfig
|
@@ -43,6 +44,17 @@ class SubmissionStatus(enum.Enum):
|
|
43 |
FAILED = 4
|
44 |
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
def get_gpu_memory():
|
47 |
output_to_list = lambda x: x.decode('ascii').split('\n')[:-1]
|
48 |
COMMAND = "nvidia-smi --query-gpu=memory.used --format=csv"
|
@@ -198,6 +210,7 @@ class EnvHandler:
|
|
198 |
self._scene_cnt = 0
|
199 |
self._scene_done = False
|
200 |
self._save_data = {'type': 'closeloop', 'frames': []}
|
|
|
201 |
self._obs, self._info = self.env.reset()
|
202 |
|
203 |
self._log(f"Switched to scene: {scene_config.name}")
|
@@ -289,6 +302,7 @@ class EnvHandler:
|
|
289 |
'collision': self._info['collision'],
|
290 |
'rc': self._info['rc']
|
291 |
})
|
|
|
292 |
|
293 |
if not self._scene_done:
|
294 |
return EnvExecuteResult(cur_scene_done=False, done=False)
|
@@ -302,6 +316,7 @@ class EnvHandler:
|
|
302 |
with open(os.path.join(self.cur_otuput, 'eval.json'), 'w') as f:
|
303 |
json.dump(results, f)
|
304 |
self._score_list.append(results.copy())
|
|
|
305 |
|
306 |
self._log(f"Scene {self.cur_scene_index} completed. Evaluation results saved.")
|
307 |
|
|
|
14 |
from dataclasses import dataclass
|
15 |
sys.path.append(os.getcwd())
|
16 |
|
17 |
+
from moviepy import ImageSequenceClip
|
18 |
from fastapi import FastAPI, Body, Header, Depends, HTTPException, Query
|
19 |
from fastapi.responses import HTMLResponse, Response
|
20 |
from omegaconf import OmegaConf, DictConfig
|
|
|
44 |
FAILED = 4
|
45 |
|
46 |
|
47 |
+
def to_video(observations: List[Any], output_path: str):
|
48 |
+
frames = []
|
49 |
+
for obs in observations:
|
50 |
+
row1 = np.concatenate([obs['CAM_FRONT_LEFT'], obs['CAM_FRONT'], obs['CAM_FRONT_RIGHT']], axis=1)
|
51 |
+
row2 = np.concatenate([obs['CAM_BACK_RIGHT'], obs['CAM_BACK'], obs['CAM_BACK_LEFT']], axis=1)
|
52 |
+
frame = np.concatenate([row1, row2], axis=0)
|
53 |
+
frames.append(frame)
|
54 |
+
clip = ImageSequenceClip(frames, fps=4)
|
55 |
+
clip.write_videofile(output_path)
|
56 |
+
|
57 |
+
|
58 |
def get_gpu_memory():
|
59 |
output_to_list = lambda x: x.decode('ascii').split('\n')[:-1]
|
60 |
COMMAND = "nvidia-smi --query-gpu=memory.used --format=csv"
|
|
|
210 |
self._scene_cnt = 0
|
211 |
self._scene_done = False
|
212 |
self._save_data = {'type': 'closeloop', 'frames': []}
|
213 |
+
self._observations_save = []
|
214 |
self._obs, self._info = self.env.reset()
|
215 |
|
216 |
self._log(f"Switched to scene: {scene_config.name}")
|
|
|
302 |
'collision': self._info['collision'],
|
303 |
'rc': self._info['rc']
|
304 |
})
|
305 |
+
self._observations_save.append(self._obs['rgb'])
|
306 |
|
307 |
if not self._scene_done:
|
308 |
return EnvExecuteResult(cur_scene_done=False, done=False)
|
|
|
316 |
with open(os.path.join(self.cur_otuput, 'eval.json'), 'w') as f:
|
317 |
json.dump(results, f)
|
318 |
self._score_list.append(results.copy())
|
319 |
+
to_video(self._observations_save, os.path.join(self.cur_otuput, 'video.mp4'))
|
320 |
|
321 |
self._log(f"Scene {self.cur_scene_index} completed. Evaluation results saved.")
|
322 |
|