콘텐츠로 이동

Release notes

1.0.0-rc26

  • 2026/03/23
  • [기능 수정]
    • CycleInfo / AnomalyOutput 불필요 필드 제거
      • sigma_level — anomaly level이 "ok" / "level-1_anomaly" / "level-2_anomaly" 로 이미 결정되므로, 별도의 sigma_level 값 노출이 불필요하여 제거.
      • lower_time, upper_time — interval 모드에서도 level 판정만으로 충분하므로 제거.
    • CycleInfoclass_type 필드 추가
      • "normal" (일반 사이클) 또는 "standby" (context_splitter가 생성한 대기 사이클)로 구분.
      • get_cycles() 결과에서 각 사이클이 실제 검출인지, standby 보간인지 명시적으로 확인 가능.
    • sequence_monitor_normal_class_sequence 옵션 추가
      • get_inference_option("sequence_monitor_normal_class_sequence") 로 standby 클래스를 제외한 normal 클래스 순서만 조회 가능.
    • Cycle Anomaly 데이터 키 get_inference_option 지원
      • 기존 setter-only 였던 cycle_anomaly_stats, cycle_anomaly_intervals 등 7개 키를 get_inference_option으로도 조회 가능.
      • 반환값은 Pydantic 모델이 아닌 dict로 직렬화하여 반환.

1.0.0-rc25

  • 2026/03/20
  • [기능 수정]
    • Cycle Anomaly Detection 전면 개편
      • set_anomaly_by_cycle_detector API 제거 — 학습 시 자동 추출된 통계(mean, sigma)를 체크포인트에 저장하고, inference 빌드 시 z-test 기반 detector가 자동 빌드됩니다.
      • 3단계 알림 레벨 도입: "ok", "level-1_anomaly" (95%), "level-2_anomaly" (99%).
        • CycleInfoanomaly_level 필드 추가.
      • 기본 검정 방식이 z-test (양측 검정)으로 변경.
      • Intervals 모델 변경 — 기존 lower_margin/upper_marginlevel_1_margin/level_2_margin (또는 level_1_lower/level_1_upper/level_2_lower/level_2_upper).
    • 클래스별 검정 파라미터 오버라이드 지원
      • Stat 모델에 test_mode, sigma_level_1, sigma_level_2 옵션 필드 추가.
      • 클래스별 값이 설정되지 않으면 전역 설정을 사용하고, 설정되면 해당 클래스에 우선 적용됩니다.
    • set_inference_option / get_inference_option 연동
      • 전역 키: cycle_anomaly_enabled, cycle_anomaly_mode, cycle_anomaly_test_mode, cycle_anomaly_sigma_level_1, cycle_anomaly_sigma_level_2
      • 클래스별 키: cycle_anomaly_class_test_mode, cycle_anomaly_class_sigma_level_1, cycle_anomaly_class_sigma_level_2
      • 데이터 키: cycle_anomaly_stats, cycle_anomaly_class_stat, cycle_anomaly_intervals, cycle_anomaly_class_interval
    • 학습 데이터 통계 추출 시, 영상 제일 처음/마지막 세그먼트(잘림 가능성)를 제외하도록 개선.
      • 참고 자료:
        • 데모 코드: demo/demo_cycle_anomaly_detection.py — 10가지 시나리오 (z-test, interval, 클래스별 오버라이드, 런타임 설정 변경 등)
        • 테스트 코드: tests/0_unit_test/test_anomaly_by_cycle_detector.py — 30개 유닛 테스트 (z-test, interval, 클래스별 오버라이드 등)
    • 실시간 사이클 순서 모니터링 (CycleSequenceMonitor) 도입
      • 학습 시 훈련 데이터로부터 기대 클래스 순서(expected_class_sequence)를 자동 추출하여 체크포인트에 저장.
      • InferenceHandler.build() 시 체크포인트에서 자동 로드 및 빌드.
      • get_cycles() 호출 시 각 사이클에 모니터링 결과 필드 자동 추가:
        • sequence_status: "ok" (정상) 또는 "duplicate" (중복)
        • expected_class_index: 해당 시점에서 기대하던 class index
        • sequence_missing: 이 사이클 도착까지 건너뛴 class index 목록 (미검)
      • set_inference_option("sequence_monitor_enabled", False) 로 비활성화 가능.
      • 참고 자료:
        • API 문서: CycleSequenceMonitor
        • 데모 코드: demo/demo_cycle_sequence_monitor.py — 9가지 시나리오 (정상, 미검, 중복, wrap, finalize 등)
        • 테스트 코드: tests/0_unit_test/test_cycle_sequence_monitor.py — 23개 유닛 테스트
    • TypedDict 파라미터 dict 호환: CycleInfo 등 TypedDict 타입의 파라미터에 일반 dict도 전달 가능하도록 개선.
  • [Breaking Changes]
    • set_anomaly_by_cycle_detector 메소드 삭제.
    • Intervals 모델의 필드명 변경 (lower_margin/upper_marginlevel_1_margin/level_2_margin).
    • AnomalyOutputanomaly_level 필드 추가, 기존 is_anomaly_by_cycle_length 와 함께 사용.
    • CycleResultVerifier API 클래스 삭제 — 배치 검증 기능은 CycleSequenceMonitor로 대체되어 InferenceHandler 내부에서 자동 동작합니다.
    • ResultVerifier 클래스 및 관련 코드 삭제 (MODEL_CONFIGS, ModelConfig, VerifiedResult, SUPPORTED_MODEL_TYPES).
    • 에러 코드 변경: 기존 350~354 (UnsupportedResultVerifierModelError 등) 삭제 → 350 (EmptyExpectedSequenceError), 351 (MissingExpectedSequenceConfigError) 로 교체.

