Skip to content

Release notes

2.4.2

  • 2025.02.18
  • [버그 수정]
  • MemorySafeDataLoader에서 Dataset에서 발생한 에러로 인해 프로그램이 정지되는 버그를 수정하였습니다.

2.4.1

  • 2025.02.11
  • [기능 수정]
  • SAIGE VISION - GEN 기능으로 생성된 이미지의 확장자명을 규칙에 맞게 수정하였습니다.
    • ".saigeImg" -> ".saigeimg"

2.4.0

  • 2025.01.24
  • [기능 추가]
  • SAIGE VISION - GEN 기능으로 생성된 이미지의 복호화 기능을 추가하였습니다.
    • image loader 로 전달된 image_path 가 ".saigeImg"로 끝나는 경우, 복호화를 진행합니다.

2.3.2

  • 2024.12.20
  • [기능 추가]
  • 3가지 Augmentation(GaussNoise, AdvancedBlur, ElasticTransform)이 추가되었습니다.

2.3.1

  • 2024.12.13
  • [기능 변경]
  • SizeResizer에서 round를 사용할 수 있습니다.
  • [버그 수정]
  • Resizer 모듈에서 round 사용 시 resize가 제대로 작동하지 않는 버그 수정.

2.3.0

  • 2024.12.11
  • [기능 추가]
  • SaigeToolkit 버전 관리 개선
    • pip install version constraints
  • SaigeAlignmentError 에러가 추가되었습니다.
  • SaigeRotatedObjectDetectionError 에러가 추가되었습니다.
  • SaigeVideoClassificationError 에러가 추가되었습니다.
  • MemorySafeDataLoader 모듈이 추가되었습니다.
  • [기능 변경]
  • Resizer 모듈이 리팩터링 되었습니다.
    • 기존의 기능이 Resizer, SizeResizer, ScaleResizer, AreaSqrtResizer, MaxSizeResizer 모듈로 나누어 구현되었습니다.
    • SizeResizer에서 keep_aspect_ratio (bool) 옵션을 설정할 수 있습니다.
    • Transform 모듈을 통한 사용하는 방식은 동일합니다.

2.2.5

  • 2024.10.10
  • [기능 추가]
  • segment label이 이미지 영역을 벗어나는 에러 추가

2.2.4

  • 2024.10.10
  • [기능 변경]
  • traceback의 암호화를 제거했습니다.
    • 암호화된 string을 반출하지 못할 경우, 고객 응대가 불가능해지는 이슈.

2.2.3

  • 2024.09.25
  • [기능 추가]
  • Segment class index 관련 에러 추가

2.2.2

  • 2024.09.09
  • [버그 수정]
  • Typing 오류 수정
  • 라이브러리 버전 업데이트
    • numpy==1.24.2
    • onnxruntime-gpu 이슈

2.2.1

  • 2024.09.09
  • [버그 수정]
  • mkdocs 자동 문서 build가 되지 않는 현상 해결

2.2.0

  • 2024.09.06
  • [기능 변경]
  • 라이브러리 버전 업데이트
    • 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.23.2
    • pandas랑 protobuf 이슈로 인한 업데이트
    • matplotlib==3.8.4
    • pandas랑 protobuf 이슈로 인한 업데이트

2.1.2

  • 2024.09.05
  • [기능 추가]
  • SaigeCableMonitoringError 에러가 추가되었습니다.
  • Transform에 inspection_size_wh가 정의되어 있어도, 해당 크기로 resize하지 않고 내보낼 수도 있게 기능이 추가되었습니다.
    • Transformoversized_image_handling 인자가 추가되었습니다.
  • Resizer를 사용해서 resize시에 round_resize를 제외하고 진행할 수도 있게 기능이 추가되었습니다.
    • Resizer의 call method에 ignore_round 인자가 추가되었습니다.
  • 참고: VISIONPRD-1101

2.1.1

  • 2024-09-04
  • [기능 추가]
  • get_error_message가 sdk에서 사용되고 있는것으로 확인되어, 기능을 복원합니다.

