Libra-1995 commited on
Commit
61703cc
·
1 Parent(s): 1a57d99

feat: update generate video

Browse files
Files changed (2) hide show
  1. Dockerfile +2 -0
  2. 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