1.0.0-rc24

  • 2026/02/06
  • [기능 수정]
    • 타입 힌트 개선: tuple[int, ...] 형태로만 제한되던 일부 입력 파라미터에서 list[int]도 함께 허용하도록 수정.
    • list 입력 호환성을 위해 내부에서 필요한 값은 tuple(...)로 정규화하도록 보완.

1.0.0-rc23

  • 2026/02/04
  • [기능 추가]
    • Segment-level metrics 추가 - temporal action segmentation을 위한 세그먼트 단위 메트릭 계산 기능
  • [기능 수정]
    • TemporalAugmentation 개선
      • Fast mode 구현 - 시퀀스를 70%로 압축 후 마지막 프레임으로 패딩
      • Slow mode 수정 - 기존 no-op 문제 해결, 50%로 서브샘플링 후 보간하여 슬로우 모션 효과 구현
    • ResultVisualizer에서 frame sampling stride 지원하도록 개선
    • MulticlassFrameSelector에 zero glitch tolerance 기능 추가
  • [버그 수정]
    • ResultVerifier에 누락된 _prepare_cycle_indices 메소드 추가
    • 기타 minor bug 수정.
  • [리팩토링]
    • TransformerClassifier 초기화 설정 로깅 제거

1.0.0-rc22

  • 2025/11/24
  • [기능 수정]
    • CycleResultVerifer에 build 메소드 추가.

1.0.0-rc21

  • 2025/11/24
  • [기능 수정]
    • ResultVerifier 의 input type을 dict[str, Any] 에서 list[int] 로 변경.
    • ResultVerifier 의 extra_indices의 기준이 기존 class_index -> 주어지는 리스트에서의 위치로 변경.
    • ResultVerifier의 missing_index를 missing_class_indices 로 이름 변경.

1.0.0-rc20

  • 2025/11/19
  • [기능 수정]
    • det 경로이탈치 상향
    • det 내부에 경로 보관 queue size 증가
    • frame selection 내부에 glitch 처리 추가

1.0.0-rc19

  • 2025/11/12
  • [문서]
    • API Docs 내 누락된 CycleResultVerifier 관련 API 문서 추가.
    • 위와 관련하여 사용법 상세 추가.

1.0.0-rc18

1.0.0-rc17

  • 2025/10/29
  • [Hotfix]
    • Standby 클래스의 cycle_length 오류 수정.

1.0.0-rc16

  • 2025/10/27
  • [기능 추가]
    • standby 클래스에 last_frame 추가.
  • [기능 수정]
    • det_template 이 없는 클래스에 대하여, 비정상궤적 판단하지 않음.

1.0.0-rc15

  • 2025/10/24
  • [기능 수정]
    • cell checker 내부에서 detection score threshold를 기존 0.5에서 0.2로 수정.

1.0.0-rc14

  • 2025/10/15
  • [버그 수정]
    • 나가도 되지 않을 클래스 무시 처리.

1.0.0-rc13

  • 2025/10/15
  • [기능 추가]
    • tracked_anomaly_threshold 경로 편차 이상치 판단 임계값 추가 (기본 50)
    • det_template를 기본으로는 checkpoint로부터 불러올 수 있도록 추가
  • [기능 수정]
    • ContextSplitter에서 Timestamp (ms 단위) 사용 시, 대응할 수 있도록 수정.
    • Path를 통한 Anomaly 판단 로직 수정.
      • (average_distance, max_distance, within_score_ratio) -> distance로 수정.

1.0.0-rc12

  • 2025/10/14
  • [Hotfix]
    • full_interval 활용 시, margin None 으로 인한 Error 수정.

