91 lines
2.4 KiB
Text
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
|
|
|