본문 바로가기
논문 정리

저자가 직접 리뷰하는 YOLOv5 + Optical Flow 보행자 위험 예측

by winston1214 2021. 8. 15.
반응형

내 논문 내가 리뷰!!

논문 링크 : https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE10583405 

 

딥러닝과 Optical Flow를 활용한 보행자 사고 방지 모델

논문, 학술저널 검색 플랫폼 서비스

www.dbpia.co.kr

만약 DBpia 아이디가 없고 돈 내야한다면 https://github.com/winston1214/My_paper/blob/master/Pedestrian%20Accident%20Prevention%20Model%20Using%20Deep%20Learning%20and%20Optical%20Flow.pdf

 

GitHub - winston1214/My_paper: My paper

My paper. Contribute to winston1214/My_paper development by creating an account on GitHub.

github.com

 

그리고 이에 대한 Oral 발표 링크는 https://www.youtube.com/watch?v=PKDQhGyTW6s 

논문의 저자로써 진심으로 솔직하게 이건 아니다 이건 부족하다라는 것을 정확하게 설명하고 추후 연구 방향성에 대해서 솔직하게 설명해드리겠습니다.

 

본 논문은 정보과학회(KCC2021)에서 학부생/주니어 논문 제출부분에서 최우수논문상을 받은 논문입니다.

제목 : 딥러닝과 Optical Flow를 활용한 보행자 충돌방지 모델

 

## Contribution

1. 카메라만을 이용한 보행자의 이동 방향 예측

2. 기존의 Optical Flow를 활용한 방법에서 처리 시간을 비약적으로 줄여 실시간성으로 위험도 측정 가능하다.

3. LDOF(Local Dense Optical Flow) 개념을 제안하였다.

4. Dynamic Scene에서 객체의 Optical  Flow를 추정하는 방법을 제안하였다.

## Introduce

본 논문은 자율주행 트램을 위하여 트램의 특수한 환경에서 보행자의 위험을 예측하여 제어를 할 수 있는 방법을 제시하였다. 객체 탐지는 YOLOv5를 통하여 수행하고 객체를 탐지하는 동시에 LDOF라는 개념을 적용하여 보행자의 움직임을 추정할 수 있다. 또한, TTC(Time-To-Collision)을 계산하여 위험 여부를 판단하는 시스템을 제안하였다. 본 모델의 전체적인 흐름은 다음과 같다.

Model Flow Chart

 

## LDOF(Local Dense Optical Flow)

본 논문에선 Optical Flow의 정확한 추정을 하기 위해 전통적인 방법 중 Farneback Gunner 알고리즘을 사용하였다. (사실 더 좋은 알고리즘 적용할 수 있었지만 학술지여서 상대적으로 간단한 알고리즘 사용)

특징점을 기반으로 한 Lucas Kanade 방법이 있지만 shi-tomashi 방법으로 특징점이 추출이 안되거나 일부 특징점으로 Optical Flow를 추정하기 때문에 정확도가 낮아지는 단점이 있다. 따라서 본 논문에선 이를 극복하기 위해 Farneback Gunner 알고리즘을 사용하였다.

그러나 Farneback Gunner 알고리즘은 LK 알고리즘에 비해 비교적 정확한 추정을 이뤄낼 수 있지만 모든 픽셀에 대해서 계산해야하기 때문에 속도가 느린 점이 있다. 이를 극복하기 위해 객체의 주변만 계산하는 Local Dense Optical Flow(LDOF)를 제안한다.

반응형

LDOF는 두가지의 계산이 이뤄진다. 처음으로는 YOLOv5로 탐지된 영역(Bounding Box)내만 계산을 하여 Optical Flow를 추정하는 것이고, 두번째론 Bounding Box 내의 Optical Flow를 제외한 Bouding Box의 주변만 따로 계산을 하는 것이다. 

이를 표현한 그림은 다음과 같다.

LDOF

그림에도 설명하였듯이 초록색 부분은 객체의 움직임만 추출하기 위함이고, 주변벡터를 계산하는 것은 주행체의 움직임 즉, Ego Motion을 제외하는 것이다. 이를 통해 주행체의 움직임을 제외한 객체의 순수한 움직임을 추정할 수 있다. 또한, 이렇게 추정한 객체의 움직임을 5번 누적한다. 이는 벡터의 안정화를 위함이다. 

이렇게 계산하게 되면 다음과 같이 추정된다.

Dense vs LDOF

Dense Optical Flow로만 추정하였을 때는 주행체의 움직임만 계산되었지만 LDOF 적용을 하면 객체 주변의 움직임만 추정됨을 볼 수 있다. (사실 대표 벡터를 그릴라 했는데 귀찮아서 안그렸습니다...ㅎㅎ)

 

