services: use asyncio to_thread in moondreamservice
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import asyncio
|
||||||
|
|
||||||
from dailyai.pipeline.frames import ImageFrame, VisionImageFrame
|
from dailyai.pipeline.frames import ImageFrame, VisionImageFrame
|
||||||
from dailyai.services.ai_services import VisionService
|
from dailyai.services.ai_services import VisionService
|
||||||
|
|
||||||
@@ -43,10 +45,15 @@ class MoondreamService(VisionService):
|
|||||||
self._model.eval()
|
self._model.eval()
|
||||||
|
|
||||||
async def run_vision(self, frame: VisionImageFrame) -> str:
|
async def run_vision(self, frame: VisionImageFrame) -> str:
|
||||||
image = Image.frombytes("RGB", (frame.size[0], frame.size[1]), frame.image)
|
def get_image_description(frame: VisionImageFrame):
|
||||||
image_embeds = self._model.encode_image(image)
|
image = Image.frombytes("RGB", (frame.size[0], frame.size[1]), frame.image)
|
||||||
description = self._model.answer_question(
|
image_embeds = self._model.encode_image(image)
|
||||||
image_embeds=image_embeds,
|
description = self._model.answer_question(
|
||||||
question=frame.text,
|
image_embeds=image_embeds,
|
||||||
tokenizer=self._tokenizer)
|
question=frame.text,
|
||||||
|
tokenizer=self._tokenizer)
|
||||||
|
return description
|
||||||
|
|
||||||
|
description = await asyncio.to_thread(get_image_description, frame)
|
||||||
|
|
||||||
return description
|
return description
|
||||||
|
|||||||
Reference in New Issue
Block a user