Giter Site home page Giter Site logo

level2-cv-datacentric-cv-04's Introduction

AI Tech 6기 Team 아웃라이어

Members


강승환

김승민

설훈

이도형

전병관

조성혁

글자 검출 프로젝트

학습 데이터 추가 및 수정을 통한 이미지 속 글자 검출 성능 개선 대회 OCR Image

스마트폰으로 카드를 결제하거나, 카메라로 카드를 인식할 경우 자동으로 카드 번호가 입력되는 경우가 있습니다. 또 주차장에 들어가면 차량 번호가 자동으로 인식되는 경우도 흔히 있습니다. 이처럼 OCR (Optimal Character Recognition) 기술은 사람이 직접 쓰거나 이미지 속에 있는 문자를 얻은 다음 이를 컴퓨터가 인식할 수 있도록 하는 기술로, 컴퓨터 비전 분야에서 현재 널리 쓰이는 대표적인 기술 중 하나입니다. 이번 대회는 OCR의 대표적인 model 중 하나인 EAST model을 활용하여 진료비 계산서 영수증안에 있는 글자를 인식하는 대회입니다.

이번 대회는 Data-Centric 대회로 다음과 같은 제약사항이 있습니다.

  • 대회에서 주어지는 EAST model만을 사용해야 하며 model과 관련된 코드를 바꿔서는 안됩니다
  • 이미지넷 기학습 가중치 외에는 사용이 불가합니다.

즉 이번 대회는 모델을 고정한 상태로 데이터만을 활용하여 OCR model의 성능을 최대한 끌어 올리는 프로젝트 입니다.

이번 대회는 부스트캠프 AI Tech CV 트랙내에서 진행된 대회이며 F1-Score로 최종평가를 진행하였습니다.

Final Score

Public

Public

Private

private

Ground Rules

<타입>[적용 범위(선택 사항)]: <설명>

[본문(선택 사항)]

[꼬리말(선택 사항)]

Types

  • fix | feat | BREAKING CHANGE | build | chore | ci | docs | style | refactor | test | release
    • fix : 기능에 대한 버그 수정
    • feat : 새로운 기능 추가, 기존의 기능을 요구 사항에 맞추어 수정
    • build : 빌드 관련 수정
    • chore : 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore
    • ci : CI 관련 설정 수정
    • docs : 문서(주석) 수정
    • style : 코드 스타일, 포맷팅에 대한 수정
    • refactor : 기능의 변화가 아닌 코드 리팩터링 ex) 변수 이름 변경
    • test : 테스트 코드 추가/수정
    • release : 버전 릴리즈

Folder Structure

code
├── utils
|   ├── coco2ufo.ipynb
|   ├── ensemble.ipynb
|   ├── lift_up_bounding_boxes.ipynb
|   ├── manual_k_fold.ipynb
|   ├── ufo2coco.ipynb
|   ├── visualization.ipynb
|   └── weighted_boxes_fusion.py
├── dataset.py
├── detect.py
├── deteval.py
├── east_dataset.py
├── inference.py
├── loss.py
├── metrics.py
├── model.py
├── train.py
└── requirements.txt
  • utils 폴더에는 실험과 성능에 관련된 기능들을 넣어두었습니다.
File(.ipynb/.py) Description
coco2ufo coco foramt으로 작성된 json file을 ufo format으로 변환합니다.
ensemble wbf 알고리즘을 활용한 ensemble 코드입니다.
lift_up_bounding_boxes supervisely에서 작업한 bbox가 int type으로 float정보가 손실되어 bbox가 맞지않아 보정해주는 코드입니다.
manual_k_fold k-fold에 대한 설명과 실행이 적혀있는 코드입니다.
ufo2coco ufo foramt으로 작성된 json file을 coco format으로 변환합니다.
visualization json파일을 이용하여 Image와 Bounding box를 시각화하는 코드입니다.
weighted_boxes_fusion WBF 코드입니다.

