Skip to content

Release notes

2.3.1

  • 2025/06/20
  • [버그 픽스]
    • Train image에 물체가 없을 때 학습이 진행되지 않는 오류 해결
    • API의 rotation_modeoriented_bboxes_format으로 matching할 때 cv90과 360이 바뀌었던 것을 수정

2.3.0

  • 2025/06/18
  • [기능 변경]
    • 모델 build 시, loss에 사용되는 angle_penalty를 설정하지 않고 학습 방법(no_direction, two_way_direction, one_way_direction)에 따라 결정되도록 수정 -> 성능 변화
    • 모델 학습 시, augmentation으로 인해 중심이 이미지 밖으로 벗어난 물체는 학습 라벨에서 제외 -> 성능 변화
    • metric 계산 시, 데이터셋에 사용한 oriented_bboxes_format에 맞는 angle_similarity를 사용하도록 수정 -> (rotated) iou 값 변화
    • postprocess 시, 학습한 데이터셋의 oriented_bboxes_format에 맞도록 변환과정 추가 -> 모델 inference 결과 변화
    • object_threshold 설정 시, output의 score range가 [object_threshold, 100]에서 (object_threshold, 100]으로 변경 -> 모델 inference 결과 및 시간 변화
  • [기능 추가]
    • RodVisionprojDataset 추가
  • [기타 변경]
    • iou 계산에 사용되는 angle_similarity가 기존에 [linear, linear4, cos, cos4]에서 oriented_bboxes_format에 맞도록 변경
      if angle_similarity == "cxcywha_cv90":
          angle_diff = torch.abs(r1 - r2) % (1 / 2 * math.pi)
          angle_sim = 1 - torch.min(angle_diff, 1 / 2 * math.pi - angle_diff) / (1 / 4 * torch.pi)
      elif angle_similarity == "cxcywha_180":
          angle_diff = torch.abs(r1 - r2) % (math.pi)
          angle_sim = 1 - torch.min(angle_diff, math.pi - angle_diff) / (1 / 2 * torch.pi)
      elif angle_similarity == "cxcywha_360":
          angle_diff = torch.abs(r1 - r2) % (2 * math.pi)
          angle_sim = 1 - torch.min(angle_diff, 2 * math.pi - angle_diff) / torch.pi
      

2.2.9

  • 2025/06/05
  • [기능 변경]
    • Trainer.build의 head_aware (bool)rotation_mode (str)로 변경
      "rotation_mode": str,  # 물체의 대칭성을 고려하여 학습을 진행합니다.
                          90도 단위로 회전했을 때 object가 똑같다면 "no_direction",
                          180도 단위로 회전했을 때 object 똑같다면 "two_way_direction",
                          회전시 object가 달라진다면 "one_way_direction"를 사용할 수 있습니다. (default "one_way_direction")
      

2.2.8

  • 2025/05/28
  • [버그 픽스]
    • Symmetric(head_aware=False) 모드로 학습한 모델을 analyze 할 경우 발생하는 오류 해결

2.2.7

  • 2025/05/27
  • [버그 픽스]
    • Symmetric(head_aware=False) 모드로 학습한 모델이 정상적으로 validation & analysis 되지 않은 버그 해결

2.2.6

  • 2025/05/26
  • [버그 픽스]
    • Validation 도중 TypeError가 발생하는 오류 해결

2.2.5

  • 2025/05/20
  • [버그 픽스]
    • image_resize_wh가 특정 값(round)의 배수가 아닌 경우에 발생하는 오류 해결
  • [기능 추가]
    • infer_and_postprocess 결과에 각 물체의 면적("area": float) 추가
  • [기능 변경]
    • validate 결과가 F1 metric 기반의 값으로 출력되도록 수정 (mean_f1, class_{idx}_f1)

2.2.4

  • 2025/05/13
  • [기능 변경]
    • image_resize_wh의 가로의 길이와 세로의 길이가 동일해야 하는 조건 제거

2.2.3

  • 2025/05/02
  • [기능 추가]
    • inference option에 object_area_threshold 추가

2.2.2

  • 2025/04/30
  • [버그 픽스]
    • Validation image가 없을 때 학습이 진행되지 않는 오류 해결

2.2.1

  • 2025/04/28
  • [버그 픽스]
    • 라이브러리 충돌 이슈 해결을 위해 shapely를 2.0.4 -> 2.0.6 업데이트
    • 버전 업데이트 내역이 Teams 알림으로 전송되지 않는 이슈 해결

