Giter Site home page Giter Site logo

level2-cv-datacentric-cv-03's Introduction

글자 검출 프로젝트 OCR

😊 팀 구성원


😷 프로젝트 개요

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


📅 프로젝트 일정

프로젝트 전체 일정

  • 2024.01.24 ~ 2024.02.01

프로젝트 세부 일정


🏆 프로젝트 결과

  • Public 리더보드 결과


- Private 리더보드 결과


📁 데이터셋 구조

📦datasets
 ┗ 📂data
   ┗ 📂medical
     ┣ 📂img
     ┃ ┣ 📂train
     ┃ ┣ 📂train_crop
     ┃ ┗ 📂test
     ┗ 📂ufo
       ┣ 📜train.json
       ┗ 📜train_crop.json

이 코드는 부스트캠프 AI Tech에서 제공하는 데이터셋으로 다음과 같은 구성을 따릅니다.

  • train은 학습에 사용하는 데이터셋
  • test은 평가에 사용하는 데이터셋
  • train_crop은 train 데이터에서 예측이 잘 안되는 이미지를 crop하여 저장한 데이터셋

📁 프로젝트 구조

📦level2-cv-datacentric-cv-03
 ┣ 📂.git
 ┣ 📂.github
 ┣ 📂aihub_utils
 ┃ ┣ 📜AIHub_format_to_competition.ipynb
 ┃ ┣ 📜coco2ufo.py
 ┃ ┣ 📜dataset.py
 ┃ ┣ 📜east_dataset.py
 ┃ ┗ 📜train.py
 ┣ 📂imgs
 ┃ ┣ 📜private_result.png
 ┃ ┣ 📜public_result.png
 ┃ ┗ 📜schedule.png
 ┣ 📂utils
 ┃ ┣ 📜crop_offline_augmentation.py
 ┃ ┣ 📜offline_augmentation.ipynb
 ┃ ┣ 📜qr.csv
 ┃ ┣ 📜random_split.py
 ┃ ┣ 📜show_data.py
 ┃ ┣ 📜show_difference.py
 ┃ ┗ 📜show_inference.py
 ┣ 📜.gitignore
 ┣ 📜.pre-commit-config.yaml
 ┣ 📜README.md
 ┣ 📜bboxes_dict.py
 ┣ 📜dataset.py
 ┣ 📜detect.py
 ┣ 📜deteval.py
 ┣ 📜east_dataset.py
 ┣ 📜inference.py
 ┣ 📜loss.py
 ┣ 📜metric.py
 ┣ 📜model.py
 ┣ 📜requirements.txt
 ┗ 📜train.py

1) dataset.py

  • Augmentation를 적용한 base dataset을 구현한 파일

2) east_dataset.py

  • base dataset을 받아서 score_map, geo_map을 반환하는 dataset 파일

3) loss.py

  • dice loss, geo loss를 계산하는 EASTLoss를 정의한 파일

4) model.py

  • 학습에 사용되는 EAST Model 클래스를 구현한 파일
  • Extractor로는 VGG16을 사용하며 merge와 output을 거쳐 score_map과 geo_map을 반환

5) train.py

  • Argument 값을 통해 학습 파라미터들을 불러오고 train하는 파일

6) inference.py

  • 학습 완료된 모델을 통해 test set에 대한 예측 값을 구하고 이를 .csv 형식으로 저장하는 파일

7) detect.py

  • test set 이미지에 대한 infernece를 진행하여 score_map과 geo_map을 예측하고 bbox 좌표를 반환하는 파일

8) deteval.py

  • precision, recall, f1score를 계산하는 파일

9) metric.py

  • validation set에 대한 score_map과 geo_map을 입력받아 bbox 좌표를 반환하는 파일

10) bboxes_dict.py

  • validation set의 예측 bbox와 gt bbox를 반환하는 파일

