services: use asyncio to_thread in moondreamservice

This commit is contained in:
Aleix Conchillo Flaqué
2024-04-11 14:22:44 -07:00
parent b0faafc184
commit cbc51babbe

View File

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