8/8 Today I Learned -1

boks·2024년 8월 8일
post-thumbnail

📖 학습한 내용

  • object detection
  • SSD

📖 핵심내용

📌 object detection

객체 탐지평가

  • mAP (mean average precision)
    각 클래스에 대한 precision의 평균
    얼마나 잘예측하는지 측정
    정밀도(precision) : 얼마나 정확하게 객체를 탐지했는지
    재현율(recall) : 실체 객체 중 얼마나 많은 객체를 탐지했는지
    임계값을 정하고 정밀도와 재현율을 고려 -> 임계값이 높으면 정밀도 증가, 임계값 낮으면 재현율 증가

객체 탐지 훈련 프로세스

  1. 데이터 준비
    훈련을 위해서 객체의 위치정보와, 클래스 카테고리 정보가 필요하다.

  2. 특징 추출
    CNN 사용

  3. 경계상자 예측
    원본이미지에 뽑는것이 아니라 피처맵에서 뽑는다.
    막 뿌리고 오차를 줄여가는 회귀 방식으로 학습
    -> 피처맵의 각위치에고정된 수의 앵커박스 사용

  4. 클래스 예측
    상자 내에 객체가 포함될 가능성과 각 클래스에 속할 확률 예측

  5. NMS(non-maximum suppression)
    박스안에 오브젝트가 있을 확률이 가장 높은 박스와 겹치는 상자들을 제거한다.
    IOU 값을 본다 -> 겹치는 정도가 0인 것은 제거하지 않는다 -> 다른 오브젝트임

객체 탐지 예측 프로세스

  1. 이미지 전처리
  2. 특징 추출
  3. 경계상자 및 클래스 예측
  4. NMS
  5. 결과출력
    ※ 바운딩 박스(경계상자) 좌표값 : 이미지 내 객체의 위치를 사각형 형태로 예측한 결과
    ※ confidence score : 예측 정확도

NMS

  • 정의
    예측한 바운딩 박스중에서 가장 정확한 바운딩 박스만 남기고 겹치는 박스를 모두 제거

  • NMS프로세스

  1. 신뢰도 점수 정렬 -> 소프트맥스
  2. 상자 비교 및 선택
    가장 신뢰도 점수가 높은 상자를 선택
    선택한 상자와 다른 모든 상자간의 겹침정도(IoU)를 계산, 자카드 유사도도 잘 쓰인다
  3. IoU 임계값 적용
    임계값이 높으면 신뢰도 증가
    낮으면 precision 증가
  4. 반복실행
  5. 최종 경계상자 결정

객체탐지 학습데이터

  • 대표 데이터셋

    -> 라벨 이미지, 바운딩 박스 데이터두가지는 공통적으로 가지고 있다
    -> 각각 데이터 형태 및 컨텐츠가 다르므로 필요시 확인하고 사용

📌 SSD

single shot detection
객체 인식을 위한 모델
one-stage detector -> region proposal + classification

특징

  • 싱글샷 디텍터
  • 멀티 박스
  • 다양한 스케일의 피처맵 : multi-scle approach -> 다양한 형태, 사이즈의 오브젝트별 디텍트하기 위해 사용. 즉 다양한 크기의 피처맵 사용
    작은 사이즈의 피처맵 -> 큰 객체 탐지
    큰 사이즈의 피처맵 -> 작은 객체 탐지
  • 속도와 정확도
  • NMS : 여러개 예측박스 중에 최종적으로 객체를 나타내는 가장 확률이 높은 박스를 선택 -> 겹치는 박스를 제거하고 각객체에 대한 최종 예측 확정

box

  • 바운딩 박스
  • 앵커박스(default box)
    사전에 정의된 참조 박스, 모델이 객체의 크기와 비율을 예측하는데 기준점으로 사용하는 박스
  • Ground Truth Bounding Box : 정답 바운딩 박스

학습 프로세스


-> 위치손실 : 회귀
-> 클래스 신뢰도 손실계산 : 분류

cell

grid cell
이것을 기준으로 앵커박스가 주어짐

-> 각각의 피처맵에 따라서 그리드셀이 결정된다. 제너레이트 셀이 생기면 각각의 셀에 앵커박스가 생긴다. 이후 앵커박스 중에 최적의 바운딩 박스를 찾는다.

앵커박스

그리드 셀별로 배치가 된다.
그리드 셀 기준으로 비율을 달리하여 이미지를 찾는다
원본 이미지에 사용되지 않고, 모델을 통과한 피처맵에 사용된다.
4개 또는 6개

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

📖 어려운 부분

ssd300_vgg16에서 예측해서 나온 labels의 값은 찾아봐야하는 것인가? 그리고 COCO_INSTANCE_CATEGORY_NAMES에서 라벨을 우리가 지정해서 나오게한 것인지

📖 이후 학습 계획

📖 기타

profile
설계엔지니어의 변신

0개의 댓글