Доброго времени суток, всем!
Столкнулся с проблемой.
Есть нейросеть на базе
darknet. Работает отлично и быстро.
Проблема в том, что мы получаем изображение по http и обрабатываем его с помощью
python rq, но на каждую задачу он тащит веса.
Вопрос: Как сделать, чтобы веса подтягивались только 1 раз и использовались в последующих асинхронных задачах?
Flask App
import copy
import os
import cv2
import werkzeug
from flask import Flask, flash, request
from redis import Redis
from rq import Queue
from jobs import detect
...
app = Flask(__name__)
q = Queue(connection=Redis())
...
@app.route('/url/', methods=['GET', 'POST'], strict_slashes=False)
def webhook():
if request.method == 'POST':
...
detect_job = q.enqueue(detect, args=(cam_id, timestamp, file_path)) # распознаем объекты
...
return "", 200
jobs.py
import copy
import urllib
import cv2
from rq import get_current_job
from pydarknet import Image
from utils import write_to_sheet
def detect(spreadsheet_id, timestamp, file_path):
from detector import detector
img = Image(cv2.imread(file_path))
return {
...
}
detector.py
from pydarknet import Detector
detector = Detector(bytes('cfg/yolov3.cfg', encoding='utf-8'),
bytes('weights/yolov3.weights', encoding='utf-8'),
0,
bytes('cfg/coco.data',encoding='utf-8'))
Сейчас код выглядит так. Я пробовал в разные места ставить, но результат один.
Буду благодарен любой наводке, на решение этой задачи!