2.1.0

  • 2024-08-08 (PR7708, PR7750)
  • [버그 수정]
  • ocr_cropper debug
  • [기능 변경]
  • 이제 error message가 api output에서 직접 출력됩니다.
    error_code, error_message, result = api()
    
    • 이에 따라 SaigeToolkit의 api 중 get_error_message가 제거되었습니다.
    • 이에 따라 SaigeError의 사용법이 달라졌습니다.
    • VISIONPRD-1029 이슈 및 Development guide 문서의 SaigeError 정의 섹션을 참고해 주세요.
    • 이에 따라 util/test.py의 get_print_function 이 제거되었습니다.
    • 따라서 기존 코어의 api test 스크립트는 get_print_function 을 거치지 않고 바로 check_and_print 를 사용하도록 수정되어야 합니다.
  • 기존 checkpoint/metadata/metadata.py 의 handle_unpickling_error wrapper가 util/pickle.py 경로로 옮겨졌습니다.
  • [기능 개선]
  • 기본 error message에 추가적인 message 를 argument로 입력할수 있도록 SaigeError 클래스를 개선했습니다.
  • image_load 시 발생하는 에러에 대한 messaging을 개선했습니다.

2.0.1

  • 2024-07-23 (PR7618)
  • 툴킷을 사용하는 코어 기능에서 mkdocs build 전 빠르게 툴킷을 설치할 수 있도록, setup 시 Docs PACKAGEMODE를 추가함.
  • Installation guide에 Docs PACKAGEMODE 설명을 추가함.
  • [버그 수정]
  • util/test.py 에서 불필요한 주석 제거.
  • ImageProcessor의 head_error를 SaigeSegmentationError에서 SaigeToolkitError로 변경함.

2.0.0

  • 2024-07-10 (PR7507)
  • 2.0.0 버전 업데이트
  • 문서화 파이프라인 버그와, 문서화가 실패해도 파이프라인이 종료되지 않던 문제를 수정했습니다.
  • 버전 태그 생성 시 Teams 알림 기능을 추가했습니다.
  • 2024-07-10 (PR7499)
  • 모듈 및 클래스를 lazy import 하기 위한 모듈을 utils에 추가했습니다.

0.0.21

  • 2024-07-09 (PR7494)
  • SaigeToolkit.util.test.get_print_function 함수의 입력 인자를 추가했습니다.
  • check_and_print 시에 output 값을 같이 출력할지 말지를 조정할 수 있습니다.

0.0.20

  • 2024-07-02 (PR 7446)
  • SaigeToolkit에서 제공되는 API에 대한 docs를 추가했습니다.
  • 문서는 research/{SaigeToolkit}/{version}/SaigeToolkit/API Reference 에서 확인할 수 있습니다.
  • SaigeToolkit docs의 대문 페이지를 수정했습니다.

0.0.19

  • 2024-07-01 (PR 7424)
  • ResearchToolkit 도큐멘테이션 빌드 파이프라인을 추가했습니다.
  • 기존 가이드 문서 경로를 contrib -> Guide로 변경했습니다.
  • SaigeToolkit 문서: research/{SaigeToolkit}/{version}/SaigeToolkit
  • ResearchToolkit 문서: research/{SaigeToolkit}/{version}/ResearchToolkit
  • SaigeToolkit 가이드 문서: research/{SaigeToolkit}/Guide
  • 2024-07-01 (PR 7426)
  • README 파일을 수정했습니다.

0.0.18

  • 2024-07-01 (PR 7418)
  • SaigeToolkit 패키지로 사용할 수 있게 변경되었습니다.
  • pip install git+https://dev.azure.com/SaigeResearch/Research/_git/SaigeToolkit@{commit} 으로 설치하여 사용합니다. SaigeToolkit을 사용하는 레포에서 requirements 수정이 필요합니다.
  • 배포용으로는 즉, Cythonize하여 사용할 경우에는 전역 변수 PACKAGEMODE 를 "Deploy"로 설정 후, 설치하시면 됩니다.

0.0.17

  • 2024-06-26 (PR 7397)
  • 툴킷 개발/사용시 참고할 수 있는 가이드 문서를 작성해 레포에 포함했습니다.
  • CD 파이프라인에 가이드 문서 배포 로직을 추가했습니다. 이 문서는 단일 버전으로 유지합니다.
  • 툴킷 PR 템플릿의 체크리스트에 가이드 문서 링크를 추가했습니다.

0.0.16

  • 2024-06-25 (PR 7385)
  • [Requirements]
  • 이제 requirements를 requirements/ 폴더에다 common / dev / prod / docs 네 가지 파일로 나누어 관리합니다.
    • common: 필수 패키지
    • dev: 연구용 패키지 + common
    • prod: 배포용 패키지 + common
    • docs: 문서화 디펜던시 모음
    • 기존 requirements.txt 파일은 dev requirements를 설치하도록 리디렉션 했습니다 (사용 편의상).
  • 몇몇 더 이상 안 쓰이는 디펜던시를 제거했습니다.
    • six==1.16.0, hgtk==0.1.3, pretrainedmodels==0.7.4, pycls==0.1.1, networkx==2.8.7
  • [Pipelines]
  • 위 변경사항에 따라 일반 테스트에는 dev를, Cythonize 테스트 시에는 prod를 설치하도록 했습니다.
  • 파이프라인에서 불필요한 구문을 제거했습니다.
  • Cythonized API 테스트 시 *_api.py 포맷에 맞는 파일들을 모두 테스트 하도록 동작을 수정했습니다.