2.2.0

  • 2025/04/25
  • SaigeToolkit 버전 업데이트: 2.6.2
  • [기능 추가]
  • [기능 변경]
    • Trainer.build의 "labels" 입력 포맷 변경
      "labels": [
          {
              "class_index": int,
              "bounding_rot_box": list[float],  # [center_x, center_y, width, height, radian]
          },
          ...,  # times number of labels in the image
      ],
      
  • [기타 변경]
    • demo/train.py와 demo/inference.py 스크립트 추가

2.1.1

  • 2025/02/28
  • [버그 수정]
    • InferenceHandler.infer_and_postprocess의 리턴이 imread_timeparams.batch_size > 1인 경우, 과소 측정되던 버그 수정.
    • cythonize 된 모듈 사용시 발생하던 버그 수정.

2.1.0

  • 2025/02/10
  • SaigeToolkit 버전 업데이트: 2.4.0
  • [기능 변경]
    • 에러 관련 업데이트
      • error message를 api output에서 직접 출력하도록 수정했습니다.
        • error_code, error_message, result = api()
      • VISIONPRD-1029 이슈 및 Development guide 문서의 SaigeError 정의 섹션을 참고해 주세요.
      • error message에 추가적인 message 를 argument 로 입력할수 있도록 개선했습니다.
    • 라이브러리 버전 업데이트
      • python==3.11
        • python 현 버전(3.8)의 공식 지원이 곧 만료될 예정입니다. (2024-10까지)
        • 3.11 버전에서 속도 개선이 크게 이루어졌기 때문에, 업데이트를 수행합니다.
      • pytorch==2.3.0
        • 2.1: torch.compile 안정화
        • 2.2: FlashAttention-2 지원
        • 2.3: 사용자 정의 트리톤 커널 지원
      • numpy==1.24.2
        • pandas랑 protobuf 이슈로 인한 업데이트
      • matplotlib==3.8.4
        • pandas랑 protobuf 이슈로 인한 업데이트
  • [기능 추가]
    • lazy import 도입
      • 실제 모듈들이 사용되기 전까지 세부 파일들을 import 하지 않음.
    • MemorySafeDataLoader 도입
      • 1 이상의 num_worker를 설정하여 sub-process가 생성될 때, cpu memory가 부족한 등의 문제가 발생할 경우, error message 출력하는 기능.
      • CpuLowMemoryError, DataLoaderWorkerInitializationError

2.0.6

  • 2024/10/22
  • [기능 변경]
    • Trainer.build에서 n_classes를 기본값 1 삭제되고, multi-class 모델 학습 가능.
  • [기타 변경]
    • 데모 setup이 추가하여, 로컬 pc에서 사용가능한 형태로 패키징 가능. (README.md 참고)

2.0.5

2.0.4

2.0.3

  • 2024/08/19
  • [Bug Fix]
    • InferenceHandler.build시 모델 파일이 없어 생기던 에러 수정.
    • streamlit 데모에서 감지한 물체를 크롭하여 저장할 때 잘못 크롭되던 버그 수정.

2.0.2

  • 2024/08/08
  • InferenceHandler.infer_and_postprocess api 명세 수정.
  • [기능 변경]
    • InferenceHandler의 inference option의 일부 이름 및 타입 변경.
      • params.confidence_threshold (float)params.object_score_threshold (List[int])
        • [0, 1] 범위의 단일 스레시홀드에서, 클래스별로 [0, 100] 범위로 스레시홀드를 설정할 수 있도록 변경.
      • params.max_num_of_detections (int)params.max_num_of_detected_objects (List[int])
        • 클래스별로 정수 개수의 최대 detected_objects의 수를 설정할 수 있도록 변경.
    • 내부적인 timer 측정 로직 변경. (디바이스 이동, 포맷팅까지 포함하여 측정하도록 변경)

2.0.1

  • 2024/08/05
  • Initial release.
  • SaigeToolkit 버전 업데이트: cfb2b98a
  • SaigeInferenceOptimizer 버전 업데이트: 2.5.6
  • [기능 변경]
    • InferenceHandler의 inference option의 일부 이름 변경. 및 삭제.
      • [이름 변경]
        • params.nms.confidence_thresholdparams.confidence_threshold
        • params.nms.max_detparams.max_num_of_detections
      • [삭제]
        • params.nms.apply
        • params.nms.iou_threshold
        • params.nms.class_agnostic
        • params.nms.classes

2.0.1.rc0

  • 2024/08/01
  • Initial release candidate.
  • [주요 사항]
    • Multipage, ROI 기능 지원 안함.
    • Multi-class 기능 지원 안함. Trainer.build 호출 시 n_classes가 1로 전달되어야함.