sohojoe commited on
Commit
9ed41df
1 Parent(s): e2846c4

got image to vector

Browse files
Files changed (2) hide show
  1. charles_actor.py +14 -10
  2. streamlit_av_queue.py +4 -3
charles_actor.py CHANGED
@@ -2,6 +2,7 @@ import ray
2
  import time
3
  import asyncio
4
  import os
 
5
 
6
  @ray.remote
7
  class CharlesActor:
@@ -9,6 +10,7 @@ class CharlesActor:
9
  self._needs_init = True
10
  self._system_one_audio_history_output = ""
11
  self._state = "Initializing"
 
12
 
13
  def get_state(self):
14
  return self._state
@@ -54,8 +56,11 @@ class CharlesActor:
54
 
55
  self._state = "Waiting for input"
56
  total_video_frames = 0
 
57
  total_audio_frames = 0
58
  loops = 0
 
 
59
 
60
  process_speech_to_text_future = []
61
 
@@ -88,19 +93,18 @@ class CharlesActor:
88
  self._system_one_audio_history_output = table_content
89
  await self._respond_to_prompt_actor.enqueue_prompt.remote(prompt)
90
 
91
- # video_frames = await self._streamlit_av_queue.get_video_frames_async()
92
- # if len(video_frames) > 0:
93
- # total_video_frames += len(video_frames)
94
- # # for video_frame in video_frames:
95
- # # system_one_video_output.image(video_frame.to_ndarray())
96
- # # pass
 
 
97
 
98
- # update debug output
99
- if (total_video_frames >0 or total_audio_frames > 0):
100
- self._state = f"Processed {total_video_frames} video frames and {total_audio_frames} audio frames"
101
  await asyncio.sleep(0.01)
102
  loops+=1
103
- self._state = f"Processed {total_video_frames} video frames and {total_audio_frames} audio frames, loops: {loops}"
104
 
105
  if __name__ == "__main__":
106
  if not ray.is_initialized():
 
2
  import time
3
  import asyncio
4
  import os
5
+ from clip_transform import CLIPTransform
6
 
7
  @ray.remote
8
  class CharlesActor:
 
10
  self._needs_init = True
11
  self._system_one_audio_history_output = ""
12
  self._state = "Initializing"
13
+ self._clip_transform = CLIPTransform()
14
 
15
  def get_state(self):
16
  return self._state
 
56
 
57
  self._state = "Waiting for input"
58
  total_video_frames = 0
59
+ skipped_video_frames = 0
60
  total_audio_frames = 0
61
  loops = 0
62
+ start_time = time.time()
63
+ vector_debug = "--n/a--"
64
 
65
  process_speech_to_text_future = []
66
 
 
93
  self._system_one_audio_history_output = table_content
94
  await self._respond_to_prompt_actor.enqueue_prompt.remote(prompt)
95
 
96
+ video_frames = await self._streamlit_av_queue.get_video_frames_async()
97
+ if len(video_frames) > 0:
98
+ vector_debug = f"found {len(video_frames)} video frames"
99
+ total_video_frames += 1
100
+ skipped_video_frames += (len(video_frames) -1)
101
+ image_as_array = video_frames[-1]
102
+ last_frame_vector = self._clip_transform.image_to_embeddings(image_as_array)
103
+ vector_debug = f"Last frame vector: {last_frame_vector.shape}"
104
 
 
 
 
105
  await asyncio.sleep(0.01)
106
  loops+=1
107
+ self._state = f"Processed {total_video_frames} video frames and {total_audio_frames} audio frames, loops: {loops}. loops per second: {loops/(time.time()-start_time):.2f}. {vector_debug}"
108
 
109
  if __name__ == "__main__":
110
  if not ray.is_initialized():
streamlit_av_queue.py CHANGED
@@ -27,13 +27,14 @@ class StreamlitAVQueue:
27
 
28
  async def queued_video_frames_callback(
29
  self,
30
- frames: List[av.AudioFrame],
31
- ) -> av.AudioFrame:
32
  try:
33
  for frame in frames:
34
- shared_tensor = torch.from_numpy(frame.to_ndarray())
35
  shared_tensor_ref = ray.put(shared_tensor)
36
  await self.queue_actor.enqueue_in_video_frame.remote(shared_tensor_ref)
 
37
  except Exception as e:
38
  print (e)
39
  return frames
 
27
 
28
  async def queued_video_frames_callback(
29
  self,
30
+ frames: List[av.VideoFrame],
31
+ ) -> av.VideoFrame:
32
  try:
33
  for frame in frames:
34
+ shared_tensor = frame.to_ndarray(format="rgb24")
35
  shared_tensor_ref = ray.put(shared_tensor)
36
  await self.queue_actor.enqueue_in_video_frame.remote(shared_tensor_ref)
37
+ # print (f"tesnor len: {len(shared_tensor)}, tensor shape: {shared_tensor.shape}, tensor type:{shared_tensor.dtype} tensor ref: {shared_tensor_ref}")
38
  except Exception as e:
39
  print (e)
40
  return frames