0.0.15

  • 2024-06-24 (PR 7359)
  • LogHandler 리팩터링 했습니다.
    • save_code 메소드 변경하고 docstring 추가했습니다.
    • save_source_info 인풋 인자의 이름을 변경했습니다.
  • sampler, batch_sampler, dataloader, dataset, log_handler 에 대한 테스트를 추가했습니다.
  • 기존 Dataloader 하위 파일이던 InfiniteRandomSampler를 Sampler 모듈로 분리해 관리합니다 (batch_sampler와 구분하기 위함).
  • Dataloader 모듈을 삭제했습니다.
  • Full2PatchDataloader가 사실상 쓰이지 않고, InfiniteRandomSampler도 옮겨지면서 torch Dataloader 이외에 소스가 남지 않아 제거했습니다.
  • BatchSampler 하위 구현 중 class_sampler 와 balanced_sampler 구현을 다시 복원했습니다.
  • 테스트 과정에서 발견한 기타 버그 픽스.
  • requirements에 omegaconf==2.2.2, tensorboard==2.10.0 를 추가했습니다. SaigeToolkit을 사용하는 레포에서 requirements 수정이 필요합니다.

0.0.14

  • 2024-06-21 (PR 7341)
  • API로 제공되는 코드를 별도의 api.py 파일로 분리해 명확성을 높였습니다.
  • checkpoint/metadata.py의 중복 구현을 제거하고 SaigeToolkit 기능으로 동작을 통합했습니다.
  • CheckpointHandler 및 metadata api에 대한 테스트를 추가했습니다.
  • (관련 레포에서 코드 작업 필요)
  • SaigeToolkit.checkpoint.checkpoint 모듈을 SaigeToolkit.checkpoint.checkpoint_handler 로 이름 변경했습니다 .
  • 기존 SaigeToolkit.checkpoint.metadata 에서 불러오던 api 기능은 SaigeToolkit.checkpoint.metadata.api 경로로 임포트 구문을 수정해야 합니다.

0.0.13

  • 2024-06-21 (PR 7339)
  • Version 파일을 추가했습니다.
  • 문서화를 위해 setuptools, logging 폴더를 모듈로 변경했습니다 (init 추가).
  • 기존 logging 모듈이 빌트인 logging과 중복되는 문제가 있어 log로 모듈 이름을 변경했습니다.
  • mkdocs용 리소스 및 requirements, mkdocs yml 파일을 추가했습니다.
    • 소스를 훑으면서 자동으로 문서화 해 주도록 보조 파이썬 스크립트 및 yml 내용을 구성했습니다. 세부 파일 내용 참고.
  • 버전 태그가 푸쉬되면 작동하는 문서화 CD 파이프라인을 구성했습니다.

0.0.12

  • 2024-06-19 (PR 7323)
  • 베이스클래스를 선언하는 파일들에 base_~~~ 파일명 컨벤션을 적용했습니다
  • base.py -> base_sampler.py, base.py -> base_transform.py
  • 빌더 파일들에 일괄적으로 builder.py 파일명 컨벤션을 적용했습니다.
  • tranform/util.py -> transform/function_util.py 네이밍 변경
  • 해당 파일은 ~~_function.py 파일들에서 사용되는 기능 모음으로, 더 명확한 이름으로 변경했습니다.
  • transform/roi 모듈로 roi 관련 기능을 transform 으로부터 분리했습니다.
  • transform/augmentaion/compose 모듈로 compose 관련 기능을 augmentation 으로부터 분리했습니다.
  • data/type 모듈은 이제 데이터클래스 선언 및 관련 기능 관리만을 수행하므로 data/dataclass 모듈로 이름을 변경했습니다.
  • metric/segment에 정의된 compute_segment_intersection_area 메서드를 data/dataclass/segment로 이동했습니다.
  • 기타 임포트 경로를 수정했습니다.

0.0.11

  • 2024-06-19 (PR 7318)
  • SaigeDataset 리팩터링했습니다.
    • img_size attribute를 제거했습니다.
    • docstring 수정했습니다.

