Segmentation 대회 회고

기린이·2021년 11월 6일
0

부캠 TIL 🦆

목록 보기
50/53
post-thumbnail

대회 개요

11 class: Background, General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing

background까지 포함하여 11개의 클래스로 segmentation하는 것이었습니다.

  • 전체 이미지 개수 : 4091장
    [train : 2617, valid : 655, test : 819]

  • 이미지 크기 : (512, 512)

  • 11 class
    [Background, General trash, Paper, Paper pack, Metal, Glass,
    Plastic, Styrofoam, Plastic bag, Battery, Clothing]

  • 평가 방법 : mIoU

데이터의 특성

Label mask

Label mask 생성시 annotation 정렬 순서에 따라 마스크가 비정상 적으로 표시되는 경우가 있었습니다. annotation끼리 독립적이지 않은 경우가 있었습니다. 따라서 크기가 큰 annotation순으로 그려서 해결하였습니다.

[원본/개선전/개선후/변경부분]

배경과 구분이 어려운 경우

투명한 물체 뒤에 비치는 물체까지 레이블링 되어 있는 경우가 있었습니다. 주최측에서는 일반쓰레기봉투 안의 내용물은 레이블링 되지 않도록 수정했다고 전달받았습니다.

  • 투명해서 배경과 구분이 안되는 물체

  • 배경과 색깔이 비슷한 경우

배경이 물체인 경우

아래 예시처럼 배경이 플라스틱인 경우가 존재했습니다.

초기 목표

  • 데이터가 가진 어려움을 해결할 수 있는 방법을 찾아보자
  • detection 대회 때 detection 특성때문에 사용하지 못했던 copy paste를 사용해보자
  • mmdetection, mmsegmentation 같은 라이브러리 대신 torch기반의 스크립트로 구성하자

대회 타임라인

  • 1주차
    Segmentation 강의 듣기/학습정리, 베이스라인 코드 이해, 팀코드(ocrnet) 이해
  • 2주차
    copy paste 적용 및 오류 해결
  • 3주차
    토론게시판에 공유된 copy paste 적용, 리팩토링

배운점

GIT

프로젝트 후반부에 각자 코드를 합치면서 충돌이 아주 많이 났는데 이를 접하면서 git에 조금 더 익숙해졌습니다.

오픈소스 사용하기

OCRnet

팀원분이 SOTA모델인 Multi-sclae OCRnet 공식 github을 저희 데이터에 맞도록 수정해주셨습니다. 이를 보며 오픈소스를 사용하는 방법을 배울 수 있었습니다.

copy paste

copy paste 논문의 공식 깃헙을 참고하여 적용해봤습니다. 오픈소스사용하는 것을 연습할 수 있었습니다.

segmentation 모델 흐름 파악

detection때에 비해서 segmenation 모델마다의 특성과 FCN으로부터 이후 모델들이 어떻게 발전했는지 학습하고 정리하는 시간을 가졌습니다.

pytorch

저번대회와 다르게 mmdetection/segmentation 라이브러리를 사용하기보다 torch기반의 스크립트로 작업하였습니다. 저번대회에서 detection을 공부하기보단 라이브러리를 공부하는 느낌을 받았던 것에 비해 디버깅하는 과정이 좀 더 수월했습니다.

아쉬운점

번아웃

사실 이번 대회 2주차즈음에 번아웃이 왔습니다. 끊임없이 진행되는 캠프 특성도 원인이었지만, 방향성을 잡지 못해서 더 그랬던 것 같습니다. 내가 AI 분야에서 엔지니어/리서처, 어떤 분야의 산업, CV/NLP/Recsys .. 등 어떤 분야를 집중할 것인지 내가 어떤 직무를 좀 더 잘할 수 있을 지 고민해볼 것입니다.

copy paste

copy paste를 하기위해서 오픈소스를 사용했는데, 원래 제가 하고 싶었던 것은 1. 적은 데이터수를 가지는 카테고리의 객체를 합성 2. 기존 물체를 가리지 않도록 background에 합성 두가지였습니다.

그런데 오픈소스를 기반으로 해당 기능을 추가하는 것이 더 어려웠습니다. 그래서 결국엔 기능을 추가하지 못했고(사실 더 열심히 했으면 가능했을 것 한데 번아웃이 오면서 의욕이 많이 없었습니다😂)

나중에 토론 게시판에 공유된 코드를 참고해서 1번을 만족하는 copypaste를 할 수 있었습니다.

그래서 처음부터 좋은 코드를 만들기보다는 최소한의 목적을 설정하고 이를 만족하는 '돌아가는' 코드를 만들어봐야겠다는 생각을 했습니다.

더해보고 싶은 것

  • 우승팀의 솔루션 정리
    이번 대회는 등수보다 학습에 초점을 두었기때문에 스코어를 올리는 데에 어떤 솔루션이 좋았는지 정리하고 다른 segmentation대회에 참가할 때에 참고할 것입니다.

reference

image reference
네이버 커넥트재단 - 재활용 쓰레기 데이터셋 / CC BY 2.0

profile
중요한 것은 속력이 아니라 방향성, 공부하며 메모를 남기는 공간입니다.

0개의 댓글