ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CNN (5) | Object Detection Strategies (2) | 패스트캠퍼스 챌린지 34일차
    딥러닝 2022. 2. 26. 16:16

    지난 시간에 다룬 object detection 전략들은(특히 YOLO와 같은 one-stage detector의 경우) 객체 영역을 추정한 뒤 Intersection over Union에 따라 positive/negative sample을 구분하는 전략을 취했다. 하지만 왠만한 학습 데이터의 경우 이미지 안에서 객체에 해당하는 부분은 작기 떄문에 positive sample의 수가 negative sample에 비해 매우 작아 져서 class imbalance가 생기게 된다. 이는 성능에 그다지 좋지 못하다. Fast R-CNN과 같은 two-stage detector 같은 경우 sampling heuristics등을 활용한 region proposal을 추려내는 방법을 적용하여 이를 해결한다. 하지만 YOLO나 Faster R-CNN 등에서 one-stage detector의 성능이 더 빠름을 볼 수 있었기에, RetinaNet은 새로운 focla loss를 제시하여 이러한 class imbalance를 해결하였다. 즉, 기본적으로 cross entropy loss이지만, dynamic scaling factor를 적용하여 쉬운 예시의 경우 가중치를 낮추고 어려운 예시의 경우 가중치를 높이는 방법을 취하였다. 한 편, EfficientDet은 EfficientNet을 기반으로 한 object detection 모델로, EfficientNet과 마찬가지로 방대한 자원을 통해 다양한 실험을 진행하여 가장 최적화된, 파라미터가 효율적으로 사용된 object detection 모델이다. 

    Semantic Segmentation은 객체들의 클래스까지를 구분하는 방법이다. 즉, 이미지가 있으면 나무들을 나무로, 사람들을 사람으로 구분해 내는 정도이다. Instance segmentation과 달리 나무들 사이의 구분이나 사람들 사이의 구분은 하지 않는다. Semantic segmentation 모델로는 Fully Convolution Net이 기본적인 접근법이다. 이 접근법에서는 마지막에 dense layer를 넣는 일반적인 CNN Net 구성 대신 1x1 Convolution Net을 넣어 결과를 heatmap으로 표현한 뒤, unpooling, transpose convolution 등으로 upsampling을 시켜 semantci segmentation을 진행한다. DeconvolutionNet, U-Net, SegNet 등은 이 upsampling 과정을 대칭적으로 만든 모델이다. 

    CNN은 이러한 object detection 이외에도 super resolution 등의 해상도 증가 모델로도 사용되며, 강화학습의 이미지 인식, 생성모델, style transfer 등의 다른 모델에로의 응용도 가능하다. 이 외에도 자연어처리에의 활용도 가능하다.

    한 편, 이렇게 대규모의 모델을 훈련시키는데에는 병렬적 처리가 필요하다. 병렬적 처리에는 모델을 병렬적으로 처리하는 방법과 데이터를 병렬적으로 처리하는 방법이 있다. 데이터를 병렬적으로 처리하는 방법은 각 머신에 전체 모델을 넣고, 데이터를병렬화 하는 방식이다. 세부적으로는 synchronous한 방법과 asynchronous한 방법이 있다. Synchronous와 각 스텝마다 파라미터를 동기화하며, async한 방식은 파라미터 서버로 관리하기 떄문에 스텝마다 파라미터를 접근하지 않는 방법을 쓴다. 모델 병렬화는 각 머신에 일부의 모델을 넣어 여러 머신에 거쳐 하나의 모델을 훈련하는 방식을 뜻한다.


    본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC

    댓글

Designed by Tistory.