본문 바로가기

부스트캠프 AI Tech/[Week9] Object Detection (1)

[Week9] Object Detection - library [Day2]

1. Object Detection을 위한 라이브러리

 

  • 통합된 라이브러리의 부재
  • 실무 / 캐글에서는 아래 두 라이브러리를 주로 활용
    • MMDetection
    • Detectron2

 

2. MMDetection

 

  • Pytorch 기반의 Object Detection 오픈소스 라이브러리
  • Pipeline

    • 2 Stage 모델은 크게 Backbone / Neck / DenseHead/ RoIHead 모듈로 나눌 수 있음
    • 각각의 모듈 단위로 커스터마이징
    • 위 시스템은 config 파일을 이용해 통제




    • Backbone - 입력 이미지를 특징 맵으로 변형
    • Neck - backbone과 head를 연결, Feature map을 재구성 (FPN)
    • DenseHead - 특징 맵의 dense location을 수행하는 부분
    • RoIHead - RoI 특징을 입력으로 받아 box 분류, 좌표 회귀 등을 예측하는 부분
  • Code
    • 라이브러리 및 모듈 import



    • config 파일 불러오기



    • config 파일 수정하기
    • 모델, 데이터셋 build


    • 학습
  • Config File 구조
    • configs를 통해 데이터셋부터 모델, scheduler, optimizer 정의 가능 
    • 특히, configs에는 다양한 object detection 모델들의 config 파일들이 정의돼 있음 
    • 그 중, configs/base/ 폴더에 가장 기본이 되는 config 파일이 존재
      • dataset, model, schedule, default_runtime 4가지 기본 구성요소 존재
    • 각각의 base/ 폴더에는 여러 버전의 config들이 담겨있음 
      • Dataset – COCO, VOC, Cityscape 등 
      • Model – faster_rcnn, retinanet, rpn 등
    • 틀에 갖춰진 config를 상속 받고, 필요한 부분만 수정해 사용함

 

 

  • Dataset
    • samples_per_gpu
    • workers_per_gpu 
    • train
    • val
    • test
    • pipeline=train_pipeline 부분 아키텍쳐


  • Model

    • type
      • 모델 유형
      • Ex. FasterRCNN, RetinaNet
    • backbone
      • 인풋 이미지를 feature map으로 변형해주는 네트워크
      • Ex. ResNet, ResNext, HRNet
    • Neck
      • Backbone과 head를 연결
      • Feature map을 재구성
      • Ex. FPN, NAS_FPN, PAFPN
    • rpn_head
      • Region Proposal Network
      • RPNHead, Anchor_Free_Head
      • Anchor_generator
      • Bbox_coder
      • Loss_cls
      • Loss_bbox
    • roi_head
      • Region of Interest
      • StandardRoIHead, CascadeRoIHead
      • bbox_roi_extractor, bbox_head
    • bbox_head
    • train_cfg
    • test_cfg
  • 커스텀 backbone 모델 등록
    1. 새로운 backbone 등록 - @BACKBONES 오버라이딩하여 등록
    2. 모듈 import


    3. 등록한 backbone 사용

 

 

  • Runtime settings

    • Optimizer
      • Ex. SGD, Adam, ...
    • Training schedules
      • learning rate
      • runner

 

3. Detectron2

 

3.1 Detectron

  • Facebook AI Research의 Pytorch 기반 라이브러리 
  • Object Detection 외에도 Segmentation, Pose prediction 등 알고리즘도 제공

 

 

  • Pipeline : Setup Config / Setup Trainer / Start Training
    • Setup config


    • Setup Trainer : build_moder / build_detection / build_optimizer / build_lr_scheduler


    • Start Training


  • 파이프라인 미리보기
    • 라이브러리 및 모듈 import하기


    • 데이터셋 등록하기


    • config 파일 불러오기


    • config 수정하기


    • Augmentation mapper 정의
      • Detectron은 파이프라인이 따로 존재X
      • 자유도를 보장하는대신 구현하기 까다로울 수 있음 


    • Trainer 정의


    • 학습


  • Config File 구조
    • MMDetection과 유사하게 config 파일을 수정, 이를 바탕으로 파이프라인을 build하고 학습함
    • 틀이 갖춰진 기본 config를 상속 받고, 필요한 부분만 수정해 사용함


    • 디폴트 컨피그를 불러온 후, 기본적인 내용이 채워진 yaml 형식의 config 파일로 채움

 

 

  • Dataset config
    dataset
    dataloader

    • 데이터셋, 데이터로더와 관련된 config
    • TRAIN, TEST에 각각 등록한 train 데이터셋과 test 데이터셋의 이름을 입력함
    • Dataset 등록
      • 커스텀 데이터셋을 사용하고자 할 때는 데이터셋을 등록해야함
      • 전체 데이터셋이 공유하는 정보(ex. class명, 파일 디렉토리 등)을 메타 데이터로 등록할 수 있음



      • config 파일에 train 데이터셋과 test(val) 데이터셋을 명시해 사용할 수 있도록 함
    • Data Augmentation : augmentation 정보가 담긴 mapper 정의


      •  Dataloader에 mapper를 input으로 넣어줌

 

 

  • Model config
    • BACKBONE
      • 인풋 이미지를 특징맵으로 변형해주는 네트워크 Ex. ResNet, RegNet,...
    • FPN
      • Backbone과 head를 연결, Feature map을 재구성
    • ANCHOR_GENERATOR
    • RPN
    • ROI_HEADS
    • ROI_BOX_HEAD
    • 커스텀 backbone 모델 등록
      1. 새로운 backbone 등록


      2. 등록한 backbone 사용


 

  • Solver config
    • LR_SCHEDULER
    • WEIGHT_DECAY
    • CLIP_GRADIENTS