0.0.10

  • 2024-06-19 (PR 7309)
  • 더 이상 사용되지 않는 모델 구현을 추가로 제거했습니다.
    • SaigeToolkit.model.backbone 하위의 regnet, resnet, squeezenet, vgg를 제거했습니다.
    • (ForwardHookFeatureExtractor에서 backbone으로 resnet*을 사용하는 모델은 resnet*_torchvision으로 변경 필요)
    • SaigeToolkit.model.neck 하위의 fpn_mask_text_spotter_v3를 제거했습니다.
  • torchvision에서 가져올 수 있는 weight 관련 코드를 제거하고 import해서 사용하도록 변경했습니다.

0.0.9

  • 2024-06-18 (PR 7299)
  • DefectGeneration 레포로부터 EdgeCropper 구현을 이관했습니다.
  • Cropper builder를 리팩터링했습니다.
  • Cropper 테스트 코드 및 테스트 컨피그를 추가했습니다.
  • Augmentation 및 Compose 샘플 컨피그를 테스트 파일로 위치를 옮겼습니다.
  • 2024-06-18 (PR 7303)
  • Pipeline 실행 시 Cythonize setup 이 에러로 종료되면 파이프라인에서도 Fail로 판별하도록 스크립트를 수정했습니다 (기존에는 어떤 식으로 종료되어도 Success로 판별하고 API 테스트를 이어 수행했습니다).

0.0.8

  • 2024-06-18 (PR 7295)
  • 연구소 코딩 스타일 가이드에 맞게 전반적으로 코드를 수정했습니다.
    • 가변 객체 기본값 사용하지 않게 변경
    • import 정리
    • etc.

0.0.7

  • 2024-06-18 (PR 7294)
  • transform.py 주요 구성요소의 네이밍을 변경했습니다.
    • MultiResizer -> StackedResizerHandler (Resizer의 리스트를 관리하는 클래스)
    • InspectionSizeHandler -> InspectionSizeResizer (Inspection size 반영을 위한 Resizer 서브클래스)
  • MultiResizerInspectionSizeHandler 의 초기화가 inspection_size_wh setter에 암묵적으로 숨겨져 있는 문제를 완화했습니다.
    • Transform init 과정에서 명시적으로 타입을 지정하고 None 값을 대입하는 처리를 추가했습니다.
  • ImageProcessor API 임포트 시 불필요한 모듈이 임포트 되지 않도록 임포트 경로를 변경했습니다 (관련 레포에서 코드 작업 필요).
    • SaigeToolkit.data.transform.augmentation.ImageProcessor -> SaigeToolkit.data.transform.augmentation.api.ImageProcessor
  • 가독성을 위해 Transform 모듈 구조 및 파일 네이밍을 변경했습니다.
    • Transform 에서만 쓰이는 사용자 지정 타입 variable을 transform/typevar.py 로 모았습니다.
    • [파일명 변경]
      • transform.augmentation.functional -> transform.augmentation.augment_function
      • transform.augmentation.transform -> transform.augmentation.augment_transform
      • transform.functional -> transform.image_function
      • transform.box -> transform.box_function****
      • transform.polygon -> transform.polygon_function
  • transform.augmentation.base 파일에는 베이스클래스의 선언만 남기고, 같은 파일의 기타 유틸리티성 메서드들은 transform.augmentation.util 파일로 나누어 관리합니다.
  • 기타 low-level import들을 제거하고, 기능적으로 관련된 하이레벨 모듈 임포트 시 함께 임포트 되도록 수정했습니다.

0.0.6

  • 2024-06-18 (PR 7290)
  • SaigeError를 통합했습니다.
  • PyTorch나 NumPy 등 다른 라이브러리의 알려진 에러들을 SaigeError로 바꾸도록 error handler를 수정했습니다.
  • 기존에는 torch.cuda.OutOfMemoryError만 따로 처리하고 있었으나, 이제 다른 에러들도 처리할 수 있도록 구조를 변경했습니다.
  • 에러 처리 관련 코드들의 타입 오류를 수정했습니다.

0.0.5

  • 2024-06-17 (PR 7273)
  • 여러 레포에서 동일하게 사용되는 LogHandler를 추가했습니다.
    • SaigeToolkit.logging
    • Tensorboard 외의 다른 dashboard를 사용하고 싶은 경우, DashBoard를 상속받아서 해당 레포에서 추가 구현하는 작업이 필요합니다.
  • API 테스트에 공통적으로 사용되는 함수를 추가했습니다.
    • SaigeToolkit.util.test.py 파일 내 함수들.
    • 기존의 sweep 함수의 이름을 sweep_options로 변경하였습니다.
  • 다수의 레포에서 사용되는 images_to_4d_tensor 함수를 추가했습니다.
    • DET, SEG2, IEN, CLS2, IAD 에서 data collate에 사용됨.
    • SaigeToolkit.data.collate.py

