You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.3 KiB
4.3 KiB
Face Recognition Service - Architecture Diagram
graph TB
%% External Layer
User[👤 User] --> GradioUI[🖥️ Gradio Web Interface]
%% Presentation Layer
subgraph "Presentation Layer"
GradioUI --> |Web Requests| GradioApp[gradio_app.py]
end
%% Application Layer
subgraph "Application Layer"
GradioApp --> RegisterUC[📝 RegisterFaceUseCase]
GradioApp --> VerifyUC[🔍 VerifyFaceUseCase]
GradioApp --> IdentifyUC[🔎 IdentifyFaceUseCase]
RegisterUC --> FaceService[⚙️ FaceRecognitionService]
VerifyUC --> FaceService
IdentifyUC --> FaceService
end
%% Domain Layer
subgraph "Domain Layer"
FaceService --> Face[👤 Face Entity]
FaceService --> User[👨💼 User Entity]
FaceService --> VResult[✅ VerificationResult]
FaceService --> IResult[🎯 IdentificationResult]
FaceRepo[📊 FaceRepository Interface]
VectorStore[🗂️ VectorStore Interface]
end
%% Infrastructure Layer
subgraph "Infrastructure Layer"
%% ML Components
subgraph "ML Components"
RetinaFace[📷 RetinaFaceDetector]
SFaceRec[🧠 SFaceRecognizer]
end
%% Storage Components
subgraph "Storage Components"
MongoDB[🗄️ MongoDBFaceRepository]
ChromaDB[🔗 ChromaDBVectorStore]
FileSystem[📁 FileSystemStorage]
end
%% Configuration & Logging
subgraph "Cross-cutting Concerns"
Config[⚙️ Settings]
Logger[📋 Logging System]
end
end
%% External Systems
subgraph "External Systems"
MongoDBServer[(🗄️ MongoDB Database)]
ChromaDBServer[(🔗 ChromaDB Vector DB)]
FileStorage[(📁 File System)]
ONNXModel[🧠 SFace ONNX Model]
end
%% Service Dependencies
FaceService --> RetinaFace
FaceService --> SFaceRec
FaceService --> FaceRepo
FaceService --> VectorStore
FaceService --> FileSystem
%% Repository Implementations
FaceRepo -.->|implements| MongoDB
VectorStore -.->|implements| ChromaDB
%% External Connections
MongoDB --> MongoDBServer
ChromaDB --> ChromaDBServer
FileSystem --> FileStorage
SFaceRec --> ONNXModel
%% Use Case Dependencies
RegisterUC --> UserRepo[👨💼 MongoDBUserRepository]
VerifyUC --> UserRepo
IdentifyUC --> UserRepo
UserRepo --> MongoDBServer
%% Logging Dependencies
RetinaFace -.-> Logger
SFaceRec -.-> Logger
FaceService -.-> Logger
%% Configuration Dependencies
FaceService -.-> Config
MongoDB -.-> Config
ChromaDB -.-> Config
%% Styling
classDef presentation fill:#e1f5fe
classDef application fill:#f3e5f5
classDef domain fill:#e8f5e8
classDef infrastructure fill:#fff3e0
classDef external fill:#ffebee
class GradioUI,GradioApp presentation
class RegisterUC,VerifyUC,IdentifyUC,FaceService application
class Face,User,VResult,IResult,FaceRepo,VectorStore domain
class RetinaFace,SFaceRec,MongoDB,ChromaDB,FileSystem,Config,Logger,UserRepo infrastructure
class MongoDBServer,ChromaDBServer,FileStorage,ONNXModel external
Architecture Overview
Layers Description
- Presentation Layer: Gradio-based web interface for user interaction
- Application Layer: Use cases and business logic orchestration
- Domain Layer: Core business entities and repository interfaces
- Infrastructure Layer: Technical implementations and external service adapters
Key Components
- Face Detection: RetinaFace for accurate face detection and landmark extraction
- Face Recognition: SFace ONNX model for embedding extraction and similarity calculation
- Storage: MongoDB for metadata, ChromaDB for vector similarity search, filesystem for images
- Web Interface: Gradio provides registration, verification, and identification capabilities
Data Flow
- User uploads images through Gradio interface
- Use cases orchestrate the business logic
- FaceRecognitionService processes images using ML models
- Data is persisted in MongoDB, ChromaDB, and filesystem
- Results are returned to the user through the web interface