Skip to content

Release notes

2.2.1

  • 2024/12/20
  • SaigeToolkit 버전 업데이트: 2.3.1
  • [기능 변경]
    • metric 개선
      • GT-pred matching 계산 개선
      • gt-pred 쌍이 겹치는 글자 수에 비례하여 threshold 되도록

2.2.0

  • 2024/12/12
  • SaigeToolkit 버전 업데이트: 2.3.0
  • [문서 수정]
    • SaigeToolkit 의 설치 방법이 바뀌었음.
      • pip install version constraints
  • [기능 추가]
    • 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_analysis Docs 수정
      • save_dir 이외에 불필요하므로 삭제
    • DetRecKieInferencerchange_resize_scale 누락된 것 추가

2.1.6

  • 2024/11/21
  • [버그 수정]
    • OcrCropperAPI 가 crop에 실패하는 경우 잘못된 에러를 출력하는 문제 해결.
      • InvalidPolygonError 에러 추가.
      • OcrCropper 내부 알고리즘 개선.

2.1.5

  • 2024/11/06
  • [문서 수정]
    • docstring 일부 잘못 표기된 부분 수정
      • KIE trainer 의 target_text_size 가 int 가 아닌 str 로 표기된 부분 수정
      • DET/REC/KIE trainer / inferencer 의 device 세팅에서 torch.device 타입이 누락된 부분 수정

2.1.4

  • 2024/10/31
  • [버그 수정]
    • Recognition 학습 중 infinite loss 가 발생하는 현상 해결.
      • 알고리즘 버그 해결
      • infinite loss 발생 시 error code 지정.

2.1.3

  • 2024/10/16
  • [버그 수정]
    • Recognition Literal 모델에 Pattern decoder 설정시 output 이 나오지 않는 현상을 해결했습니다.

2.1.2

  • 2024/10/15
  • [버그 수정]
    • Recognition Contextual 모델에 Pattern decoder 설정시 output 이 나오지 않는 현상을 해결했습니다.
    • 알려진 이슈: Recognition Literal 모델의 경우 pattern decoder 사용시 output 이 나오지 않는 현상이 있습니다.

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 이슈로 인한 업데이트

2.1.0-rc4

  • 2024/08/26
  • [기능 추가]
    • recognition v2_literal 모델이 처리할 수 있는 max 캐릭터 수 제한.
      • 현재 약 256 글자를 읽을수 있게 세팅.
      • optimize 시에 미리 max_shape 을 설정해두어야 하기 때문.
      • 최적화 후에 과도하게 큰 input이 입력되지 않도록 최대값 설정.

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
    • 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}

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에 추가적인 message 를 argument 로 입력할수 있도록 개선했습니다.
    • image_load 시 발생하는 에러에 대한 messaging을 개선했습니다.

2.1.0-rc0

  • 2024/08/02
  • SaigeToolkit 버전 업데이트: 2.0.1
  • [기능 개선]
    • lazy import 도입
      • 실제 모듈들이 사용되기 전까지 세부 파일들을 import 하지 않음.

2.0.43

  • 2024/08/07
  • [기능 추가]
    • det model build option 으로 representer_type 추가.
      • 기존 모델은 detection output map에서 skeleton을 추출하는 정밀하지만 느린 모델 (default, curved 옵션)
      • 단순히 bounding box를 뽑아 recognition 에 전달하는 가벼운 모델 추가 (flat 옵션)
    • v1 model 들 도입
      • detection
        • available_options: [v2_fast, v2_standard]
          • v2_fast 옵션 추가
          • v2_industry/v2_general => v2_standard로 통합
      • 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}

2.0.42

  • 2024/07/16
  • [기능 개선]
    • analyze 반복 수행시 속도 개선
      • intermediate 파일을 분석하여, 필요없는 연산을 생략하도록 개선.

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)

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" 앞뒤로 "숫자 외의 문자"가 붙는 경우 제거하도록 수정
      • 추후 필터링 규칙 추가 가능

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 참고

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 maskresize 뒤로 순서 변경할 수 없음.
  • [기능 추가]
    • setup 시 without-pretrained-model 기능 추가
      • setup.py, setup/all.py 파일에 해당 기능 추가
      • resource 를 다운로드 하지 않고, build 폴더로 저장하지 않음.

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 추가

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를 출력하도록 수정

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)
  • [기능 변경]
    • infer_and_postprocess output 수정
      • runtime 기획에 맞게 다음 변수들 추가
      • polygon_score text_size text_score is_vertical

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 옵션을 변경해야함
  • [기능 변경]
    • 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)

