import os import cv2 from django.apps import AppConfig from storages.backends.s3boto3 import S3Boto3Storage from ultralytics import YOLO import torch class MyAppConfig(AppConfig): name = 'proctoring' def ready(self): from django.conf import settings ai_model_dir = os.path.join(settings.BASE_DIR, "ml", "models","object_detection") # Load models settings.net = cv2.dnn.readNet( os.path.join(ai_model_dir, 'yolov3.weights'), os.path.join(ai_model_dir, 'yolov3.cfg') ) settings.model = YOLO(os.path.join(ai_model_dir, "yolo12x.pt")) # Determine device from env or fallback use_cuda = os.environ.get("USE_CUDA", "false").lower() == "true" if use_cuda and torch.cuda.is_available(): settings.model = settings.model.cuda() else: settings.model = settings.model.cpu() settings.s3_storage = S3Boto3Storage()