졸업 과제 상담-1

.·2023년 5월 2일
0

주제: 심층 학습 기반 버스 혼잡도 및 인원수 측정 기술

서비스 내용

  • 버스의 운영 상황을 실시간으로 모니터링할 수 있는 기술은 승객의 편의와 안전성을 확보하는데 중요한 역할을 한다. 현재 버스 내부 정보가 충분하지 않아 인원수 및 혼잡도 등을 정확하게 파악하는 기술은 대중교통의 효율성과 편리성을 높이는데 필수적이다.
  • 부산에서는 기존의 버스 내부 인원 수 측정 방식이 카드를 찍는 방식으로 이루어져 있으며, 이 방식은 하차 시에 카드를 찍지 않으면 해당 버스에 탑승 중인 인원 수를 정확하게 파악하기 어려운 한계가 존재한다.
  • 본 과제의 최종 목표는 비전 및 다중 센서를 추가하여 버스 내부의 인원 수와 혼잡도를 측정하는 기술을 개발하는 것이다.

개발 내용

  • 비전 기술을 이용해 차량 내부에 탑승한 인원 수 측정 기술
  • 다중 센싱을 이용한 차량 내부의 혼잡도 측정 기술

필수 기술 요소

  • 기계학습의 이해 및 도구 활용 기술
  • 영상 처리 기술 이해 및 분석

졸과 첫 미팅후 숙제
요약하면
1. yolo 모델이 뭔지? 써야하는 이유?
2. yolo 쓰려면 pytorch를 쓸 줄 알아야 함 -> pytorch 알아오기
3. 실제 회사에서 사람수 카운트를 어떤식으로 하는지? (센서 사용 등)
4. 사람수 카운트하는 본질적인 이유 고민해오기

1번 문제에 대해 정리하였다.

1. YOLO

1. YOLO란 무엇인가?

YOLO는 You Only Look Once. 즉 한 번에 보고 바로 처리를 하겠다 라는 속도가 빠르다는 장점을 내세운 객체 검출 모델이다.

객체 검출은 사물이 어떤 것인지 분류하는 Classification과 사물이 어디 있는지 위치 정보를 나타내는 Localization문제로 나눌 수 있는데, YOLO는 이를 한 번에 하는 1-stage-detection 방법을 사용한다.

2. YOLO의 원리

대략적으로 알아보자

  1. 사진이 입력되면 가로 세로를 S X S 그리드 영역으로 나눈다.

입력 이미지(1)이 네트워크를 통과하면 2개의 데이터(2), (3)을 얻는다.

  1. 각각의 grid cell은 B개(B=2?)의 크기가 일정하지 않은 Bounding Box와 각 Bounding Box에 대한 confidence score를 갖는다. 신뢰도가 높을수록 굵게 박스를 그려 줌. (confidence score: 물체를 포함한다는 박스에 대한 예측이 얼마나 정확한지를 의미)

  2. 동시에 (2)에서와 같이 어떤 사물인지 classification작업이 동시에 진행. 각 그리드에서 해당 객체의 확률과 가장 높은 확률을 가진 클래스를 검출해 해당 그리드의 클래스를 확정한다.

    각각의 바운딩 박스는 x, y, w, h와 confidence로 구성

    (x, y): Bounding Box의 중심점

    (w, h): 전체 이미지의 width, height에 대한 상대값

    confidence: 예측 box와 실제 정답 사이의 IOU

    IOU: 바운딩 박스의 위치 정확도에 대한 평가 도구. 예측한 바운딩 박스와 실제 물체의 바운딩 박스 두 개의 교집합을 총 너비로 나눈 값으로 수치가 클수록 정확도가 높다

    각각의 그리드 셀은 conditional class probability를 가짐.

    Conditional Class probabilty : Pr * P(Clsss[i] | Object)

    평가 할 때 Conditional Class probablity와 confidence prediction을 곱하는데 이 점수는 class가 박스안에 존재하는지와 박스가 물체에 얼마나 적합한지 모두 포함

  3. 확정된 클래스의 확률이 threshold 이상인 그리드를 이용하여 bounding box를 그린다.

