8/9 Today I Learned -1

boks·2024년 8월 9일
post-thumbnail

📖 학습한 내용

  • SSD
  • Image Segmentation
  • R-CNN

📖 핵심내용

📌 SSD

  • Single Shot MultiBox Detector
  • 단일 신경망을 사용 : 한번의 신경망 추론으로 이미지 내에서 객체의 위치와 클래스 정보를 동시에 추론
  • 빠르지만 정확도가 떨어진다. -> 하지만 성능이 많이 올라와서 실시간 객체 탐지나 경량화된 애플리케이션에서 사용된다.

bounding box

  • 객체 주변에 사각형 영역이 있는 것

로스계산시 필요한 박스

  • ground truth bounding box
    학습때 사람이 주는 정답 박스
    좌표와 라벨 정보가 있다

  • predicted bounding box
    모델이 이미지 내 객체를 예측한 결과
    예측한 좌표와 라벨

  • 성능평가
    정답좌표 - 예측좌표 <- 옵셋이라고함

앵커박스

앵커의 모든 멀티 스케일 박스를 전부 지칭하는 것

모델 구조


input : 이미지
output : predicted bounding box
loss : ground truth bounding box - predicted bounding box

multi-scale approach

다양한 크기의 피처맵과 온갖 사이즈의 앵커박스가 있으므로, 여러 사이즈의 객체를 탐지할 수 있다.
multi scale feature layer + default box(anchor box)
피처맵이 작을수록 원본이미지의 수용영역이 커진다.
따라서 피처맵이 작을 수록 더 큰 객체 탐지를 한다.

SSD 차원의 수용영역

  • 필터 사이즈만큼 압축된다

  • 각 층별 수용영역 예시
    1) block1_conv1 (가장 초기 층)

    2) block5_conv3 (가장 깊은 층)

SSD 전체 프로세스


1) 멀티스케일 피처생성
-> 다양한 크기 객체 탐지를 위해

2) 앵처박스 생성
-> 각피처맵마다 생성
-> 미리정해진 위치와 개수
-> 앵커박스 기준으로 실제 박스를 찾아감

3) 로스 계산
-> 위치손실 + 클래스 신뢰도 손실 계산

4) 하드 네거티브 마이닝
-> 클래스 불균형을 해소하기 위한 조치 (정답추리기)
-> 배경을 학습하는 오판을 줄이기 위해서 배경을 학습한다
-> 겹처지는 앵커박스(포지티브 : 객체)와 겹쳐지지 않는 앵커박스(네거티브 : 배경)
-> 클래스의 비율이 1:3 정도의 비율이 나오면 성능에 영향을 주므로 해소해야한다.

5) Non-maximum suppression
-> confidence score, IoU + 자카드
-> 겹치는 박스 중 가장 신뢰가 높은하나 제외하고 박스 삭제

요약된 프로세스 시각화


사전학습모델을 이용하여 여러개의 사이즈의 피처맵을 생성 (논문에서는 6개)
그라운딩 트루쓰박스를 주고, 좌표를 통해서 위치를 회귀와 클래스의 로스를 구한 뒤 병합한다.

SSD의 피처맵

  • 피처맵 추출
    논문에서는 6개의 사이즈가 다른 피처맵을 추출

  • cell
    셀의 개수는 피처맵의 해상도와 같다
    해상도에 따라서 달라진다
    앵커박스의 앵커점이 위치한다.

  • 층별 셀의 개수와 셀당 앵커박스 개수

    -> 하나의 셀당 정해진 앵커박스 수가 있다.
    -> (Classes + 4) 뜻 : 앵커박스 하나당 클래스 예측과 좌표값을 알아야한다. 따라서 클래스 개수 + 박스의 대각선 모서리 2개의 x,y 정보-총4개의 정보가 들어가야한다.

앵커박스

  • 크기와 비율
    피처맵에 들어가는 앵커박스의 가로 세로 길이는 사전에 수학적으로 정의된 사이즈로 들어간다.

  • 앵커박스 할당
    훈련에서 각 앵커박스마다 정답 박스와의 IoU를 계산한다.
    IoU 임계값을 기준으로 정답박스와 앵커박스의 겹치는 면적기준으로 양성 샘플을 선택한다. (임계값 0.5면 겹치는 면적이 50%)
    음성 샘플(배경을 라벨)은 하드네거티브마이닝 -> 가장 손실이 큰 것을 1:3 정도 비율로 선택하여 학습을 시킨다. -> 클래스 불균형을 위해서

  • 위치조정 - offset
    앵커박스나 피처맵이 무한하지 않아서 정답박스(GTBB)랑 딱 맞지 않으므로, 보정값을 학습한다.
    결론적으로 맨땅에 해딩하는 것보다 앵커박스로 기준잡고, 차이만큼을 학습한다.

📌 Image Segmentation

  • 정의
    각 픽셀을 글래스에 할당한다.

  • 주요 모델
    1) CNN-based

2) Transformer-based

3) Multi-modal approach

목표

  • 이미지를 입력 받아서 각 픽셀이 클래스 라벨 값을 지닌 새그먼테이션 맵을 출력

  • 정잡 정보를 원핫인코딩 형태로 표현 가능 -> 하나의 클래스마다 하나의 채널 존재

모델구조

  • 인코더 디코더 구조
    인코더 : 다운샘플링 - 클래스간 차이 학습(정보 추출)
    디코더 : 업샘플링 - feature represntation(특징표현)

cross entropy


-> 클래스마다 각 픽셀이 클래스에 속할 확률

Upsampling

  • 피처맵의 크기를 확대
  • 필터에 의해서 값이 값이 채워진다.
  • transposed convolution
    output의 크기가 input보다 커짐 -> Upsampling

또 다른 방법

Nearest Neighbor, Bed of nails

평가

  1. Pixel accuracy
    전체의 픽셀중에서 정답 클래스가 제대로 예측된 픽셀의 비중
    클래스 불균형에 취약

  2. mean IoU
    각 클래스에 대한 IoU의 평균
    비교적 클래스 불균형에강하다

  3. Dice coefficient
    집합의 유사성
    1에 가까울 수록 두 집합이 유사하다.
    f1-score와 비슷하다

📌 R-CNN

  • object detection(객체 인식)을 위한 모델
  • 주요모델
    R-CNN, Fast R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN

Two-stage detectors

  • region proposal + object detection
    step1. region proposal
    관심영역(ROI) 추출
    ROI : 객체가 존재할 가능성이 있는 지역
    selective search :

step2. object detection

학습 프로세스

  1. region proposals

  2. feature extraction(특징추출)
    CNN(알렉스넷) 통과 후 분류기(SVM) 전달

📖 흥미로운 점 / 새로 알게된 점

📖 어려운 부분

멘토와의 질의 내용 답변, 어떤 문제가 있었는지, 내가 시도해본 것들, 어떻게 해결했는지

📖 이후 학습 계획

📖 기타

느낀점, 응시한 테스트, 퀴즈, 과제

profile
설계엔지니어의 변신

0개의 댓글