알람을 다시 활성화하면 비활성화되어 있던 동안의 기록이 repeat_threshold 구간의 비율 계산에 포함되어, 첫 알람이 잠시 늦어질 수 있습니다.
[기타 사항]
얼굴 비식별화 모델의 TensorRT 변환이 다른 모델과 같은 방식으로 변경되어, 엔진 생성에 onnx 패키지가 필요하지 않습니다.
2.8.0
2026/10/07
[모델 변경]
2_8_0.safetydet: DFINE-X detection 모델을 갱신하였습니다. 화재·연기·중장비 hardcase 데이터를 추가 학습하여 화재·연기 검출 성능을 개선하였습니다.
2_8_0.safetycls: classification 모델이 사람 속성 5개 클래스(helmet, head, person, fall_down, harness)만 분류하도록 변경되었습니다. 화재·연기는 더 이상 분류기로 판정하지 않습니다.
2_8_0.safetytrk: 5클래스 분류기 출력에 맞게 tracker 모델을 갱신하였습니다.
[기능 변경]
화재(fire_detect)·연기(smoke_detect) 이벤트를 classification score 없이 detection 결과만으로 판정합니다.
detection에서 object_score_threshold를 넘어 검출된 화재·연기 객체는 그대로 이벤트로 판정됩니다.
fire_score_threshold / smoke_score_threshold는 classification score가 아니라 object_score_ema(아래 참고)와 비교합니다. 기본값 0에서는 추가 조건 없이 detection 결과만으로 판정하며, 값을 높이면 여러 프레임에 걸쳐 높은 score로 검출된 객체만 이벤트로 판정합니다. (참고: InferenceHandler.get_default_event_options)
각 객체에 object_score_ema가 추가되었습니다. 같은 객체(tracking id)의 detection score(object_score)를 시간에 따라 평활한 값(0~100)이며, 화재·연기 이벤트는 이 값과 fire_score_threshold / smoke_score_threshold를 비교해 판정합니다.
params.mlc_filter_thresholds와 params.small_object의 mlc_threshold는 person key만 받습니다. fire / smoke key를 전달하면 InvalidMlcFilterThresholdError / InvalidSmallObjectParameterError가 발생합니다. classification params.additional_scores는 5개 값을 받습니다. (참고: InferenceHandler.set_inference_option)
안전모 미착용(without_helmet): helmet_score_threshold30 → 35, head_score_threshold90 → 0 (head 조건 미사용. 2_8_0 classification 모델에서는 head 조건을 적용해도 줄어드는 과검과 늘어나는 미검이 거의 비슷하여 사용하지 않도록 변경)
이전 7클래스 classification 모델도 계속 사용할 수 있습니다. 화재·연기 출력은 사용하지 않고 사람 속성 5개 클래스만 사용합니다.
[기능 개선]
person 객체에 대해서만 classification을 수행하도록 변경하여, 사람이 없는 프레임(화재·연기만 있는 장면 등)의 분류기 연산을 생략합니다.
[버그 수정]
프레임 단위 지면 추정에서 지면 평면을 수직 거리 기준으로 피팅하도록 수정하여, 카메라가 지면을 비스듬히 바라보는 경우의 지면 추정 정확도를 개선하였습니다.
[Finetuning]
ClsTrainer가 2_8_0 classification 모델을 기준으로 사람 속성 5개 클래스를 학습합니다. 기존 학습 데이터(mlc_labels에 fire / smoke가 포함된 json)를 그대로 사용할 수 있으며, 데이터 로더가 전처리 단계에서 fire / smoke 라벨과 화재·연기 박스를 학습 대상에서 제외합니다.
Benchmarker의 화재·연기 이벤트 정답은 라벨의 detection class(class_index)로 판정합니다. single model 결과의 classification 항목에서 화재·연기는 제외됩니다.
2.7.0
2026/09/22
[기능 추가]
Reference image 없이 공간 지각 이벤트를 사용할 수 있는 프레임 단위 지면 추정 기능을 추가하였습니다. 카메라별 spatial option use_reference로 지면 정보의 출처를 선택합니다.
True (기본값): 기존과 동일하게 등록된 reference image의 지면 정보만 사용합니다. reference image가 등록되어 있지 않으면 공간 지각 이벤트가 동작하지 않습니다.
False: reference image 없이 매 프레임의 depth/normal 예측으로 지면 평면을 추정합니다. 지면을 신뢰할 수 없는 프레임(지면이 화면의 1% 미만이거나 바닥이 보이지 않는 근접샷 등)에서는 지면을 추정하지 않으며, 해당 프레임의 공간 지각 이벤트는 발생하지 않습니다.
침입(trespass_detect)과 위험구역(danger_detect) 이벤트가 동일한 판정 로직을 사용하도록 통합되었습니다. danger_detect도 use_depth(공간 지각) 판정을 지원합니다.
polygons 원소가 [[x, y], ...] 배열에서 {"polygon": [[x, y], ...], "object_types": [...]} dict로 변경되었습니다. 폴리곤마다 감지 대상 객체를 지정할 수 있으며, 사용 가능한 타입은 person, excavator, forklift, vehicle, heavy_equipment입니다. 구 배열 포맷은 object_types=["person"]으로 자동 변환됩니다.
충돌 이벤트 in_collision_hazard_zone, collision_hazard_detect가 제거되었습니다. 해당 키를 옵션으로 전달하면 InvalidEventOptionsError / InvalidAlarmOptionsError가 발생합니다.
infer 응답에서 각 객체의 events / alarms / event_status / classification_scores에 있던 충돌 관련 키가 제거되었습니다. 또한 trespass_detect / danger_detect는 이제 폴리곤 object_types에 지정된 중장비 객체에도 True로 나타납니다(기존에는 person에만 해당).
기존 includes/excludes 구조 대신 폴리곤별 object_types를 지정하는 리스트를 받으며, 지정한 타입의 객체만 해당 영역에서 무시합니다. 사용 가능한 타입은 person, fire, smoke, excavator, forklift, vehicle, heavy_equipment이며, crane 3종(crane_body, crane_hook, crane_lifted_object)은 모든 무시 영역에서 항상 무시됩니다.
get_monitoring_area / set_monitoring_area는 deprecated alias로 유지됩니다. 구 포맷의 excludes는 무시 영역으로 자동 변환되며, includes는 기능이 제거되어 무시됩니다. InvalidMonitoringAreaError는 InvalidIgnoreAreaError로 대체되었습니다.
[버그 수정]
GPU 추론 시 detection 후처리(NMS)가 fp16으로 수행되어 클래스별 좌표 offset이 overflow되고 NMS가 정상적으로 동작하지 않던 문제를 수정하였습니다. 후처리를 fp32로 수행하도록 변경되어 검출 박스 수가 이전 버전과 달라질 수 있습니다.
얼굴 비식별화(de-identification) 기능을 추가하였습니다. person object에 대해 얼굴을 검출하여 가릴 영역을 제공합니다.
(참고: InferenceHandler)
[기능 개선]
소형 객체(area ≤ 900) 분류를 개선하였습니다. 소형 person/fire는 분류기 입력 crop을 각 변 10% 확장하여 문맥을 확보하고, 소형 person의 MLC 게이트를 완화(0.9 → 0.7, 런타임 threshold가 더 낮으면 그 값 사용)하여 작은 객체의 미검을 줄였습니다. 소형 객체 보정 파라미터는 params.small_object(area/crop_margin/mlc_threshold 3개 key)로 런타임 변경할 수 있습니다. 대형 박스는 영향을 받지 않습니다. (참고: InferenceHandler.set_inference_option)
[기능 변경]
낙상(fall_down) 이벤트 기본값을 완화하였습니다. fall_down_score_threshold가 70에서 50으로, ignore_crossing_image_border_object가 True에서 False로 변경되었습니다. 기존 기본값에 의존하던 배포는 낙상 이벤트 발생이 늘어날 수 있습니다. (참고: InferenceHandler.get_default_event_options)
2.5.0
2026/07/30
[기능 변경]
알람 활성화 시간대 설정이 다중 구간(time_ranges)을 지원하도록 변경되었습니다. 기존의 단일 구간 옵션 start_time/end_time이 time_ranges(list[list[int]], 각 항목은 [start, end], 단위: 초, 0 <= start, end <= 86400)로 대체되었습니다. 여러 시간대를 지정할 수 있으며, 자정을 넘기는 구간(start > end)과 구간 간 겹침(합집합) 처리를 지원합니다. 기본값은 [[0, 86400]](24시간)입니다. (참고: InferenceHandler.get_default_event_options)
Object 필터의 area_threshold 옵션이 기존 float뿐만 아니라 tuple/list 형태를 지원하도록 개선하였습니다. float인 경우 area 최소값만 설정하며(상한 없음), tuple/list인 경우 (최소, 최대) 값을 모두 설정하여 최소~최대 범위를 벗어나는 객체를 필터링합니다. 기존 float 설정은 그대로 동작하고, 카메라별로 설정할 수 있습니다. (참고: InferenceHandler.get_default_object_options)
2.4.3
2026/07/02
[모델 변경]
2_0_2.safetydet, 2_0_2.safetycls
2.4.2
2026/06/24
[기능 개선]
공간 지각 협착 이벤트에서 중장비에 탑승한 사람 객체를 이벤트 발생에서 제외하도록 개선하였습니다.
2.4.1
2026/06/05
[기능 추가]
고소작업(aloft_work) 감지 이벤트를 추가하였습니다. 공간 지각(depth) 정보를 활용하여 person object가 지면 평면으로부터 임계 높이 이상에 위치할 때 이벤트를 발생시킵니다.
person object에 대해서만 동작하며, score로 지면 평면 기준 높이(단위: cm)를 반환합니다. (해당 없는 경우 -1)
use_depth: 공간 지각 정보 사용 여부 (기본값 False). 현재는 True인 경우에만 이벤트가 동작합니다.
2_0_1.safetycls, 2_0_1.safetydet: 모델이 업데이트되었습니다. 모델 구조 변경은 없으나, 학습 데이터 개선으로 성능이 향상되었습니다.
2_4_0.safetymatch: 공간 지각 기능을 위한 match 모델이 변경되었습니다. 상대적으로 작은 모델로 변경되어 VRAM 사용량과 인퍼런스 시간이 개선되었습니다.
2_4_0.safetytrk: object tracker 모델이 변경되었습니다. 트래킹 성능이 개선되었습니다.
[기능 개선]
공간 지각 침입에서 과검을 줄이기 위해 객체와 침입 영역 겹침 비율을 사용하도록 개선하였습니다. 기존 침입과 동일한 파라미터를 사용하며, 기본값은 95로 설정되어 있습니다. 0으로 설정하면 기존 로직과 동일하게 동작합니다. (참고: InferenceHandler.get_default_event_options)
Multi label classification (MLC)에서 이벤트 발생까지 지연이 있던 문제를 개선하였습니다.
TensorRT 최적화 모델로 카메라 여러대 추론 시에 결과가 누락되는 버그를 수정하였습니다.
2.3.8
2025/10/13
[버그 수정]
배치 인퍼런스 시에 예측이 불안정한 버그를 수정하였습니다.
2.3.7
2025/10/02
[기능 변경]
윈도우 환경에서 spatial inferencer의 batch size 증가에 따른 속도 증가폭이 미미하여, 기본 batch size를 1로 변경 및 vram 사용량 개선하였습니다.
[기능 추가]
without_helmet, without_harness, fallen_person 이벤트 감지 시에 작은 객체가 감지되는 경우 이벤트가 발생하지 않도록 옵션을 추가하였습니다. object_area_threshold로 설정 가능합니다. (InferenceHandler.get_default_event_options 참고)
person 객체 옵션에 두가지 옵션이 추가 되었습니다. 이를 통해 카메라별로 사람 객체에 대한 without_helmet, without_harness, fallen_person 이벤트의 감지 여부에 영향을 미칠 수 있습니다. (InferenceHandler.get_default_object_options의 person 참고)
brightness_threshold
small_area_threshold
[기능 개선]
인퍼런스 엔진을 최적화 하여, 점진적으로 추론 속도가 느려지는 문제를 개선하였습니다.
2.3.1
2025/08/26
[기능 변경]
더 빠른 인퍼런스를 위해 공간 지각 기능에서 batch size가 1로 고정되어 있던 부분을 2로 변경하였습니다.
2.3.0
2025/08/20
[기능 변경]
공간 지각 침입 기능에서 지면 깊이 맵을 피팅하는 기능을 개선했습니다.
Normal을 사용하는 기능이 없어서 일시적으로 normal inferencer가 제거되었습니다. 추후 수정 예정입니다.
2.3.0-rc2
2025/08/08
[모델 변경]
2_0_0.posco0.safetydet, 2_0_0.posco0.safetycls
[기능 추가]
이벤트 중 침입, 협착, 위험, 충돌 이벤트에 한해서 event 여부와 score를 함께 리턴하도록 수정하였습니다. (2.2.1 업데이트와 동일)
침입의 경우, depth를 사용하는 경우엔 score가 반환되지 않습니다.
2.3.0-rc0
2025/07/30
[모델 추가]
공간 지각 관련 모델이 추가되었습니다. VRAM 사용량 및 인퍼런스 시간이 증가할 수 있습니다. (최적화는 추후 예정)