예시

이미지를 4X4 그리드로 나누고 B=2(각 그리드 셀마다 예측하는 바운딩 박스가 2개), 전체 고려하는 class 개수가 20개라고 가정하자.

첫 번째 예측된 바운딩 박스의 정중앙 좌표인 x, y 좌표와 바운딩 박스의 너비와 높이를 전체 이미지로 나눠 정규화한 w와 h(0~1사이 값을 가짐) 그리고 박스 내부에 물체가 존재할 확률 confidence score인 Pc까지 총 5가지 출력이 나오게 된다. 여기서 confidence score인 Pc는 Pr에 IOU를 곱해준 값이다. Pr은 해당 바운딩 박스 내부에 물체가 있으면 1 없으면 0 값.

마찬가지로 두 번째 바운딩 박스에 대해 예측한 5가지 값에 대해서도 텐서로 넣어준다.
마지막으로 그리드 셀에 있는 객체가 어떤 클래스인지 확률이 들어가게 된다Pr(Classi|Object): 물체가 바운딩 박스 내에 있을 때, 그리드 셀에 있는 객체가 i번째 클래스에 속할 확률.

이로써 하나의 그리드 셀에 대한 아웃풋이 나오게 되며, 이 과정을 모든 그리드셀(4 X 4)에 대해 적용시킨다.
그 결과 4 X 4 X 30의 아웃풋 텐서가 나오게 된다.

3. 장단점

1) 장점

  1. 간단한 처리 과정으로 속도가 빠르며, 기존의 실시간 객체 검출 모델들과 비교하면 높은 mAP(mean Average Precision)를 보인다.
  2. YOLO는 훈련된 모델을 다운로드하고 바로 사용할 수 있는 사전 학습된 모델(pre-trained model)을 제공하기 때문에, 직접 모델을 학습 시키지 않고도 쉽게 객체 검출을 수행할 수 있다.
  3. 주변 정보까지 학습하여 이미지 전체를 처리하기 때문에 background error가 적다. (모든 학습 과정이 이미지 전체를 통해 일어나기 때문에 단일 대상의 특징뿐 아니라 이미지 전체의 맥락을 학습하게 된다)
  4. generalized된 모델로 훈련 단계에서 보지 못한 새로운 이미지에 대해서도 검출 정확도가 높다.

2) 단점

  1. R-CNN계열 모델들에 비해 상대적으로 낮은 정확도를 가지며, 작은 객체 특히 한 그리드 내에 여 러 객체가 있을 경우 검출이 어렵다. bound box간 IOU값의 차이가 작기 때문

4. YOLO를 사용하는 이유

실시간 객체 탐지에 빠른 처리 속도와 높은 정확도 모두 충족시키는 것이 가능하다는 점 때문에 사용한다. Fast R-CNN이나 Faster R-CNN은 정확도는 높지만, 속도에서 차이가 많이 나 실시간으로 객체를 검출하기 힘들 수 있다. R-CNN계열과 YOLO의 FPS를 비교해보면 6배 정도 차이가 나는 것을 볼 수 있다.

YOLO v5가 v4에 비해 전반적으로 성능이 우수하다.

상황 별 적합한 모델 선택

속도, 성능의 Trade-Off를 고려하여 선택
(YOLOv3-tiny > YOLOv3-320 > YOLOv3-416 > YOLOv3-608 = YOLOv3-spp)
왼쪽에 있을수록 속도가 빠르고 요구 사양이 낮지만 정확도가 떨어짐

Detection 해야 하는 object의 크기에 따라 모델 종류 고려

⇒ 다른 제약 사항이 없다면 최신 버전을 사용하는 것이 좋음

YOLO 사용 예시

profile
공부하고 정리하는 블로그

0개의 댓글