mirror of
https://github.com/azaion/annotations.git
synced 2026-04-22 09:36:30 +00:00
make start faster
This commit is contained in:
@@ -22,8 +22,6 @@ public interface IAuthProvider
|
|||||||
|
|
||||||
public class PythonResourceLoader : IResourceLoader, IAuthProvider
|
public class PythonResourceLoader : IResourceLoader, IAuthProvider
|
||||||
{
|
{
|
||||||
private readonly ApiCredentials _credentials;
|
|
||||||
private readonly AzaionApiClient _api;
|
|
||||||
private readonly DealerSocket _dealer = new();
|
private readonly DealerSocket _dealer = new();
|
||||||
private readonly Guid _clientId = Guid.NewGuid();
|
private readonly Guid _clientId = Guid.NewGuid();
|
||||||
|
|
||||||
@@ -31,9 +29,7 @@ public class PythonResourceLoader : IResourceLoader, IAuthProvider
|
|||||||
|
|
||||||
public PythonResourceLoader(ApiConfig apiConfig, ApiCredentials credentials, AzaionApiClient api)
|
public PythonResourceLoader(ApiConfig apiConfig, ApiCredentials credentials, AzaionApiClient api)
|
||||||
{
|
{
|
||||||
_credentials = credentials;
|
StartPython(apiConfig, credentials);
|
||||||
_api = api;
|
|
||||||
//StartPython(apiConfig, credentials);
|
|
||||||
_dealer.Options.Identity = Encoding.UTF8.GetBytes(_clientId.ToString("N"));
|
_dealer.Options.Identity = Encoding.UTF8.GetBytes(_clientId.ToString("N"));
|
||||||
_dealer.Connect($"tcp://{SecurityConstants.ZMQ_HOST}:{SecurityConstants.ZMQ_PORT}");
|
_dealer.Connect($"tcp://{SecurityConstants.ZMQ_HOST}:{SecurityConstants.ZMQ_PORT}");
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
from remote_command cimport RemoteCommand
|
from remote_command cimport RemoteCommand
|
||||||
from annotation cimport Annotation, Detection
|
from annotation cimport Annotation, Detection
|
||||||
from ai_config cimport AIRecognitionConfig
|
from ai_config cimport AIRecognitionConfig
|
||||||
|
from api_client cimport ApiClient
|
||||||
|
|
||||||
cdef class Inference:
|
cdef class Inference:
|
||||||
|
cdef ApiClient api_client
|
||||||
cdef object session
|
cdef object session
|
||||||
cdef object on_annotation
|
cdef object on_annotation
|
||||||
cdef Annotation _previous_annotation
|
cdef Annotation _previous_annotation
|
||||||
|
|||||||
@@ -11,13 +11,22 @@ from annotation cimport Detection, Annotation
|
|||||||
from ai_config cimport AIRecognitionConfig
|
from ai_config cimport AIRecognitionConfig
|
||||||
|
|
||||||
cdef class Inference:
|
cdef class Inference:
|
||||||
def __init__(self, model_bytes, on_annotation):
|
def __init__(self, api_client, on_annotation):
|
||||||
|
self.api_client = api_client
|
||||||
|
self.on_annotation = on_annotation
|
||||||
self.stop_signal = False
|
self.stop_signal = False
|
||||||
|
self.session = None
|
||||||
|
self.model_input = None
|
||||||
|
self.model_width = 0
|
||||||
|
self.model_height = 0
|
||||||
|
self.class_names = None
|
||||||
|
self.ai_config = AIRecognitionConfig(4, 2, 0.25, 0.15, 15, 0.8, b'')
|
||||||
|
|
||||||
|
def init_ai(self):
|
||||||
|
model_bytes = self.api_client.load_ai_model()
|
||||||
self.session = onnx.InferenceSession(
|
self.session = onnx.InferenceSession(
|
||||||
model_bytes, providers=["CUDAExecutionProvider", "CPUExecutionProvider"]
|
model_bytes, providers=["CUDAExecutionProvider", "CPUExecutionProvider"]
|
||||||
)
|
)
|
||||||
self.on_annotation = on_annotation
|
|
||||||
self.ai_config = AIRecognitionConfig(4, 2, 0.25, 0.15, 15, 0.8, b'')
|
|
||||||
model_inputs = self.session.get_inputs()
|
model_inputs = self.session.get_inputs()
|
||||||
self.model_input = model_inputs[0].name
|
self.model_input = model_inputs[0].name
|
||||||
input_shape = model_inputs[0].shape
|
input_shape = model_inputs[0].shape
|
||||||
@@ -38,7 +47,6 @@ cdef class Inference:
|
|||||||
for frame in frames]
|
for frame in frames]
|
||||||
return np.vstack(blobs)
|
return np.vstack(blobs)
|
||||||
|
|
||||||
|
|
||||||
cdef postprocess(self, output):
|
cdef postprocess(self, output):
|
||||||
cdef list[Detection] detections = []
|
cdef list[Detection] detections = []
|
||||||
cdef int ann_index
|
cdef int ann_index
|
||||||
@@ -112,6 +120,8 @@ cdef class Inference:
|
|||||||
|
|
||||||
self.ai_config = AIRecognitionConfig.from_msgpack(cmd.data)
|
self.ai_config = AIRecognitionConfig.from_msgpack(cmd.data)
|
||||||
self.stop_signal = False
|
self.stop_signal = False
|
||||||
|
if self.session is None:
|
||||||
|
self.init_ai()
|
||||||
|
|
||||||
for m in medias:
|
for m in medias:
|
||||||
if self.is_video(m):
|
if self.is_video(m):
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ cdef class CommandProcessor:
|
|||||||
self.inference_queue = Queue(maxsize=constants.QUEUE_MAXSIZE)
|
self.inference_queue = Queue(maxsize=constants.QUEUE_MAXSIZE)
|
||||||
self.remote_handler.start()
|
self.remote_handler.start()
|
||||||
self.running = True
|
self.running = True
|
||||||
model = self.api_client.load_ai_model()
|
self.inference = Inference(self.api_client, self.on_annotation)
|
||||||
self.inference = Inference(model, self.on_annotation)
|
|
||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
|
print('Started!')
|
||||||
while self.running:
|
while self.running:
|
||||||
try:
|
try:
|
||||||
command = self.inference_queue.get(timeout=0.5)
|
command = self.inference_queue.get(timeout=0.5)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI5N2U5MWI2OC1hNmRlLTQ3YTgtOTgzYi0xOTU3YzViNDQ2MTkiLCJ1bmlxdWVfbmFtZSI6ImFkbWluLXJlbW90ZUBhemFpb24uY29tIiwicm9sZSI6IkFwaUFkbWluIiwibmJmIjoxNzM5Mjk0ODY2LCJleHAiOjE3MzkzMDkyNjYsImlhdCI6MTczOTI5NDg2NiwiaXNzIjoiQXphaW9uQXBpIiwiYXVkIjoiQW5ub3RhdG9ycy9PcmFuZ2VQaS9BZG1pbnMifQ.fp0YzE42mqtG2fd4BtaX2ZH-0-9YLXHPDqoAHSpfWjk
|
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI5N2U5MWI2OC1hNmRlLTQ3YTgtOTgzYi0xOTU3YzViNDQ2MTkiLCJ1bmlxdWVfbmFtZSI6ImFkbWluLXJlbW90ZUBhemFpb24uY29tIiwicm9sZSI6IkFwaUFkbWluIiwibmJmIjoxNzM5MzUxNDEwLCJleHAiOjE3MzkzNjU4MTAsImlhdCI6MTczOTM1MTQxMCwiaXNzIjoiQXphaW9uQXBpIiwiYXVkIjoiQW5ub3RhdG9ycy9PcmFuZ2VQaS9BZG1pbnMifQ.P32xRe6nk-0u2jjBi3rdsd3YwlmGXL0NX_eE2xb7OUI
|
||||||
Reference in New Issue
Block a user