Release notes
2.2.4
2025/03/07- SaigeToolkit 버전 업데이트:
2.5.0 [버그 수정]- train/validation image가 비어있는 경우, train/validation 이 정상작동 하지 않는 위험 방지
[기능 추가]- 사전학습되지 않은 character 검출 가능
- 검출하고자하는 character_set을 받아 처리하는 로직 추가
- analyzer api spec 변경
- rec용 CHARACTER_SET api 추가
- rec 모델에 사전 학습된 character dictionary 제공
- 사전학습되지 않은 character 검출 가능
2.2.3
2025/02/04- SaigeToolkit 버전 업데이트:
2.4.0
2.2.2
2025/01/10[버그 수정]- label이나 prediction에 text가 공백('')인 경우 발생하는 에러 해결
[기능 개선]- Data processing 효율 개선
- DET 학습 시 이미지가 큰 경우 학습 속도가 더뎌지는 현상 개선
- 이미지가 큰 경우의 inference 속도 개선
- Data processing 효율 개선
2.2.1
2024/12/20- SaigeToolkit 버전 업데이트:
2.3.1 [기능 변경]- metric 개선
- GT-pred matching 계산 개선
- gt-pred 쌍이 겹치는 글자 수에 비례하여 threshold 되도록
- metric 개선
2.2.0
2024/12/12- SaigeToolkit 버전 업데이트:
2.3.0 [문서 수정]- SaigeToolkit 의 설치 방법이 바뀌었음.
- pip install version constraints
- SaigeToolkit 의 설치 방법이 바뀌었음.
[기능 추가]MemorySafeDataLoader- 1 이상의 num_worker를 설정하여 sub-process가 생성될 때, cpu memory가 부족한 등의 문제가 발생할 경우, error message 출력하는 기능.
CpuLowMemoryError,DataLoaderWorkerInitializationError
2.1.7
2024/12/06[문서 수정]- Analyzer build 시 무시되는 parameter에 대한 설명이 표기된 것 삭제.
- "outputs.time"
- "params.batch_size"
- "params.max_num_of_text_objects"
- "params.inspection_size_wh"
- "params.oversized_image_handling"
Analyzer.summarize_analysisDocs 수정- save_dir 이외에 불필요하므로 삭제
DetRecKieInferencer에change_resize_scale누락된 것 추가
- Analyzer build 시 무시되는 parameter에 대한 설명이 표기된 것 삭제.
2.1.6
2024/11/21[버그 수정]- OcrCropperAPI 가 crop에 실패하는 경우 잘못된 에러를 출력하는 문제 해결.
- InvalidPolygonError 에러 추가.
- OcrCropper 내부 알고리즘 개선.
- OcrCropperAPI 가 crop에 실패하는 경우 잘못된 에러를 출력하는 문제 해결.
2.1.5
2024/11/06[문서 수정]- docstring 일부 잘못 표기된 부분 수정
- KIE trainer 의 target_text_size 가 int 가 아닌 str 로 표기된 부분 수정
- DET/REC/KIE trainer / inferencer 의 device 세팅에서
torch.device타입이 누락된 부분 수정
- docstring 일부 잘못 표기된 부분 수정
2.1.4
2024/10/31[버그 수정]- Recognition 학습 중 infinite loss 가 발생하는 현상 해결.
- 알고리즘 버그 해결
- infinite loss 발생 시 error code 지정.
- Recognition 학습 중 infinite loss 가 발생하는 현상 해결.
2.1.3
2024/10/16[버그 수정]- Recognition
Literal모델에 Pattern decoder 설정시 output 이 나오지 않는 현상을 해결했습니다.
- Recognition
2.1.2
2024/10/15[버그 수정]- Recognition
Contextual모델에 Pattern decoder 설정시 output 이 나오지 않는 현상을 해결했습니다. - 알려진 이슈: Recognition
Literal모델의 경우 pattern decoder 사용시 output 이 나오지 않는 현상이 있습니다.
- Recognition
2.1.1
2024/10/11- SaigeToolkit 버전 업데이트:
2.2.5
2.1.0
2024/09/25- [minor 버전 정식 배포]
2.1.0
2.1.0-rc6
2024/09/11[버그 수정]- polygon sorting 과정에서 type error 수정
2.1.0-rc5
2024/09/10- SaigeToolkit 버전 업데이트:
2.2.1 - [기능 변경]
- 라이브러리 버전 업데이트
- 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 이슈로 인한 업데이트
- python==3.11
- 라이브러리 버전 업데이트
2.1.0-rc4
2024/08/26[기능 추가]- recognition v2_literal 모델이 처리할 수 있는 max 캐릭터 수 제한.
- 현재 약 256 글자를 읽을수 있게 세팅.
- optimize 시에 미리 max_shape 을 설정해두어야 하기 때문.
- 최적화 후에 과도하게 큰 input이 입력되지 않도록 최대값 설정.
- recognition v2_literal 모델이 처리할 수 있는 max 캐릭터 수 제한.
2.1.0-rc3
2024/08/20[기능 개선]- v2_literal model이 text를 잘 맞추는경우 100점에 가깝게 출력되도록 수정
[Bug Fix]- inference 결과의 "labels"에 invalid_indices가 반영되지 않는 부분 해결
2.1.0-rc2
2024/08/08[기능 변경]- det model build option 중
representer_type이름 변경- available_options: [
curved,straight] flat=>straight
- available_options: [
- recognition v1 model
network_type이름 변경- available_options: [
v2_literal,v2_contextual_{fast/accurate}_{short/medium/long}] v2_advanced_{fast/accurate}_{short/medium/long}=>v2_contextual_{fast/accurate}_{short/medium/long}
- available_options: [
- det model build option 중
2.1.0-rc1
2024/08/07- SaigeToolkit 버전 업데이트:
2.1.0 [버그 수정]- ocr_cropper debug
[기능 변경]- error message를 api output에서 직접 출력하도록 수정했습니다.
error_code, error_message, result = api()
- VISIONPRD-1029 이슈 및 Development guide 문서의
SaigeError 정의섹션을 참고해 주세요.
- error message를 api output에서 직접 출력하도록 수정했습니다.
[기능 개선]- error message에 추가적인 message 를 argument 로 입력할수 있도록 개선했습니다.
- image_load 시 발생하는 에러에 대한 messaging을 개선했습니다.
2.1.0-rc0
2024/08/02- SaigeToolkit 버전 업데이트:
2.0.1 [기능 개선]- lazy import 도입
- 실제 모듈들이 사용되기 전까지 세부 파일들을 import 하지 않음.
- lazy import 도입
2.0.43
2024/08/07[기능 추가]- det model build option 으로
representer_type추가.- 기존 모델은 detection output map에서 skeleton을 추출하는 정밀하지만 느린 모델 (default,
curved옵션) - 단순히 bounding box를 뽑아 recognition 에 전달하는 가벼운 모델 추가 (
flat옵션)
- 기존 모델은 detection output map에서 skeleton을 추출하는 정밀하지만 느린 모델 (default,
- v1 model 들 도입
- detection
- available_options: [
v2_fast,v2_standard]v2_fast옵션 추가v2_industry/v2_general=>v2_standard로 통합
- available_options: [
- recognition
- available_options: [
v2_basic,v2_advanced_{fast/accurate}_{short/medium/long}]v2_basic옵션 추가v2_{fast/accurate}_{short/medium/long}=>v2_advanced_{fast/accurate}_{short/medium/long}
- available_options: [
- detection
- det model build option 으로
2.0.42
2024/07/16[기능 개선]- analyze 반복 수행시 속도 개선
- intermediate 파일을 분석하여, 필요없는 연산을 생략하도록 개선.
- analyze 반복 수행시 속도 개선
2.0.41
2024/07/11- SaigeToolkit 버전 업데이트:
2a00ae [기능 추가]image is truncated.에러에 대한 에러코드 추가.
2.0.40
2024/07/09[기능 개선]- intermediate file 로드 시 하위호환성 확보.
2.0.39
2024/07/08[기능 개선]- intermediate file이 로컬 디스크 사용하는 용량 최적화
- SaigeToolkit 의 압축 방식 (ZstdFileHandler)
- intermediate file이 로컬 디스크 사용하는 용량 최적화
2.0.38
2024/06/25- SaigeToolkit 버전 업데이트:
fbcc31 [Bug Fix]- OcrCropperAPI 인풋으로 1채널 이미지가 [h, w] 형태로 들어오는 경우 발생하는 에러 해결.
2.0.37
2024/05/29[Bug Fix]- 불필요한 온라인 다운로드 과정 삭제
2.0.36
2024/05/24- SaigeToolkit 버전 업데이트:
c4937d [기능 추가]- 학습 중 loss 값이 NaN인 경우 NanLossError 레이즈
[기능 개선]- OCR Analyze / Auto Label Contour 꼭짓점 수량 개선 - 기울기 변화 기준 subsampling
2.0.35
2024/05/20- SaigeToolkit 버전 업데이트:
1b9ae2 [기능 개선]- ocr cropper 에서 중복되는 pixel column 제거
- recognition 학습 시 division by zero 로 인해 생기는 에러 해결
- trainer 학습 시, 불필요한 train 모드 전환 연산 제거
2.0.34
2024/05/03- SaigeToolkit 버전 업데이트:
e11ace [기능 추가]- 자동 배포 기능 업데이트
- cuda device 에 이상이 생긴 경우, 에러 코드 추가
[기능 개선]- 다양한 transformer 모델 지원을 위한 라이브러리 버전 업데이트
2.0.33
2024/02/19[기능 개선]- CJ OCR inference 후처리 기능 수정
- keyword filtering => regex filtering
- "1399" 앞뒤로 "숫자 외의 문자"가 붙는 경우 제거하도록 수정
- 추후 필터링 규칙 추가 가능
- CJ OCR inference 후처리 기능 수정
2.0.32
2024/02/01[기능 추가]OcrTextSizeCalculatorAPI추가- method name:
apply - input:
data(Dict): data가 담겨 있는 dictionary 입니다. - output:
float: Mean text size of the given data - 기타 상세한 내용은 API Docs 참고
- method name:
2.0.31
2024/01/26- SaigeToolkit 버전 업데이트:
58954162 [기능 개선]- ROI 설정시 큰 이미지에서 processing 시간이 과도하게 걸리는 문제 일부 해결
- OCR Detection은 전부 적용
- OCR Recognition의 경우 data 처리 순서가
roi crop->roi mask->text patch crop->resize순인데,roi mask가 반드시text patch crop이전에 수행되어야 하므로,roi mask를resize뒤로 순서 변경할 수 없음.
- ROI 설정시 큰 이미지에서 processing 시간이 과도하게 걸리는 문제 일부 해결
[기능 추가]- setup 시
without-pretrained-model기능 추가setup.py,setup/all.py파일에 해당 기능 추가- resource 를 다운로드 하지 않고, build 폴더로 저장하지 않음.
- setup 시
2.0.30
2024/01/09- SaigeToolkit 버전 업데이트:
7026244 [기능 개선]- metadata 크기 1MB -> 12MB 변경
2.0.29
2023/12/26[기능 개선]- SaigeToolkit 서브모듈 업데이트
2.0.28
2023/12/14[Bug Fix]- 최신 setuptools 에서 build 되지 않는 에러 해결
2.0.27
2023/12/12[Bug Fix]- Docs 에 default batch_size, num_workers 가 오기입된 부분 수정.
- CJ Ocr 엔진에 텍스트가 없는 이미지가 들어올 때 생기는 에러 해결.
2.0.26
2023/12/07[기능 개선]- Recognition 후처리 단계의 알고리즘 일부 최적화
- Init weight의 옵션 일부 오류 수정
- short/medium/long 의 내부 이미지 사이즈 처리 옵션이 잘못 지정되어있었음.
- 각 옵션의 최적 글자 수는 각각 ~10 / ~30 / ~50 정도.
- CJ OCR inference 후처리 기능 추가
- keyword filtering
- 현재 부정 불량식품 신고 번호인 1399 만 필터링
- 추후 필터링 규칙 추가 가능
2.0.25
2023/11/23[기능 개선]- DataLoader 속도 향상을 위한 옵션 수정
- num_worker default 0 -> 4
- pin_memory 추가
- DataLoader 속도 향상을 위한 옵션 수정
2.0.24
2023/11/09[기능 개선]- DataLoader 속도 향상을 위해 InfiniteSampler 반영
[Bug Fix]- 학습 데이터 일부가 random하게 섞이지 않는 버그 수정
2.0.23
2023/10/31[기능 변경]- Text Formatting - By Character Pattern 동작 수정
- pattern 설정 시 강제적으로 pattern에 맞는 text를 출력하도록 수정
- Text Formatting - By Character Pattern 동작 수정
2.0.22
2023/10/19[Bug Fix]- 2.0.21 correct text 수정 후 text_polygon 이 없는 경우 생기는 에러 해결
2.0.21
2023/10/18[Bug Fix]- correct text가 정상적으로 출력되지 않는 현상 해결
- batch size 조정 (2.0.17) 이후, 배치 사이즈보다 작은 데이터셋으로 학습이 안되는 문제 해결
2.0.20
2023/10/13[Bug Fix]- Validation 과정 없이 학습할 경우 선언되지 않은 변수에 접근하게 되는 문제 해결
2.0.19
2023/10/11[Bug Fix]- 크롭퍼 API 결과 이미지에서 핸들쪽 영역에 단차가 생기는 현상 해결
2.0.18
2023/10/06[Bug Fix]- 기존 ttf 파일이 “챂” 같은 특수한 글자를 렌더링 하지 못해서 무한 루프에 빠지는 문제 해결
2.0.17
2023/10/06[Bug Fix]- setup 시 font 파일 (.ttf) 이 복사되지 않는 문제 해결
- polygon, score 값 및 threshold 값이 백분율 처리되지 않은 부분 해결
- Det, Rec, Kie 의 default batch size 가 1로 지정되어 있는 문제 해결
[기능 개선]- pygame import 시 쓸데없는 메시지 출력되는 부분 제거
2.0.16
2023/09/25[기능 추가]- OCR rec overfitting 방지 기술 추가
- api 상 변동 없음
- recognition 학습시 synthetic data를 자동 생성하여 학습에 사용
OcrCropperAPI추가- input:
image(np.ndarray),polygon(List[List[float]]) - output:
np.ndarray(cropped image)
- input:
- OCR rec overfitting 방지 기술 추가
[기능 변경]- infer_and_postprocess output 수정
- runtime 기획에 맞게 다음 변수들 추가
polygon_scoretext_sizetext_scoreis_vertical
- infer_and_postprocess output 수정
2.0.15
2023/09/13[Bug Fix]- Recognition network에서 특정 모델 weight 파일 로드 시 속도가 느려지는 문제 해결
[기능 개선]- RecTrainer 의 post_train_process() 에서 실제 데이터셋에 포함된 character 를 기준으로 "recognition.text_formatting"를 출력하도록 수정
- 모든 subset을 선택한 "by_character_set" 이 GreedySearch 로 돌아가도록 수정
- 미세한 속도 향상 및 미세한 GPU 메모리 감소 예상
2.0.14
2023/09/12[기능 추가]- inference handler의 resize scale 을 변경하는 기능 추가
- built-in model로 auto-label 을 수행하고자 할 때, 반드시
change_resize_scale메소드를 호출하여 pretrain된 resize 옵션을 변경해야함
- built-in model로 auto-label 을 수행하고자 할 때, 반드시
- inference handler의 resize scale 을 변경하는 기능 추가
[기능 변경]- analyze의 object output 변경 (
correct_text)- label/recall -> label/correct_text
- prediction/object/precision -> prediction/object/correct_text
- train augmentation의 compose 방식 변경
- SomeOf (k=2) -> Compose (all)
- analyze의 object output 변경 (
2.0.13
2023/09/08[기능 추가]- Object metric
- labeled analysis 에서 label obejct들의 검출 여부, prediction object들의 정확도 여부 등 판별
labels-correct/recallpredictions-correct/precision- 이미지 단위의
object/underkill,object/overkill메트릭 추가 - 자세한 output 구조는 docs 참조
- Object metric
[기능 개선]- "recognition.text_formatting" 후처리 옵션에 설명 추가.
- Regex Type String: (Added) "symbol", "kor".
- e2e model 저장시 메타데이터에 불필요한 정보 들어있는 것 제거
- "recognition.text_formatting" 후처리 옵션에 설명 추가.
[기능 변경]- resize option 변경
- 명칭 변경:
resize_option->target_text_size - 작동 방식 변경: 프리셋(str) 에서 고르는 방식에서 직접 수치를 기입하는 식으로 변경
- 기존 프리셋: None, "small"(=24), "medium"(=32), "large"(=40)
- 변경 후 옵션: None, 16, 24, 32, 40, 48, 56, 64
- 명칭 변경:
- 기획에 맞춰 변수 이름 변경
- inferece output: "text_height" -> "text_size"
- 후처리 기능 변경: text_size_threshold -> text_size_range
- 텍스트가 일정 크기보다 작은 것을 제거하는 기능에서 유효 크기 범위를 지정하는 기능으로 변경
- 후처리 파라미터 고정
- max_italic_angle, remove_self_intersecting_polygon 를 default value 로 고정하고 유저 개입 불가하게 변경
- 이에 따라 analyze output 에서
italic_angle,is_self_intersecting삭제
- analyze output 으로 valid 한 object 만 출력하도록 변경
is_valid_text,is_valid_polygon삭제
- analyze output 에서
path,width,height삭제
- resize option 변경
2.0.12
2023/09/01[기능 개선]- Inferencer.build_built_in() 메소드 추가
- init_weight의 path를 신경쓰지 않고, 단순히 detection network_type 만 기입하여 inferecer build 하는 기능
- auto-label with built-in model 에 사용.
- "recognition.text_formatting" 후처리 옵션에 설명 추가.
- Regex Type String: "eng", "eng_lower", "eng_upper", "digits", and user custom string.
- Inferencer.build_built_in() 메소드 추가
2.0.11
2023/08/31[Bug Fix]- default dict lambda 기능이 일부 windows 환경에서 에러가 뜨는 현상 해결
- polygon index 가 점 4개를 기준으로 hard-coding 된 부분 해결
2.0.10
2023/08/25[Bug Fix]- inferencer 생성 시 device가 적용되지 않는 현상 해결
2.0.9
2023/08/23[Bug Fix]- Windows에서 0번 이외의 GPU 사용 시 속도 저하 및 메모리 이슈 해결
[기능 개선]- Detection
- 후처리 과정에서 bilateral filter 의 kernel 사이즈가 필요 이상으로 크게 계산되지 않도록 상한 제한.
- 비정상적으로 inference 속도가 느려지던 문제 해결.
- init_weight 파일에 model weight 외의 용량이 큰 optimizer 등 제거
- 용량이 1/3 ~ 1/2 수준으로 압축
- download 속도 향상
- Detection
[기능 변경]- 기획에 맞춰 변수 이름 변경
- max_num_of_text_polygons -> max_num_of_text_objects
- 기획에 맞춰 변수 이름 변경
2.0.8
2023/07/04[기능 변경]- pattern decoder scoring
- 전체 문자열의 score 산정 방식을 개별 문자 score의 average에서 개별 문자 score의 sum 으로 변경.
- 패턴에 맞지 않는 출력을 방지하기 위함
- 예시: "AA1" pattern일 때, "SK" (score: 1.9) vs "SK9" (score: 2.4)
- 전체 문자열의 score 산정 방식을 개별 문자 score의 average에서 개별 문자 score의 sum 으로 변경.
- UnreadablePatch label checker
- 문자 당 Text line length의 임계값을 6에서 4로 완화 조정
- pattern decoder scoring
[Bug Fix]- decoder 알고리즘 중 out_of_index 를 만드는 에러 수정
2.0.7
2023/06/20[기능 추가]- vertical text 대응
- 기존 라벨 형식 (text polygon) 에
is_vertical (bool)추가.- is_vertical=True 인 경우, text polygon를 시계방향으로 90도 회전하여 수직하게 만든 후 읽음.
- polygon은 세로 텍스트 기준 우측을 기존의 top, 좌측을 기존의 bottom 으로 취급.
- horizontal, vertical text 를 동시에 읽을 수 있는 모델 개발
- Detection, Recognition 모두 개발하였으며, 해당 모델은 현재 연구팀에서만 관리.
- CJ 비표 인식 엔진(CJScrEngine)에 적용
- 기존 라벨 형식 (text polygon) 에
- vertical text 대응
[기능 변경]- Augmentation 지원 리스트 수정
- rotate를 random_rotate90 으로 변경
- 직각이 아닌 각도로 회전시 글자가 잘리는 문제 발생
- 또, 기존 rotate 기능은 90도 회전하더라도 원본 이미지의 크기를 유지하기 때문에, 가로 세로 비율이 1:1이 아닌 이미지의 경우 이미지 상의 정보가 누락되는 문제가 있음
- 90도 단위로 회전시키는 random_rotate90의 기능을 원본 이미지 정보를 모두 유지하도록 수정하고, 이를 OCR 의 기본 회전 augmentation 기능으로 지정
- 이 때, 이미지 사이즈가 변함에 유의. ((w, h) -> (h, w))
- 이미지 사이즈 변화에 따른, 학습시 model_inspection_size_wh 계산 알고리즘 업데이트
- recognition 에서 rotate, perspective_transform 제거
- rotate를 random_rotate90 으로 변경
- allow_tf32 변경 기능 제거
- torch default 값으로 고정되도록 allow_tf32 를 조작하는 기능을 제거
- Augmentation 지원 리스트 수정
[기능 개선]- Data Sampler 알고리즘 개선
- recognition 학습 시 data shuffle 하는 부분 속도 개선. (일정 주기마다 호출됨)
- Pattern Decoder 알고리즘 개선
- 일종의 Tree search 알고리즘 도입
- 패턴을 가진 문자열 사이에 이미지 상의 얼룩 등으로 인해 전혀 의도하지 않은 문자가 검출되는 경우가 존재.
- 문자 decoding 중간중간 skip 하고 다음 문자를 읽는 등 읽을 수 있는 다양한 방식으로 문자열을 읽어본 후, 종합 스코어가 가장 높은 문자열을 선택.
- Data Sampler 알고리즘 개선
[Bug Fix]- Augmentation 호출 버그
- augmentation 호출 시 수정된 polygon 라벨이 초기화되지 않는 현상
- 해당 데이터에 augmentation 이 여러번 호출될 때 polygon 에 변형이 중첩되어 올바르지 않은 라벨로 왜곡되었음
- 이로 인해 augmentation 을 추가한 detection 학습 시, detection 성능이 점차 하락하는 현상 발생
- SaigeToolkit 에 해당 부분 수정하여 문제 해결.
- Augmentation 호출 버그
2.0.6
2023/05/12[기능 추가]- Analysis API가 추가되었습니다.
- analyze 기능 포함.
- summarize_analysis 기능 포함.
- inferencer output에
is_vertical추가.- 추후 세로 글씨 인식에 사용될 변수로, 당장은 사용하지 않습니다.
- Analysis API가 추가되었습니다.
[기능 변경]- Inference.analyze의 인풋 파라미터에서
use_saved_file삭제: 해당 기능은 Analysis.analyze로 분리됨. - 임시: KieTrainer 에서 cj trained model 을 pretrained model 로 사용. 추후 변경 예정.
- 추후 vision2 에 KIE 탑재시 수정 필요.
- inferencer 엔진의
inspection_size_wh초기 값을 None 으로 수정- 기존에는 Trainer 에서 자동으로 inspection_size_wh 계산 후 저장해두었다가,
save_det_rec_engine()호출 시 inferencer 엔진에 자동으로 init 값으로 기입해주었음. - inferencer 엔진에 자동으로 init 값으로 기입하는 것이 비직관적이라고 생각하여, 위 알고리즘 삭제.
post_train_process()로 받아오는 값과 동일한 값이므로post_train_process()결과 값을 수동으로 inferencer 에 넣어주거나, Trainer config 로 넣어주었던 DB 계산 결과 값을 inferencer 에 넣어주어야 함.
- 기존에는 Trainer 에서 자동으로 inspection_size_wh 계산 후 저장해두었다가,
- Inference.analyze의 인풋 파라미터에서
[기능 개선]Trainer.to_device()호출 시 CPU로 보내는 경우 torch.cuda.empty_cache() 호출해 GPU 메모리 일부 해제- Analyze 시 이미지 단위로 metric 연산을 미리 수행하고 저장하도록 수정
- summarize 호출시 복잡한 연산 없이, 저장된 파일만을 load 하므로 속도 향상이 기대됨.
- 학습 시 inspection_size_wh 를 input 으로 넣을 수 있도록 수정
- 학습 input 으로 inspection_size_wh 가 들어오지 않을 경우, python애서 계산 (iterative).
- python 계산 속도 개선.
- 엔진에서 DB 쿼리로 계산하여 넣어주는 것이 가장 처리 속도가 빠를 것으로 예상됨.
- 학습 input 으로 inspection_size_wh 가 들어오지 않을 경우, python애서 계산 (iterative).
- 이미지 로딩 시, 불필요한 연산 제거.
- 평균적인 이미지 로딩 속도 대폭 개선 예상.
[Bug Fix]- Det Trainer 학습 시 inspection size 를 업데이트 하는 코드의 오류 수정.
- validate dataset 을 무시하고 train dataset 만 탐색하고 있는 상태 수정.
- 일부
demo/*.py스크립트가 작동하지 않던 문제 해결- test 코드를 추가하였음.
- auto_resize 가 validation dataset 에 적용되지 않는 문제 해결
- Detection 학습 시 초기 inspection_size_wh 계산 속도 향상
- inferencer의 inspection_size_wh 처리 중 버그 수정
- Det Trainer 학습 시 inspection size 를 업데이트 하는 코드의 오류 수정.
2.0.5
2023/04/25[기능 추가]- 배치 사이즈보다 적은 데이터셋에 대해 학습이 안되는 문제 해결
- 데이터를 n번 중복하여 sampling 하는 방식으로 구현됨 (default: 1000)
- [0,3,2,1,4, 4,2,1,0,3, 2,3,4,0,1, ... , (n repeat)] 와 같이 1 epoch 단위로 shuffle.
- 테스트 파이프라인 수정
- windows 에서 테스트 수행하도록 추가
- inferencer 가 cpu 에 대해 테스트 수행하도록 추가
- 배치 사이즈보다 적은 데이터셋에 대해 학습이 안되는 문제 해결
[기능 변경]- resize option 의 이름 변경
resize_option - perspective transform 의 ImageProcessor api 상의 구현 변경
- intensity 만 지정하면, random sample 된 augmentation 결과 출력
- Analysis API가
InferenceHandler.analyze()&InferenceHandler.summarize_analysis()로 변경되었습니다. - 기존 Analysis API들은 제거되었습니다.
- auto roi 에 대한 테스트 및 docs 제거
- resize option 의 이름 변경
[Bug Fix]- inference options 중 잘못된 용어 및 기능 수정
max numer of text polygons->max num of text polygons- <= 0 일 때, 무제한으로 수행하도록 기능 수정
- 옵션의 type 을
Optional[int]에서int로 수정
- ocr_example.pkl 의 rec train config 가 잘못되어있던 부분 수정
- inference options 중 잘못된 용어 및 기능 수정
2.0.4
2023/04/14[기능 추가]InferenceHandler.infer_and_postprocess결과에 이미지가 oversized 인지 여부를 나타내는is_oversized추가 (bool)
[기능 변경]- pytorch 버전 2.0.0 으로 변경
- polygon sort 하는 구현 변경
- 옵션에 따라 다르게 수행하나, api 에서는 변경 불가능 (default "sorting")
[Bug Fix]- recognition 학습 시 class_index 가 없는 경우 에러가 뜨는 현상 해결
2.0.3
2023/04/12[기능 추가]- detection, recognition의 inference option 잘못 기입시 에러 호출
[기능 변경]- test_api.py 코드로 생성된 모델로도 전부 읽을수 있도록 sample 데이터를 더 간단한 이미지로 변경.
- 기획에 맞춰 변수 이름 변경 및 구조 수정
- detection_batch_size 삭제, recognition_batch_size -> batch_size
- max_num_of_predictions -> max_num_of_text_polygons
- inference options 변수명 수정
- inferencer output 변수명 및 구조 수정
- regex -> text_formatting
- regex 에
kor,symbol그룹 추가 - recognition trainer build 시 regex(text_formatting) 지정하는 부분 삭제
- regex 에
- 이미지 preprocess 속도 개선
- ImageLoader 에서 기본 로드 타입을 numpy.ndarray 로 변경
- resize/roi/cropper 등에서 image를 PIL.Image.Image 만 입력받던 부분을 numpy.ndarray도 받도록 변경
[Bug Fix]- inferencer 생성 시 inspection size 가 변경 안되는 문제 해결
- inferencer 문서에
params옵션들 문구 수정 - inferencer 생성 시 warmup 을 여러번 수행하는 문제 해결
- 해당 과정에서 생길 수 있는 버그 해결
- Recognition postprocess 가 비정상적으로 오래 걸리는 문제 해결
- text formatting의 mask array가 매번 재생성 되는 문제 해결
2.0.2
2023/04/06[기능 변경]- Perspective Transform 의 변수를 백분율 integer 로 수정
- fast model 추가 학습 후 database에 업데이트 완료
- Augmentation 지원 리스트 수정
- v-flip / h-flip 제거
- recognition 에서 rotate, perspective_transform 제거
[Bug Fix]- ocr example 컨피그를 최신 버전에 맞게 수정
- 인퍼런스 시 특정 이미지 사이즈에서 GPU 메모리 증가하는 이슈 일부 해결 (최대 2MB 까지는 증가할 수 있음)
2.0.1
2023/04/03[기능 추가]max_number_of_predictions기능 추가.- 검사 시간의 최대값에 대한 보장을 위해 최대 검출 폴리곤 수의 제한 기능
- 이 때 detection 과 recognition 의 postprocess 호출 수가 동일하다는 보장이 깨짐
- timer 에서 detection, recognition 의 postprocess 호출 수 체크 제거
InferenceHandler에params.oversized_image_handling옵션 추가:do_not_inspect,resize_to_fit- recognition fast 모델 추가
[기능 변경]SaigeToolkit의 import 시간 단축- pretrainedmodel 패키지를 실제로 사용될 때에만 import 하도록 수정
InferenceHandler.to_device()호출 시 warmup 수행- Validation 시에도
inspection_size_wh적용Trainer.train_one_step()첫 호출 시 validation 일부 수행해 gpu memory 체크
[Bug Fix]- Windows에서
Trainer.build시num_workers=0사용하는 경우 발생하는 에러 해결 - Windows에서
num_workers > 0사용하는 경우 발생하는 에러 해결 (validation worker=0 으로 변경) - to_device 호출 시 warmup 실행
- inferencer build 시 to_device 가 호출되는데, 이로 인해 warmup 이 2번 실행되는 현상 수정
- Windows에서
2.0.0
network_type- UI 상 이름에 맞게 변수명 수정 (
model->network_type)
- UI 상 이름에 맞게 변수명 수정 (
- post train process
- 학습 과정에서 학습된 inference option 이 있다면 return 해주는 기능
- IAD 에서만 필요한 method 이나, Seg2 에도 구현되어있으며, 이에 따라 OCR 에도 적용
- persistent_worker & prefetch_factor
- 이미지가 적은 경우 학습이 진행되지 않는 이슈 및
- 데이터 로더 iteration 이 끝나고 새로 시작될떄 windows 상에서 딜레이가 길어지는 것을 방지하기 위함
- Move
revert resize & roiintoSaigeToolkit- 기존 inference 의 encode_output 에 코딩되었던
- resize, roi 를 revert 하는 기능을 SaigeToolkit 으로 이동
- 이에 따라 resize, roi 를 forward 하는 기능도 같은 함수로 통일
- 변경점을 해당 레포에 적용
- add 16bit image sample
- 16 비트, gray scale 이미지 샘플을 추가하고 test 코드에 추가
- dataset List -> Dict
- API 에서 input 으로 넣어주는 data image list -> Dict 타입으로 변경
- inference timer
- SaigeToolkit 의 timer 를 ocr output 에 맞게 수정.
- det_rec_kie inferencer 에서만 kie time 출력
- 출력 형식은 아래와 같음
- warm-up api
- inspection_size_wh 개념 도입
- rec_batch size, det_batch_size(==1) 도입
- Augmentation 수정
- Seg2 개발 중 업데이트 된 augmentation 사용 가능 목록 반영
- Label feasibility checker API
- ocr 학습에 사용하기 부적합한 "잘못된 라벨링"을 검토하는 API
- 데모 제공
- Setup code 수정
- 메인 페이지 (Getting started) 의 setup 및 test 코드가 vision2 에 해당하는 API 에 대해서만 작동하도록 수정
- 이에 따라 cythonize setup 대상 파일도 ocr 레포 전체에서 vision2 에 해당하는 기능들로 한정되었음
- cythonize target 파일을 약 260개에서 220개로, 약 40개 파일 제거
- 한글 character set 변경
- KSC 6501 + [멊, 챂, 캪, 핟, 쌰, 쓔] (CJ OCR 솔루션 개발당시 발견한 문자 6개)
- 위 변경 사항에 따른 pretrained 모델 수정
0.7.1
- Submodule: Update SaigeToolkit
- Ocr cropper 에서 width = 0 인 패치를 crop 하지 않도록 수정
- Augmetation
- user input 으로 들어오는 config 가 SaigeToolkit 의 augmentation 에 구현된 것과 미세하게 다름
- 이 부분 호환시켜주는 코드를 SaigeSegmentation2 레포로부터 가져옴
- 이에 따른 pytest 테스트코드 업데이트
- OcrDataset
- 사소한 오류 수정
- Checkpoint
- 이전 버전에서 저장된 detection checkpoint 사용할 수 있도록 호환
- Inferencer Dataloader 수정
- update 해준 analyze 용 데이터가
pop()함수로 인해 사라지는 문제 해결
- update 해준 analyze 용 데이터가
0.7.0
- Submodule: Update SaigeToolkit
- Perspective Augmentation 추가
- Geometric Augmentation의 경우, Polygon 연산 추가
- Box Rotation Augmentation 단순화 + 속도 개선
0.6.1
- Fix: numpy handle
- numpy input 을 handle 하는 방법이 SaigeToolkit 과 다른 부분 수정
0.6.0
- Feature: warmup in inferencer
- 동규님 요청에 따른 inference engine 의 warmup 단계 추가
- SaigeSegmentation2 version 2.0.0-rc2 의 변경점 적용.
- 체크포인트 구조 및 Inference API 변경
- Fix: demo files
- 상기 변경점에 따른
demo/*.py파일 수정
- 상기 변경점에 따른
- Test: update test code
- 상기 변경점에 따른
test/test_api.py파일 수정
- 상기 변경점에 따른
- Feature: mkdocs 적용