@startuml PersonSDK Architecture !theme plain skinparam backgroundColor white skinparam componentStyle rectangle package "PersonSDK" { component "IRuntime" as runtime component "Configuration" as config interface "IBackend" as backend component "CPU Backend" as cpu_backend component "GPU Backend" as gpu_backend component "Other Backends" as other_backends interface "IHeadDetector" as head_detector interface "IBodyDetector" as body_detector interface "IHeadPosition" as head_position interface "IBodyPosition" as body_position interface "IFrameView" as frame_view ' Advanced processing components interface "IBodyExtractor" as body_extractor interface "IBodyClassifier" as body_classifier interface "ITracker" as tracker interface "IUpperBodyExtractor" as upper_extractor interface "IUpperBodyClassifier" as upper_classifier interface "IBodyMatcher" as body_matcher ' Utility interfaces interface "ISizeRule" as size_rule interface "IRoi" as roi interface "KwArg" as kwarg } ' Relationships runtime --> config : uses runtime --> backend : creates backend <|-- cpu_backend backend <|-- gpu_backend backend <|-- other_backends backend --> head_detector : new_head_detector() backend --> body_detector : new_body_detector() backend --> body_extractor : new_body_extractor() backend --> body_classifier : new_body_classifier() backend --> tracker : new_tracker() head_detector --> head_position : returns vector<> body_detector --> body_position : returns vector<> head_detector --> frame_view : processes body_detector --> frame_view : processes head_detector --> kwarg : uses body_detector --> kwarg : uses head_detector --> size_rule : uses head_detector --> roi : uses body_extractor --> body_position : processes body_classifier --> body_position : processes tracker --> head_position : tracks tracker --> body_position : tracks upper_extractor --> body_position : processes upper_classifier --> body_position : processes body_matcher --> body_position : matches note top of runtime Entry point for SDK Handles configuration and backend management end note note right of head_detector Main detection interface set_defaults(args) run(image, args) Thread-safe with external sync end note note bottom of kwarg Flexible parameter system: Type-safe variants Named parameters Default value management end note @enduml