⚙️ requirements

  • lanms==1.0.2
  • numpy==1.24.4
  • opencv-python==4.8.1.78
  • shapely==2.0.2
  • tqdm==4.66.1
  • matplotlib==3.8.2
  • albumentations==1.3.1
  • pillow==10.0.1
  • pandas==2.2.0
  • torch==2.1.0
  • torchvision==0.16.0
  • scikit-learn==1.4.0
  • wandb==0.16.2
  • black==24.1.1
  • ruff==0.2.0
  • pre-commit==3.6.0

pip install -r requirements.txt


▶️ 실행 방법

Train

python train.py --data_dir [데이터저장경로]

Inferecne

python inference.py --model_dir [모델저장경로]


✏️ Wrap-Up Report

level2-cv-datacentric-cv-03's People

Contributors

jungtaxi avatar choehyeonwoo avatar rudeuns avatar hyunseo-k avatar github-classroom[bot] avatar rsl82 avatar jinjero avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

rudeuns

level2-cv-datacentric-cv-03's Issues

[FEAT] Crop Offline Augmentation 구현

Background

  • 예측이 잘 되지않는 word_id를 정리한 csv를 입력받아 Crop하여 저장하는 Offline Augmentation 구현
  • crop이 진행될때 글자가 잘리게 되어 일부 crop되는 너비를 원본 너비로 나누어 지정한 비율보다 낮으면 제거하는 코드 포함

To do

  • word_id에 따른 Crop Offline Augmentation 구현
  • 크롭 너비가 특정 비율보다 작으면 제거하는 코드 구현

[FIX] Wandb current time 수정

Background

  • wandb name 및 artifact name의 �prefix로 붙힌 current_time을 구하는 식에서 괄호가 안닫힌것을 확인함.

To do

  • current_time 수정

[FEAT] Kfold random split

Background

  • Kfold로 random split 용 코드를 작성 및 적합한 valid인지 여부를 평가해봅니다.

To do

  • Kfold random split 코드 작성
  • 5fold로 실험 진행

[FEAT] Online Augmentation 구현

Background

  • 노이즈를 추가와 밝기 조절 증강 기법을 학습시 적용될 수 있도록 구현

To do

  • dataset.py에 augmentation 추가

[FIX] Dataset 경로 수정

Background

  • Random Split Code 적용 이후, Valid를 지정하여 학습하고자 하였으나 경로 오류 발생

To do

  • Json 파일 경로와 Image 파일 경로에 대하여 서로 별개의 경로에서 가져올 수 있도록 코드 수정

[FIX] Black formatter in github action

Background

  • github action이 사용자가 작성한 branch 외에도 원격에 존재하는 다른 모든 branch에 대해 매번 검사하는 것을 발견하였습니다.
  • PR에서 변경한 코드에 대해서만 'black' 검사가 실행 되겠끔 수정 합니다.

To do

  • event branch를 '*'에서 main으로 변경

[FEAT] Wandb 연결

Background

  • wandb 저장 코드를 추가합니다.

To do

  • wandb init을 추가합니다.
  • epoch, loss를 기록합니다.
  • 모델 artifact를 저장합니다.

[FEAT] 추가적인 데이터 구하여 train 진행

Background

  • 주어진 train을 위한 데이터가 100장뿐이기에, 추가적인 데이터가 필요하다고 판단

To do

  • AIHub의 데이터 선정
  • 추가적 데이터 - 기존 데이터 annotation 형식 일치화
  • train 진행

[FEAT] Show inference 결과를 비교하는 코드의 필요성

Background

  • Inference 결과로 나온 csv 파일들에 대해 정택님 코드로 show_inference 한 후, 각 csv 마다 그 결과를 비교하는 코드가 있으면 리더보드 제출 없이도 성능을 어느 정도 파악할 수 있을 것 같습니다.

To do

  • show_inference.py 결과들을 비교하여 사진으로 저장하는 코드

[FEAT] Metric 구현

Background

  • train.py에서 train, valid의 precision, recall, fl score 값을 log와 wandb에 출력하도록 구현

To do

  • train precision, recall, f1 score 출력
  • valid precision, recall, f1 score 출력
  • wandb에 해당 값들 출력

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.