punimtag/run_dashboard.py
tanyar09 ef7a296a9b feat: Complete migration to DeepFace with full integration and testing
This commit finalizes the migration from face_recognition to DeepFace across all phases. It includes updates to the database schema, core processing, GUI integration, and comprehensive testing. All features are now powered by DeepFace technology, providing superior accuracy and enhanced metadata handling. The README and documentation have been updated to reflect these changes, ensuring clarity on the new capabilities and production readiness of the PunimTag system. All tests are passing, confirming the successful integration.
2025-10-16 13:17:41 -04:00

72 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Launcher script for PunimTag Dashboard
Adds project root to Python path and launches the dashboard
"""
import os
import sys
import warnings
from pathlib import Path
# Suppress TensorFlow warnings (must be before DeepFace import)
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
warnings.filterwarnings('ignore')
# Add project root to Python path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
# Now import required modules
from src.gui.dashboard_gui import DashboardGUI
from src.gui.gui_core import GUICore
from src.core.database import DatabaseManager
from src.core.face_processing import FaceProcessor
from src.core.photo_management import PhotoManager
from src.core.tag_management import TagManager
from src.core.search_stats import SearchStats
from src.core.config import DEFAULT_DB_PATH
if __name__ == "__main__":
# Initialize all required components
gui_core = GUICore()
db_manager = DatabaseManager(DEFAULT_DB_PATH, verbose=0)
# Initialize face_processor without detector/model (will be updated by GUI)
face_processor = FaceProcessor(db_manager, verbose=0)
photo_manager = PhotoManager(db_manager, verbose=0)
tag_manager = TagManager(db_manager, verbose=0)
search_stats = SearchStats(db_manager)
# Define callback functions for scan and process operations
def on_scan(folder, recursive):
"""Callback for scanning photos"""
return photo_manager.scan_folder(folder, recursive)
def on_process(limit=None, stop_event=None, progress_callback=None,
detector_backend=None, model_name=None):
"""Callback for processing faces with DeepFace settings"""
# Update face_processor settings if provided
if detector_backend:
face_processor.detector_backend = detector_backend
if model_name:
face_processor.model_name = model_name
return face_processor.process_faces(
limit=limit or 50,
stop_event=stop_event,
progress_callback=progress_callback
)
# Create and run dashboard
app = DashboardGUI(
gui_core=gui_core,
db_manager=db_manager,
face_processor=face_processor,
on_scan=on_scan,
on_process=on_process,
search_stats=search_stats,
tag_manager=tag_manager
)
app.open()