у меня есть 2 класса в 2 файлах:
image_recognition.py:
import cv2
from numpy import asarray
class ImageRecognizer():
from tensorflow.keras.models import load_model #takes some time to import
classifier=load_model('model') #takes some time to load
def __init__(self,<some variables>):
self.<some variables>=<some variables>
def recognize(self,image):
<some fast calculations>
classifier_output = self.classifier.predict(image)
<some fast calculations>
return category
screenshot_dismember.py:
from image_recognition import ImageRecognizer #takes some time to import because of importing load_mode and loading the model
import cv2
from numpy import asarray
import os
class GetStuffFromScreenshot:
def __init__(self,<some variables>):
self.<some variables>=<some variables>
def get_stuff(self, screenshot):
<takes some parts of the screenshot>
return list_of_images
def categotize_images(self, screenshot):
list_of_images = self.get_score(screenshot)
image_recognizer = ImageRecognizer()
category1 = image_recognizer.recognize(list_of_images[0])
...
category10 = image_recognizer.recognize(list_of_images[10])
return list_of_categories
main.py:
from screenshot_dismember import GetStuffFromScreenshot
from PIL import ImageGrab
import cv2
import os
import numpy as np
<take screenshot, preprocess it>
get_stuff_from_screenshot = GetStuffFromScreenshot()
list_of_categories = get_stuff_from_screenshot.caregorize_images(screenshot)
Будет ли трудоемкая часть импорта load_model
и загрузки весов выполняться один раз в начале скрипта в
from screenshot_dismember import GetStuffFromScreenshot
, потому что, в свою очередь, это будет
from image_recognition import ImageRecognizer
или это будет повторяться снова и снова, создавая новые объекты image_recognizer
класса ImageRecognizer
, когда я буду использовать метод categotize_images
из класса GetStuffFromScreenshot
? Или, может быть, было бы лучше отказаться от использования метода get_stuff
методом categotize_images
, а также вложенных классов, удалив
from image_recognition import ImageRecognizer
из screenshot_dismember.py и добавив его в основной скрипт и изменив его на:
from screenshot_dismember import GetStuffFromScreenshot
from image_recognition import ImageRecognizer
from PIL import ImageGrab
import cv2
import os
import numpy as np
<take screenshot, preprocess it>
get_stuff_from_screenshot = GetStuffFromScreenshot()
list_of_images = get_stuff_from_screenshot.get_stuff(screenshot)
image_recognizer = ImageRecognizer()
list_of_categories = []
for image in list_of_images:
category = image_recognizer.recognize(image)
list_of_categories.append(category)