# UTILITY_YOLO_HPE_CLASSIFICATION
YOLO Pose 좌표 정보를 이용한 자세 추정
### HPEClassification class
HPEClassification(pose_info, cross_ratio_threshold=0.1, cross_angle_threshold=(15.0, 165.0), falldown_tilt_ratio=0.8, falldown_tilt_angle=15, body_tilt_ratio=0.5, yolo_version=8)
- pose_info: pose keypoint 정보 (mandatory)
```python
pose_info: {
'person': (cx, cy, w, h, c),
'keypoints': [ (x, y, c), (x, y, c), ... ] # 1번이 index 0, 2번 index 1, ... 17번 index 16
}
```
- cross_ratio_threshold: 팔 교차시 교차점의 최소 위치 비율. 생략시 0.1
- cross_angle_threshold: 팔 교차시 교차각 범위 지정. 생략시 (15.0, 165.0)
- falldown_tilt_ratio: 넘어짐/비틀거림 감지를 위한 body rect 비율 (세로/가로). 생략시 0.8
- falldown_tilt_angle: 상체 기울어짐 판정각. 작업자가 '작업중'일때 넘어짐 판정에 반영됨 (생략시 15도)
- body_tilt_ratio: 상체 기울어짐 판정을 위한 상체 비율 임계치 (가로/세로). 생략시 0.3
- yolo_version: 사용 YOLO 버전. 생략시 8
- v8 에서는 잡히지 않은 keypoint => (0,0)
- v7 에서는 잡히지 않은 keypoint => None
#### cross arms
- is_cross_arms() -> True/False
- get_cross_point() -> (x, y)
- get_cross_ratio() -> (ratio1, ratio2)
- get_cross_angle() -> 교차각
- set_cross_ratio_threshold(value)
- set_cross_angle_threshold(angle)
#### fall down
- is_falldown(is_working_on) -> True/False
- is_working_on: 현재 작업자가 작업중인지 여부.(True/False) 작업중인 경우에는 상체 구부러짐을 반영한다.
- set_falldown_tilt_ratio(value)
#### etc
- get_hpe_type(is_working_on) -> 탐지된 type 종류가 모두 포함된 정보.
- is_working_on: 현재 작업자가 작업중인지 여부.(True/False) 작업중인 경우에는 상체 구부러짐을 반영한다.
- HPETypeMask.NORMAL = 0x0000
- HPETypeMask.FALL_DOWN = 0x0080
- HPETypeMask.CROSS_ARM = 0x0100
- get_hpe_type(query, is_working_on) -> True/False
- get_hpe_level(is_working_on) -> 위험도. 현재 0~9까지의 값.
- is_working_on: 현재 작업자가 작업중인지 여부.(True/False) 작업중인 경우에는 상체 구부러짐을 반영한다.
### HPETypeMask class
HPEClassification.get_hpe_type() 에서 return 되는 정보를 구분하는 mask 값
- NORMAL = 0x0000
- FALL_DOWN = 0x0080
- CROSS_ARM = 0x0100