2020년 12월 08일 기록
프로젝트에서, ML 모델을 불러오고 각종 알고리즘(?)을 불러올 때, 매번 request 요청이 있을 때마다 불러오면 속도가 느리기 때문에 딱 한 번만 불러오고 계속해서 불러온 모델을 사용해야 할 필요가 있었다.
이 때는 AppConfig를 사용하면 된다. AppConfig로 클래스를 만들어준 후, __init__.py에 등록해주면 서버를 실행할 때 한 번만 실행되어 계속해서 가져다 쓸 수 있다.
### load.py
from django.apps import AppConfig
from tensorflow.keras.models import load_model
import cv2
from mtcnn import MTCNN
class LoadConfig(AppConfig):
model = load_model('/home/lab07/Model_predict/test_mask_model_Densenet201_color_3class_1205.h5')
haarcascade_dir = '/home/lab07/MTCNN HaarCascade'
nose_cascade = cv2.CascadeClassifier(haarcascade_dir + '/haarcascade_mcs_nose.xml')
detector = MTCNN()
def ready(self):
pass
### __init__.py
import os
if os.environ.get('RUN_MAIN', None) != 'true':
default_app_config = 'load.LoadConfig'
### views.py
from . import load
mask1 = load.LoadConfig.model.predict(face_input)