[Day 29] Object detection 어떻게 되는 것일까?

 안녕하세요!
오늘은 Day 29입니다!


오늘 공부했던 것은

이건 course에 week 3 부분이다
자 ~~ 내용을 요약해 보도록 하겠습니다


1. Classification with localization

우리 모델에 어떤 사진을 주면 output은 찾아 봤던 object와 그 object의 'bounding box' 좌표도 포함한다
예를 들어, y은 [pc, bx,by,bh,bw,c1,c2,c3] 포함하며 pc는 object이 있는지 없는지 표하고, bx,by,bh,bw bounding box의 좌표이도, c1,c2,c3는 다중 분류의 변수이다 (c1 = pedestrian, c2 = car, c3 = motorcycle).

그런데 이런 모델 어떻게 훈련할까? 

우선, 차 있는지 없는지 분류 모델 훈련하고서 Sliding windows detection 방법으로 차가 있는지 없는지 발견할 수 있겠다
그 창의 사이즈 다양하게 선정할 수 있다

그런데, 이 방법의 비용이 너무 크다고 발견했다, convolution으로 할 수 있는 방법이 만들어졌다
위에 경우에 square 하나씩 하나씩 창을 움직인데 convolution implementation으로 한꺼번에 다 할 수 있게 되었다

 

2. YOLO 


You Only Look Once 알고리즘은 제일 널리 사용되는 알고리즘 중 하나이다. 속도가 빠르고 이미지를 주면 한꺼번에 처리할 수 있는 방법이다. 
'Grid based approach'으로 사진이 여러 가지 창으로 나누고 그 창에 안에 있는 object의 bounding box와 pc (object 있는지 없는지 확률) 계산한다

3. Object detection 평가

Intersection over Union (IoU) 방법으로 평가할 수 있다
예측 bounding box와 정말 bounding box 있으면, Area of overlap (황색)과 Area of union (청색)으로 IoU 계산할 수 있어서 평가를 할 수 있다


실제로 YOLO 모델 사용 시 19x19 grid 사용하는 경우가 많아서 object이 여러 가지 창에 있을 수도 있어서 non-max suppression algorith으로 예측 bounding box의 pc (object 있는지 확률)이 0.6 안 넘으면 'discard' (삭제) 할 수 있다

4. Anchor boxes

anchor box 개념은 예를 들어 차는 보통 horizontally 있는제 사람은 vertically 서 있다
그러니 anchor box 2 가지 정의 하면 output에 anchor box 정보도 포함할 것이다
그리고 output이 3x3x8 아닌데 3x3x(8x2)로 될 것이다 (anchor box 2가지 있을 겅우)

5. Region proposal (R-CNN)

R-CNN는 창으로 나누는 방법보다 여러가지 class가 다른 색갈 (숫자)로 정의하고 보이는 방법이다.
R-CNN보다 더 효과적인 알고리즘을 발견했는데 다음과 같이 모델을 만들 수 있다

6. Semantic segmentation

보통 모델에 Dense 레이어 빠고 되돌리는 (transpose convolution) 방법으로 semantic segmented 이미지 받을 수 있다
이 방법을 U-Net이라고 한다
U-Net의 implementation 어려울 텐데 나중에 학회 후 한번 해 볼 것이다!


내일부터 KCSE 2024 학회 시작하여 사흘 동안 독학으로 배우긴 많이 할 수 없을 것 같은데 학회에서 발표될 내용의 요약해 드리도록 하겠습니다.
제 발표는 2월3일이고 기대됩니다!


오늘은 여기까지입니다!
내일 뵐게요!


Popular posts from this blog

[Day 198] Transactions Data Streaming Pipeline Porject [v1 completed]

[미리 공부] 기초 통계 복습 (Day 1는 1월2일)

[Day 61] Stanford CS224N (NLP with DL): Machine translation, seq2seq + a side CDCGAN mini project