sandbox/ivideon/puml/person_sdk/person_sdk_1.puml
2025-09-16 11:37:02 +03:00

91 lines
2.4 KiB
Text

@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