1.0.0-rc11

  • 2025/10/14
  • [기능 추가]
    • anomaly_by_cycle_detector 모드 추가. (full_interval, marginal_interval)
      • full interval 일 경우, stats에 {class_id: {lower_full: float, upper_full: float}, ...} 제공 시, lower_full <= cycle_length <= upper_full 방식으로 cycle anomaly를 판단함.
      • marginal_interval일 경우, stats에 {lower_margin: float, upper_margin: float, base_time: float} 제공 시, base_time - lower_margin <= cycle_length <= base_time + upper_margin 방식으로 cycle anomaly를 판단함.
      • interval 활용 시, lower_time, upper_time 키가 추가됨.
    • is_anomaly_by_tracked_coordinates 기능 구현.
      • get_cycles 아웃풋에 centers, average_distance, max_distance, within_score_ratio, path_template 키 추가.

1.0.0-rc10

  • 2025/10/13
  • [기능 수정]
    • 누락된 셀 위치 정보를 포함하는 상세 누락 상태 반환하도록 CellChecker 리팩토링
      • VisualAnomalyInferenceHandler.infer 메소드의 리턴에 cell_check_result 딕셔너리 필드가 추가되었습니다.
      • 셀 누락이 발생한 경우(is_anomaly_by_omitted_cell == True), cell_check_resultmissing_boxes 필드에 list[list[int]] 형식으로 누락된 위치의 박스를 리턴합니다.
      • 자세한 내용은 API Reference를 참고해주세요.

1.0.0-rc9

  • 2025/09/30
  • [Hotfix]
    • FrameSelector 내부 patience 8 -> 4 로 변경

1.0.0-rc8

  • 2025/09/30
  • [Hotfix]
    • checkpoint Load중 cycle_aware 키가 없을 경우 대응 처리.

1.0.0-rc7

  • 2025/09/29
  • [Hotfix]
    • 모델 호환성 추가 및 ContextSplitter 잘못 수정된 것 다시 수정.

1.0.0-rc6

  • 2025/09/29
  • [기능 추가]
    • *_standby 클래스를 위한 단측 검정 기능 추가
  • [버그 수정]
    • class를 {n}th_class 등으로 확장 시 누락되는 현상 수정.
  • [기능 수정]
    • FrameSelector 내부 patience 5 -> 8로 증가

1.0.0-rc5

  • 2025/09/29
  • [기능 수정]
    • FrameSelector 내부 patience 3 -> 5로 증가
    • sigma_level Validation 기능 기존 90%, 95%, 99% 유의수준에서, 양수로만 제한.

1.0.0-rc4

  • 2025/09/26
  • [기능 추가]
    • CycleCounterInferenceHandler 내 detection 기능 추가. cell과 robot arm head를 검출합니다. robot arm head는 class_index=2 입니다. Detection 모델을 사용하지 않는 경우, output에 detection key가 존재하지 않습니다.
    • 셀 정위치를 확인하는 CellChecker 기능이 추가되었습니다. detection 결과와 사전에 정의된 셀 bbox 정보를 활용하여 셀 존재 유무를 판단합니다. 셀이 하나라도 존재하지 않는 경우, CycleInfo의 is_anomaly_by_omitted_cell 값이 True로 전환됩니다.

1.0.0-rc3

  • 2025/09/25
  • [기능 추가]
    • CycleCounterInferenceHandler 내 set_anomaly_by_cycle_detector 메소드 추가
    • CycleInfo 내 불필요한 필드 제거 및 is_anomaly_by_omitted_cell, is_anomaly_by_tracked_coordinates 필드 추가
  • [버그 수정]
    • Cycle 기반의 비정상 판단 시, standard deviation이 0 일 경우 epsilon 추가.
    • infer의 타입 수정 (기존 [List[dict]] 에서 CycleInfo로 변경)
    • FrameSelection inference option 변경 시 최초 컨피그 보관 후 재빌드 하는 과정 추가.

1.0.0-rc2

  • 2025/09/23
  • [기능 추가]
    • VisualAnomalyInferenceHandler 추가
    • Cycle 기반의 비정상 판단 로직 추가
    • FrameSelector에서 한 동작에 여러 대표 프레임을 추출할 수 있도록 추가
    • SaigeObjectDetection, SaigeAnomalyDetection repo Submodule 추가

1.0.0-rc1

  • 2025/09/16
  • [버그 수정]
    • 추론 관련 딜레이 타이밍 오류 수정.

1.0.0-rc0

  • 2025/09/16
  • [기능 추가]
    • inference handler를 포함한 최초 기능 배포