0.0.4

  • 2024-06-17 (PR 7268)
  • (레거시 코드를 사용 중인 레포에서 코드 이전 작업 필요)
  • image_aug, text_aug를 포함한 이전 augmentation 구현을 제거했습니다.
  • ~~Sampler 구현 중 레거시화 된 BalancedSampler, ClassBalancedSampler를 제거했습니다.~~ 0.0.15 버전에서 revert 되었습니다.
  • 레거시화 된 데이터셋 컨피그 및 샘플 데이터, 테스트, 빌더 메서드 등을 제거했습니다.
  • Cropper 구현 중 레거시화 된 FixedOcrCropper류, ClosePolygonRejectingCropper를 제거했습니다.
  • DirectoryDataset, MixDataset 구현을 제거했습니다.
  • CLS2에서 더 이상 사용하지 않는 ClsDataset 구현을 제거했습니다.
  • graph_sorter 모듈을 제거했습니다.

0.0.3

  • 2024-06-14 (PR 7265)
  • 실험에만 사용되는 것이 명확한 코드들을 ResearchToolkit 폴더로 이동했습니다.
    • SaigeToolkit.experiment -> ResearchToolkit.experiment
    • SaigeToolkit.notion -> ResearchToolkit.notion
  • 더 이상 사용되지 않는 모델 구현을 제거했습니다.
    • SaigeToolkit.model.backbone 하위의 block, hardnet, mobilenet, nasnet, resnet_을 제거했습니다.
    • SaigeToolkit.model.layer 전체를 제거했습니다.
  • CLS2에서 더 이상 사용하지 않는 SaigeToolkit.learning.loss 구현을 제거했습니다.
  • 사용되는 곳이 없는 Singleton 클래스를 제거했습니다.

0.0.2

  • 2024-06-14 (PR 7263)
  • Toolkit 상위 단 모듈들의 __init__에 작성된 임포트를 대부분 제거해 의도치 않은 모듈 임포트를 방지했습니다. 상위 모듈에서의 임포트를 사용하고 있었다면, 아래와 같은 임포트 경로 수정이 필요합니다 (관련 레포에서 코드 작업 필요).
    • SaigeToolkit.checkpoint.CheckpointHandler -> SaigeToolkit.checkpoint.checkpoint.CheckpointHandler
    • SaigeToolkit.learning.DeviceManager -> SaigeToolkit.learning.device.DeviceManager
    • SaigeToolkit.learning.build_loss -> SaigeToolkit.learning.loss.build_loss
    • SaigeToolkit.learning.build_optimizer -> SaigeToolkit.learning.optimizer.build_optimizer
    • SaigeToolkit.learning.build_scheduler -> SaigeToolkit.learning.scheduler.build_scheduler
    • SaigeToolkit.model.build_backbone -> SaigeToolkit.model.backbone.build_backbone
    • SaigeToolkit.model.build_feature_extractor -> SaigeToolkit.model.feature_extractor.build_feature_extractor
    • SaigeToolkit.model.build_neck -> SaigeToolkit.model.neck.build_neck
    • SaigeToolkit.util.read_yml -> SaigeToolkit.util.config.read_yml
    • SaigeToolkit.util.load_files -> SaigeToolkit.util.file_handler.load_files
    • SaigeToolkit.util.Timer -> SaigeToolkit.util.timer.Timer
    • SaigeToolkit.util.CudaMemoryTracker -> SaigeToolkit.util.memory.CudaMemoryTracker
    • visualize 모듈의 모든 함수들 SaigeToolkit.visualize.XXX -> SaigeToolkit.visualize.(util/draw/overlay).XXX

0.0.1

  • 2024-06-13 (PR 7245)
  • Toolkit 내 폰트 파일 2종을 제거하고, visualize/draw의 draw_text 메서드에서 이를 디폴트로 사용하는 동작을 제거했습니다 (관련 레포에서 코드 작업 필요).
  • Pytest 시 deprecation warning을 유발하는 부분을 최신 구현으로 대체했습니다.
    • torchvision model 로드 시 pretrained=True 인터페이스가 weights로 바뀌었으며, 기존 동작을 유지하면서 새 인터페이스로 변경하는 작업을 진행했습니다. https://pytorch.org/vision/stable/models.html 참고
    • PIL의 Image.BILINEAR 등의 값들이 deprecate 되어 Image.Resampling.BILINEAR 등의 값으로 변경했습니다.