2.0.13

  • 2023/09/08
  • [기능 추가]
    • Object metric
      • labeled analysis 에서 label obejct들의 검출 여부, prediction object들의 정확도 여부 등 판별
      • labels - correct / recall
      • predictions - correct / precision
      • 이미지 단위의 object/underkill, object/overkill 메트릭 추가
      • 자세한 output 구조는 docs 참조
  • [기능 개선]
    • "recognition.text_formatting" 후처리 옵션에 설명 추가.
      • Regex Type String: (Added) "symbol", "kor".
    • e2e model 저장시 메타데이터에 불필요한 정보 들어있는 것 제거
  • [기능 변경]
    • 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 삭제

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.

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 속도 향상
  • [기능 변경]
    • 기획에 맞춰 변수 이름 변경
      • 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)
    • UnreadablePatch label checker
      • 문자 당 Text line length의 임계값을 6에서 4로 완화 조정
  • [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)에 적용
  • [기능 변경]
    • 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 제거
    • allow_tf32 변경 기능 제거
      • torch default 값으로 고정되도록 allow_tf32 를 조작하는 기능을 제거
  • [기능 개선]
    • Data Sampler 알고리즘 개선
      • recognition 학습 시 data shuffle 하는 부분 속도 개선. (일정 주기마다 호출됨)
    • Pattern Decoder 알고리즘 개선
      • 일종의 Tree search 알고리즘 도입
      • 패턴을 가진 문자열 사이에 이미지 상의 얼룩 등으로 인해 전혀 의도하지 않은 문자가 검출되는 경우가 존재.
      • 문자 decoding 중간중간 skip 하고 다음 문자를 읽는 등 읽을 수 있는 다양한 방식으로 문자열을 읽어본 후, 종합 스코어가 가장 높은 문자열을 선택.
  • [Bug Fix]
    • Augmentation 호출 버그
      • augmentation 호출 시 수정된 polygon 라벨이 초기화되지 않는 현상
      • 해당 데이터에 augmentation 이 여러번 호출될 때 polygon 에 변형이 중첩되어 올바르지 않은 라벨로 왜곡되었음
      • 이로 인해 augmentation 을 추가한 detection 학습 시, detection 성능이 점차 하락하는 현상 발생
      • SaigeToolkit 에 해당 부분 수정하여 문제 해결.

2.0.6

  • 2023/05/12
  • [기능 추가]
    • Analysis API가 추가되었습니다.
    • inferencer output에 is_vertical 추가.
      • 추후 세로 글씨 인식에 사용될 변수로, 당장은 사용하지 않습니다.
  • [기능 변경]
    • 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.to_device() 호출 시 CPU로 보내는 경우 torch.cuda.empty_cache() 호출해 GPU 메모리 일부 해제
    • Analyze 시 이미지 단위로 metric 연산을 미리 수행하고 저장하도록 수정
      • summarize 호출시 복잡한 연산 없이, 저장된 파일만을 load 하므로 속도 향상이 기대됨.
    • 학습 시 inspection_size_wh 를 input 으로 넣을 수 있도록 수정
      • 학습 input 으로 inspection_size_wh 가 들어오지 않을 경우, python애서 계산 (iterative).
        • python 계산 속도 개선.
      • 엔진에서 DB 쿼리로 계산하여 넣어주는 것이 가장 처리 속도가 빠를 것으로 예상됨.
    • 이미지 로딩 시, 불필요한 연산 제거.
      • 평균적인 이미지 로딩 속도 대폭 개선 예상.
  • [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 처리 중 버그 수정

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 제거
  • [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 가 잘못되어있던 부분 수정

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) 지정하는 부분 삭제
    • 이미지 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 호출 수 체크 제거
    • InferenceHandlerparams.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.buildnum_workers=0 사용하는 경우 발생하는 에러 해결
    • Windows에서 num_workers > 0 사용하는 경우 발생하는 에러 해결 (validation worker=0 으로 변경)
    • to_device 호출 시 warmup 실행
      • inferencer build 시 to_device 가 호출되는데, 이로 인해 warmup 이 2번 실행되는 현상 수정

2.0.0

  • network_type
    • UI 상 이름에 맞게 변수명 수정 (model -> network_type)
  • post train process
    • 학습 과정에서 학습된 inference option 이 있다면 return 해주는 기능
    • IAD 에서만 필요한 method 이나, Seg2 에도 구현되어있으며, 이에 따라 OCR 에도 적용
  • persistent_worker & prefetch_factor
    • 이미지가 적은 경우 학습이 진행되지 않는 이슈 및
    • 데이터 로더 iteration 이 끝나고 새로 시작될떄 windows 상에서 딜레이가 길어지는 것을 방지하기 위함
  • Move revert resize & roi into SaigeToolkit
    • 기존 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 출력
    • 출력 형식은 아래와 같음
      "time": {
          "imread_time": float,
          "inference_time": float,
          "detection_inference_time": float,
          "recognition_inference_time": float,
          "detection_post_processing_time": float,
          "recognition_post_processing_time": float,
      }
      
  • 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() 함수로 인해 사라지는 문제 해결

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 적용