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.pipeline.frames import ImageFrame, VisionImageFrame
from dailyai.services.ai_services import VisionService from dailyai.services.ai_services import VisionService
@@ -43,6 +45,7 @@ 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:
def get_image_description(frame: VisionImageFrame):
image = Image.frombytes("RGB", (frame.size[0], frame.size[1]), frame.image) image = Image.frombytes("RGB", (frame.size[0], frame.size[1]), frame.image)
image_embeds = self._model.encode_image(image) image_embeds = self._model.encode_image(image)
description = self._model.answer_question( description = self._model.answer_question(
@@ -50,3 +53,7 @@ class MoondreamService(VisionService):
question=frame.text, question=frame.text,
tokenizer=self._tokenizer) tokenizer=self._tokenizer)
return description return description
description = await asyncio.to_thread(get_image_description, frame)
return description