Release notes
2.3.2
2025/03/24
SaigeToolkit 버전 업데이트: 2.5.1
[기능 개선]
AnalysisHandler를 통한 analyze()에 동시성 프로그래밍 적용.
2.3.1
2025/02/05
SaigeToolkit 버전 업데이트: 2.4.0
2.3.0
2025/01/16
SaigeToolkit 버전 업데이트: 2.3.1
[문서 수정]
[기능 개선]
[기타]
SaigeToolkit 버전 관리 개선 사항 적용
2.2.1
2024/10/10
SaigeToolkit 버전 업데이트: 2.2.5
2.2.0
2024/09/26
SaigeToolkit 버전 업데이트: 2.2.3
rc3
2024/08/20
SaigeToolkit 버전 업데이트: 2.2.2
[기타]
rc2
2024/08/20
[기타]
유지보수를 위해 내부 코드 리팩터링 (API 변경 없음)
rc1
2024/08/12
SaigeToolkit 버전 업데이트: 2.1.0
[기능 변경]
[VISIONPRD-1085] error message를 api output에서 직접 출력하도록 수정
error_code, error_message, result = api()
rc0
2024/07/31
SaigeToolkit 버전 업데이트: 2.0.1
[기능 개선]
Lazy import를 적용하여 실제 모듈들이 사용되기 전까지 세부 파일들을 import 하지 않도록 수정
2.1.21
2024/07/11
SaigeToolkit 버전 업데이트: 2a00aeb5
[기능 개선]
2.1.20
2024/07/02
[Bug fix]
학습시 batch_size를 절반으로 잘못 사용하고 있던 문제 해결
2.1.19
2024/06/13
[Bug fix]
NG 판별시 threshold 값을 포함하여 계산하도록 수정
2.1.18
2024/06/04
[Bug fix]
Validation 과정에서 GPU 메모리를 많이 사용하는 문제 해결
2.1.17
2024/05/28
SaigeToolkit 버전 업데이트: 09cefc50
[기능 개선]
학습 중 loss 값에 NaN이 포함되어 있는 경우 NanLossError를 발생시키도록 변경
2.1.16
2024/04/29
SaigeToolkit 버전 업데이트: e11ace81
[기능 추가]
[기능 개선]
[Bug Fix]
[기타]
유지보수를 위해 다수의 내부 코드 리팩터링 (Augmentation 추가 이외의 API 변경 없음)
사용되지 않는 기능, 코드, 의존성 제거
2.1.15
2024/02/26
[기능 삭제]
Trainer.build() 의 config에 num_micro_batches 옵션 삭제
micro batch 기능이 연구팀 내부에서 자동으로 적용되도록 변경
2.1.14
2024/02/20
[기능 추가]
권장 스펙에서 모델을 학습할 수 있도록 micro batching 기능 추가
Trainer.build() 의 config에 num_micro_batches 옵션 추가
batch를 batch_size // num_micro_batches 크기의 num_micro_batches개의 micro batch로 나누어 학습하여 메모리를 절약
2.1.13
2024/01/29
SaigeToolkit 버전 업데이트: 58954162 (ROI 처리 로직 변경)
[기능 개선]
ROI 설정시 큰 이미지에서 processing 시간이 과도하게 걸리는 문제 해결
[기능 추가]
setup시 pretrained weight를 다운로드 하지 않고, build 폴더로 저장하지 않는 --without-pretrained-model 옵션 추가
2.1.12
2024/01/09
SaigeToolkit 버전 업데이트: 70262443 (Checkpoint 메타데이터 크기 변경)
[기능 변경]
2.1.11
2023/12/28
SaigeToolkit 버전 업데이트: 2061e71d
2.1.10
2.1.9
2023/12/14
[Bug Fix]
InferenceHandler 에서 inference_time이 잘못 측정되던 문제 해결
SaigeInferenceOptimizer를 적용할 수 있도록 모델 구조 수정
2.1.8
2023/12/13
SaigeToolkit 버전 업데이트: 1b013624
[기타]
유지보수를 위해 다수의 내부 코드 리팩터링 (코드 60.1% 변경; API 변경 없음)
CLS, SEG, DET와 비슷한 형식으로 코드 구조 변경
사용되지 않는 기능, 코드, 의존성 제거
[성능 개선]
DataLoader 속도 향상을 위한 InfiniteRandomSampler 추가 (SaigeToolkit d6e54f)
DataLoader config 변경 (num_worker=8, pin_memory 추가 등)
Training 속도 향상을 위해 Trainer 에 AMP 적용, sub batch 학습 제거 (모델에 따라 GPU 메모리 사용량 4.5 ~ 5.4배 증가)
Validation 속도 향상을 위해 InferenceHandler 에 AMP 적용, batch_size 변경, 불필요한 Postprocess 제거
[기능 개선]
[기능 변경]
Trainer.build() 의 config에 train_batch_size를 batch_size로 이름 변경
2.1.7 변경사항 되돌림
2.1.7
2023/11/08
SaigeToolkit 버전 업데이트: ef3ac155
[기능 변경]
Analysis의 중간 결과를 zstandard library를 사용하여 압축한 뒤, 저장 및 불러오기를 하도록 수정
2.1.6
2023/08/14
SaigeToolkit 버전 업데이트: e7f1e085
[Bug Fix]
checkpoint save시 경로에 한글 이름이 들어가면 뜨는 에러 해결
2.1.5
2023/08/07
SaigeToolkit 버전 업데이트: a4a5b076
[Bug Fix]
Windows에서 0번 이외의 GPU 사용 시 속도 저하 및 메모리 이슈 해결
2.1.4
2023/08/03
배포시 모델정보를 숨기기 위해, 파일이름을 변경하고, 사용하지 않는 모델은 build하지 않도록 수정.
2.1.3
2023/07/31
SaigeToolkit 버전 업데이트: 7989cc7
timer관련 버그 해결: 사용하지 않는 gpu에 메모리 올리는 버그, batch_size가 1보다 큰 경우 음수 나오는 버그
2.1.2
2023/07/18
SaigeToolkit 버전 업데이트: 93f3a5
[bug fix]
Trainer.build()시에 data["validation_images"]에 데이터가 존재한다면, 반드시 OK와 NG를 적어도 1개 이상씩 가지고 있어야 합니다.
Training시 corruption이 너무 크게 적용되고 있던 문제를 수정했습니다.
Corruption을 Gaussian noise로 주고 있던 것에서 psuedo simplex noise로 변경했습니다.
Projection layer에 대한 loss를 잘 못 계산하고 있던 문제를 수정했습니다.
SaigeToolkit에서 이미지 resize시 기본값으로 cv2를 사용해서 생기던 문제를 수정했습니다.
scoremap에 smoothing=0으로 적용되고 있던 것을 smoothing=5로 변경하였습니다.
2.1.1
2023/07/12
SaigeToolkit 버전 업데이트: ac99d5
[기능 변경]
Trainer.build()시에 synthetic_validation 파라미터가 제거되었습니다: validation_images를 넣지 않는 경우 자동으로 synthetic validation을 사용합니다.
Synthetic validation 알고리즘이 변경되어 1장의 학습 이미지로도 사용이 가능합니다.
[기능 추가]
Trainer.get_validation_schedule()시에 density_level 파라미터 추가
2.1.0
2023/07/10
[기능 삭제]
Trainer.get_total_num_iterations() api 삭제
[기능 추가]
Trainer.build()시에 synthetic_validation과 total_iterations 파라미터 추가
Trainer.get_validation_intervals() 추가: validation을 수행할 iteration 스케줄을 반환합니다.
[기능 변경]
network_type이름 변경(v2a_fast / v2a_standard / v2a_accurate)
모델이 변경되어 성능이 향상되고 API사용 방식이 변경되었습니다.
이전 버전 모델에 대한 학습은 지원하지 않습니다.
현 버전에서는 Trainer.build()시에 synthetic_validation을 사용하는 경우 학습 이미지가 2장 이상 필요합니다. 다음 버전에서 해당 제한이 사라질 예정입니다.
2.0.8
2023/06/14
[bug fix]
Trainer.train_one_step()이 끝나고 Trainer.post_train_process()시에 GPU 메모리 에러 해결
2.0.7
2023/06/01
SaigeToolkit: 622627b1
[bug fix]
scoremap에서 score가 0보다 작은 값이 나오는 문제를 해결
2.0.6
2023/05/15
[기능 개선]
Trainer.to_device() 호출 시 CPU로 보내는 경우 torch.cuda.empty_cache() 호출해 GPU 메모리 일부 해제
[기능 추가]
Anaylsis API: 모델 빌드 없이 analysis postprocess & summary 수행
[기능 변경]
2.0.5
2023/04/18
[기능 변경]
기존 Analysis API들은 제거되었습니다.
Analysis API가 InferenceHandler.analyze() & InferenceHandler.summarize_analysis() 로 변경되었습니다.
2.0.4
2023/04/14
SaigeToolkit: 88a43cee
[기능 변경]
torch version to 2.0.0+cu118
이름이 변경되었습니다. data_resize -> image_resize_wh Trainer.build
2.0.3
2023/03/24
[기능 변경]
network_type이름 변경(v2_fast / v2_standard / v2_accurate)
모델 알고리즘 최적화하였습니다.(메모리 사용량 관련)
2.0.2
2023/03/15
SaigeToolkit: 1651a98c5
[bug fix]
SaigeSegmentation==2.0.1 과 함께 사용하는 경우 발생하는 에러 해결
2.0.1
2023/03/15
SaigeToolkit: 42207d4c3
[기능 추가]
analysis data의 갯수가 0일때 error raise합니다.
InferenceHandler에 warmup API가 추가되었습니다.
[기능 변경]
params.max_batch_size → params.batch_size으로 이름이 변경되었습니다. 인퍼런스 시 항상 params.batch_size를 사용합니다.
인퍼런스 시 고정 GPU 메모리를 사용합니다.
params.batch_size은 InferenceHandler.build 시에만 적용 가능하며, set_inference_option 에서는 변경이 불가합니다.
[bug fix]
InferenceHandler에서 시간 측정 기능을 사용할 때, inferece_time이 제대로 측정되지 않던 버그가 해결되었습니다.
내부 알고리즘 변경하였습니다. (.contiguous())
2.0.0
rc8
SaigeToolkit 버전 업데이트: 77f73d88
[기능 추가]
이미지 사이즈와 무관하게 GPU 메모리 사용량을 제한하는 기능을 추가하였습니다. 인퍼런스 시 큰 이미지를 입력하면 더 많은 GPU 메모리를 사용하는 이슈를 해결하였습니다.
[기능 변경]
rc7
SaigeToolkit 버전 업데이트: b7ac6c
[bug fix]
windows에서 이미지 경로가 C: 드라이브가 아닌 경우 발생하던 에러 해결
[기능 추가]
inference_option에 params.max_batch_size 옵션 추가 (기본값 1)
[기능 변경]
InferenceHandler.finalize_analysis의 return 값 중 distribution_of_prediction 의 타입이 ndarray(float32) → ndarray(uint8) 로 변경되었습니다.
rc6
SaigeToolkit 버전 업데이트: 2b71326b
[기능 변경]
rc5
[기능 추가]
InferenceHandler.finalize_analysis후 distribution_of_prediction를 추가하였습니다.
[bug fix]
validation_images가 train_images와 겹칠 때 발생하던 warning을 제거하였습니다.
finalize_analysis, analyze_with_existing_data에서 0으로 나눌 때 발생하던 warning을 제거하였습니다.
rc4
[기능 변경]
inference_option 변경사항:
object_compute_area → calc_object_area_and_apply_threshold 로 변경되어, object의 area를 계산하고 threshold를 적용할지 여부를 나타냅니다.
object_compute_score → calc_object_score_and_apply_threshold 로 변경되어, object의 score를 계산하고 threshold를 적용할지 여부를 나타냅니다.
object_scoring_method의 기본 값이 average → mean으로 변경되었습니다.
object_area_method 의 기본 값이 fast → fast_plus로 변경되었습니다.
analysis시 input의 형태를 check하는 코드를 추가하였습니다.
Analysis시 label이 모두 ng이거나, 모두 ok인 경우 발생하는 에러를 해결하였습니다. 이 경우 analysis 결과 summary에서 일부 key를 출력하지 않습니다. InferenceHandler.finalize_analysis
입력 데이터(train_images, validation_images)의 labels의 키를 ng에서 is_ng로 받도록 수정하였습니다.
params.heatmap_color_range가 둘로 나뉘어, params.heatmap_color_range_min와 params.heatmap_color_range_max로 변경되었습니다.
post_train_process의 output 형태가 바뀌었습니다.Trainer.post_train_process
validate함수의 return값에서 FP와 FN을 제거하였습니다.
[기능 추가]
InferenceHandler.infer_and_postprocess 호출 시 objects 결과 값에 bounding_box, bounding_rot_box, fitted_ellipse가 기본으로 추가되었습니다.
inference_options에서 outputs.score_min과 outputs.score_max를 추가하였습니다.
train_one_step의 return값을 추가하였습니다. Trainer.train_one_step
InferenceHandler.finalize_analysis시에 distribution_of_prediction을 계산합니다. InferenceHandler.finalize_analysis
inference_option에서 Inference의 시간을 측정할 수 있는 outputs.time을 추가하였습니다. 관련 api로는 InferenceHandler.get_default_inference_option, InferenceHandler.get_inference_option, InferenceHandler.set_inference_option, InferenceHandler.infer_and_postprocess, InferenceHandler.finalize_analysis가 있습니다.
[bug fix]
analyze 2회 이상 수행시 postprocess 적용 안되는 버그 해결하였습니다.
Trainer.build시 validation_images가 빈 값일 경우 발생했던 에러를 해결하였습니다.
rc3
SaigeToolkit 버전 업데이트: 1aaa29e4
[기능 추가]
postprocess시 parameter와 기능이 추가되었습니다.
object_compute_area 파라미터가 추가되었고, area를 계산할지 여부를 나타냅니다.
object_compute_score 파라미터가 추가되었고, score를 계산할지 여부를 나타냅니다.
object_scoring_method 파라미터가 추가되었고, object의 scoring 방법을 나타냅니다.
object_score_threshold 파라미터가 추가되었고, object의 score가 threshold보다 큰 object만 return합니다.
[기능 변경]
set_analysis_data, Trainer.build시 데이터를 list에서 dictionary형태로 받습니다.
def set_analysis_data(self, images: Dict[str, Dict], labeled: bool) -> None: ...
finalize_analysis의 출력도 dictionary형태로 변경하였고, key는 입력의 key와 같습니다.
postprocess시 파라미터 이름이 변경되었습니다.
anomaly_threshold → anomaly_score_threshold
color_range → heatmap_color_range
area_threshold → object_area_threshold
score_threshold → object_boundary_threshold
rc2
SaigeToolkit 버전 업데이트: 482af7
SaigeToolkit의 체크포인트의 구조가 변경되어 빠른 metadata 읽기/쓰기를 지원합니다.
[기능 추가]
체크포인트의 metadata 읽기/쓰기를 위한 read_metadata(), write_metadata() API 추가.
rc1 이후 버전 체크포인트를 최신 버전 구조로 변환하는 convert_checkpoint() API 추가.
[기능 변경]
InferenceHandler의 inference_options 저장 기능이 사라졌습니다. 이에 따라 InferenceHandler.build() 로 인스턴스 생성 시 이전에 저장했던 inference_options를 자동으로 불러와 사용하는 동작이 제거되었고, 대신 config를 통해 inference_options를 세팅할 수 있도록 변경되었습니다. 따라서 inference_options를 metadata에 저장하고, 이 값을 build시에 읽어서 config에 입력해야합니다.
inference_options의 옵션들을 각 아이템 별로 세팅할 수 있도록 API가 변경되었습니다.
InferenceHandler.get_inference_options() → InferenceHandler.get_inference_option()
InferenceHandler.set_inference_options() → InferenceHandler.set_inference_option()
InferenceHandler.get_default_inference_options() → InferenceHandler.get_default_inference_option()
[기능 제거]
InferenceHandler.get_metadata() API 제거.
InferenceHandler.save_checkpoint() API 제거.
rc1
Postprocess에 heatmap추가.
[기능 추가]
postprocess의 outputs 옵션에 heatmap이 추가되었습니다.
postprocess의 params 옵션에 color_range이 추가되었습니다.
rc0