## 충돌 예상 시간 추정

충돌 예상시간은 간단한 식으로 추정하였다.

$$ t_{c} = \frac{s_{0}}{v_{r}} $$

\( v_{r} \)은 주행체의 속도인데 이는 주어져있다고 가정한다. 그리고 \( s_{0} \)는 주행체와 객체와의 거리이다.

이 전에 2D 이미지만을 이용하므로 객체와 주행체 간의 거리를 판단하여야하는데 이는 다음과 같은 식을 통해 추정하였다.

Distance 추정

카메라의 초점 거리와 이미지의 실제 높이를 안다는 가정 하에서 추정하였다.(사실 이는 실제 높이를 알아야된다는 가정이 있지만 이후 실제 코드에선 이미 픽셀 기반의 객체 거리 추정으로 더욱 정확한 거리 추정을 이뤄냈다.)

 

## 실험 결과

 

result matrix

실험 환경은 10m~30m로 10m 간격으로 이뤄냈고 객체의 이동 방향은 -45도 0도 45도로 나타냈다. 그리고 객체의 속도도 판단하였다. 사람의 평균 걸음 속도가 1.38 m/sec 라는 것을 기반으로 정확도를 보면 된다.

이 표를 보면 그렇게 각도를 봤을 때 좋은 성능을 내지 못했다는 것을 알 수 있다. 사실 이건 객체가 탐지된 후 바로 각도와 크기를 평균낸 것으로 수치적으로 보았을 땐 좋은 성능이 안나온다. 그러나 실제 영상을 보면 꽤 좋은 성능을 나타낸다는 것을 알 수 있다. 다음은 결과 사진이다. 

result

다음은 본 논문의 아주 큰 contribution인 실시간성이다.

compare of result

다른 모델에 비해 매우 연산속도가 가장 빠른 것을 볼 수 있다. 심지어 이전의 연구에선 LK 알고리즘을 사용하였는데 이보다 매우 빠른 성능을 나타내었다.

## 향후연구

가까운 객체에 대해서 주행체의 흐름 벡터가 더욱 강해져서 순수 객체만의 Optical Flow의 정확한 추정이 불가한 상황이 발생하였다. 따라서 이를 극복하기 위해 다른 방법을 고안할 것이고 딥러닝을 활용한 Optical Flow 추정을 통해서 더 정확하게 판단을 하는 연구를 지속할 것이다.

 

## 저자 찐 리뷰

나의 첫번째 대형 프로젝트이자 첫번째 논문이 최우수상까지 받아서 솔직히 너무 좋았다. 이 알고리즘에 대한 코드를 공개하고 싶지만 공개되는 코드가 아니어서 공개를 못한다는 점 양해를 부탁드립니다..

사실 이 알고리즘에 대해 더 좋은 성능을 낼 수 있었지만 프로젝트의 기한이 정해져있어서 개인적으로는 조금 아쉬운 연구이다. 추후엔 좀 더 발전시켜 2d 단일 이미지로 많은 것을 추정할 수 있는 알고리즘을 개발하는 연구를 하고 싶다. 객체와 주행체 간의 거리 추정도 사실 Lidar 센서로 받아올 수 있었지만 Lidar 센서의 정확성이 보장이 되지 않아서 이조차도 받아오지 못하는 상황이었다. 또한, 출장지가 멀어서 많은 상황 시뮬레이션을 하지 못한 점이 너무 아쉽다.

이 프로젝트에서 가장 어려웠던 점은 사실 알고리즘도 알고리즘이었지만 논문에서 나오지 않은 ROS와의 연동이었다. ROS는 이 프로젝트를 하면서 처음 알게된 것으로 실제 차상장치에 탑재를 하기 위한 것이기 때문에 정말 독학으로 어떻게든 탑재를 시켰다. 이 과정에서 많은 시간을 쏟은 것 같다.. 아무도 ROS에 대해 몰라서 더욱 힘든 과제였다. 그래도 어찌저찌 마무리가 되서 정말 다행이다..

 

현재 이 알고리즘은 여러가지 기능을 다 구현하였다.

Lane Detection + Esitmate Distance between Vehicle and Object + Calculate TTC + Estimate Collision Point

이를 모두 합친 알고리즘을 현재 구현해놓은 상태이다. 또한 이를 ROS melodic 환경에서 동작할 수 있게 만들었다.

 

다음엔 트램환경이 아닌 좀 더 일반적인 자율주행 자동차의 환경에서 동작할 수 있도록 많은 것을 수정해야할듯 하다.

 

지금까지 본저자가 리뷰하는 찐 논문 리뷰였습니다. 감사합니다. 코드에 대한 힌트는 댓글 남겨주시면 힌트 드릴게요.

 

반응형

댓글