Dataset

  • Total Images : 200장 (train : 100, test : 100)

Wrap-Up Report

Dataset 출처

  • 대회에서 사용된 부스트캠프 AI Tech임을 알려드립니다.

level2-cv-datacentric-cv-04's People

Contributors

seonghyeokcho avatar github-classroom[bot] avatar wjsqudrhks avatar viitamin avatar

Stargazers

 avatar

level2-cv-datacentric-cv-04's Issues

[FEAT] kfold, validation loop, save_best, early stopping

Background

  • 검증셋을 구성해 모델의 성능 평가 지표로서 활용하기 위해 검증 데이터셋을 구성해주는 코드와 train.py에 validation loop 코드를 구현하려고 합니다.

To Do

  • 이미지를 셔플한 뒤 일정한 비율로 나눠주는 manual k-fold 코드 적용
  • train.py에 validation loop 코드 적용
  • mean valid loss가 최소일 때 모델 가중치 저장
  • early stopping 코드 적용

[FEAT] utils 폴더에 포함될 파일 추가

Background

  • 리라벨링을 위한 데이터 포멧 변경을 하기 위해 ufo2coco.ipynb, coco2ufo.ipynb 파일을 추가 합니다.
  • supervisely 툴에서 json 파일을 다운로드 받으면 바운딩 박스 좌표가 아래로 조금씩 치우쳐지는 현상을 발견하여 전체 바운딩 박스의 좌표를 y축 방향으로 살짝 이동시켜 위치를 보정해주는 lift_up_bounding_boxes.ipynb 파일을 추가 합니다.
  • 앙상블을 위한 ensemble.ipynb, weighted_boxes_fusion.py 파일을 추가합니다.
  • 기존에 추가한 group_k_fold.ipynb 파일에서 아웃라이어 데이터를 제거하는 코드를 추가하고, 이름을 manual_k_fold.ipynb로 변경합니다.

To Do

  • ufo2coco.ipynb 파일 추가
  • ensemble.ipynb 파일 추가
  • lift_up_bounding_boxes.ipynb 파일 추가
  • + manual_k_fold.ipynb 파일 추가 / - group_k_fold.ipynb 파일 삭제
  • ufo2coco.ipynb 파일 추가
  • weighted_boxes_fusion.py 파일 추가

[FEAT] binarization, random choice augmentations 추가

Background

  • OpenCV 라이브러리를 활용한 binarization 기법을 적용하여 noisy한 이미지의 noise를 제거하고, 텍스트 또한 선명하게 만들어주고자 합니다.
  • Albumentations의 OneOf 클래스를 이용하여 여러가지 필터 후보를 추가하고 그 중 하나가 적용되도록 하고자 합니다.

To Do

  • dataset.py에 binarization 기법 적용한 코드 추가
  • dataset.py에 albumentations에 포함되어 있는 여러 필터를 OneOf 클래스로 감싸 그 중 한가지를 랜덤으로 선택하는 코드 추가
  • dataset.py에 각각의 augmentation 기법들이 중복 적용 되지 않도록 예외 코드 추가

Feat: Pepper Probability Augmentation

issue: #14

Background

  • Test Set의 환경과 유사하게 만들 수 있도록 Pepper Augmenation에 노이즈 개선을 할 Probability적 적용 추가

To Do

  • dataset.py에 pepper augmentation을 적용하는 확률 함수 추가

[FEAT] UFO to COCO, COCO to UFO 변환 코드 작성

Background

  • Supervisely에 올려 차이점을 확인하기 위해서 Supervisely를 활용하고자 함
  • 또한, 평가 지표로는 Polygon을 사용하지 않고, 외접하는 Rectangle을 사용하기 때문에 해당 평가 지표에 맞춰 변경할 예정.

To Do

  • UFO type을 COCO로 변환하기
  • COCO로 변환할 때 외접하는 Rectangle이 point가 되도록 하기

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.