자율주행에서 논의가 많이 되는 보행자 탐지. 최신 연구를 찾다 LSFM 기법을 알게 됐고 어떤 모델이 사용되었는지를 중심으로 살펴보자.
전반적으로 요약하면,
(요약만 보고 뭔 내용인지 이해했다면 밑에 내용은 읽을 필요 없고, 만약 이해가 안 됐다면 스크롤을 내리길 바란다.)
1. 현재 자율주행 시스템에서
- 보행자 감지기는 추론 시간이 길고,
- 작은 보행자나 가려진 보행자에 대한 성능이 저조한 두 가지 문제 존재
2. LSFM(Localized Semantic Feature Mixers)은 새로운 앵커 프리 보행자 감지 아키텍처.
- 계산 비용이 많이 드는 특징 피라미드 네트워크(FPN) 대신 Super Pixel Pyramid Pooling 모듈을 사용
- MLPMixer 기반의 Dense Focal Detection Network를 경량 감지 헤드로 사용 -> 계산 비용과 추론 시간 줄임
3. 자동차가 주행중인 상황을 고려해, 데이터 증강 시 믹스업 증강 기법 적용 -> 작은 보행자 or 가려진 보행자 감지 성능 개선
4. 자주 쓰이는 보행자 데이터 셋(Caltech, City Persons, Euro City Persons, TJU-Traffic-Pedestrian)에서 최첨단 성능 기록, 추론 시간 평균 55% 단축. 아래는 성능을 비교한 그래프
이다.
이해가 안 되지 않았는가? 이제 논문 내용을 차례대로 짚어보자.
연구 배경
보행자 감지가 자율주행에서 중요하다는 것은 누구나 잘 알 것. 그로 인해 최근 연구들은 보행자 감지기의 정확도 향상에 집중하고 있지만, 그로 인해 발생한는 계산 비용이 간과되고 있다. 또한 심한 가려짐과 작은 보행자에 대한 성능 향상 여지가 여전히 남아 있고, 이로 인해 자율주행의 상용화가 점점 늦어지고 있다는 것.
그래서 이 사람들이 뭘 했을까? 바로 Multi Layer Perceptron (MLP) 기반의 넥(neck)과 패치드 MLP 믹서 기반의 객체 감지 헤드를 포함하는 새로운 보행자 감지 네트워크를 제안한 것.
.....?
무슨 말이지?
다시 차근차근 따라가 보자. 이해가 안 되니 그림으로 살펴보자.
그러니까 결론부터 말하면, MLPMixers를 기반으로 한 보행자 감지 모델을 새롭게 개발했다는 것이고, 앞부분에서 pixel pyrimid를 3번 써 SP3, 뒷부분은 SP3에서 출력된 특징을 바탕으로 보행자를 감지하는 DFDN이라는 모델을 합쳤다는 것이다.
그럼 여기서 질문. MLPMixer가 뭘까?
구글 AI 부서에서 일하고 있는 툸티킨 아저씨는 21년도에 'MLP-Mixer: An all-MLP Architecture for Vision'이라는 논문 하나를 발표했다. 이것의 내용이 무엇이냐면, 기존 CNN 방식과 달리, 이미지 처리에서 비컨볼루션 방식, 즉 MLP만 가지고 분류하자는 거다.
오?
이게 왜 신박하냐면, 기존 이미지 처리 역사를 살펴보면 이해가 간다. 2012년 AlexNet이 등장한 이후, 대부분의 CV 태스크 해결 모델은 CNN이었다. 이후 20년도가 돼서야 ViT가 등장하며 attention mechanism을 가지고 이미지 분류를 하는 것이 대세였고.
그런데 문제는, 이러한 애들은 parameter 수가 너무 많아서 GPU 메모리, 저장장치 용량을 요구했다는 것. 근데 우리가 항상 엔비디아 GPU를 가지고 다닐 수 없지 않은가. 당장 나는 코랩도 비싸서 못 쓰고 있는데.
그러니 툸티킨 아저씨를 포함한 몇 명이 '그냥 MLP만 사용해 볼까?' 해서 제안을 했는데, 이게 된 거다. 역시 기본이 가장 중요하다는 걸 오늘도 느낀다. 그림으로 한번 봐보자.
오. 간단하다. 그러니까 결국, 이미지를 저렇게 n등분해서 각각 처리하고 분류를 하는 것이다. 여기서 집중해야 할 사항이, Per-patch full~ 이 부분이다. 저기에 n등분한 이미지를 넣고, n층으로 구성된 Mixer Layer에 넣는다. 이게 바로 저자가 제안한 핵심요소. 이 layer 당연히 MLP로 이루어졌겠지? 그러니 논문 이름이 MLP-MIXer이고. (근데 뭐 딱히 CNN이랑 구조 자체는 크게 차이가 없어 보이긴 한다.)
어쨌든, 이 구조에서 깊은 감명을 받은 우리 LSFM 저자 아저씨들은 이 구조를 적극 이용하기로 한다. 모델의 앞부분인 SP3만 자세히 살펴보자.
MLP-Mixer는 이해가 됬는가? 자 그렇다면 이제 FPN을 알아야 한다. 운이 좋게도 내가 전 포스팅에 FPN 관련 정보를 써놓았다. 만약 궁금하다면 이전 포스팅을 참고하길 바란다. 어느 정도 안다 하고 설명을 하겠다.
이 똑똑한 아저씨들이 제시한 모델의 이름은 SP3로, Super Pixel, 즉, 다양한 해상도의 특징 맵에서 나온 패치들을 결합해 하나의 큰 특징 벡터로 변환하는 것을 의미한다.
그러니까 SP3는 기존 FPN이 사용하는 업스케일링, 다운스케일링 같은 복잡한 연산을 줄이고, ML를 직접 사용해 특징 추출을 하는 것이다. 원래는 각 특징 맵들이 고유한 해상도를 가져 동일한 크기로 맞춰주는 연산이 필요한데, SP3는 이걸 패치로 나누어 처리한다는 것이다. 여기서 정보를 추출하고 결합해서 1D 벡터로 변환. 그리고 얘를 결합해 Super Pixel을 만든다.
이렇게 만들어진 Super Pixel들이 다시 결합되어 하나의 특징 맵으로 만들어지고, 각 패치가 공간적으로 어디에 위치하는지, 어떤 정보가 중요한지 MLP를 통해 학습한다.
일단 여기서 SP3는 끝.
그럼 여기서 나온 정보를 아래 사진에 나오는 DFDN이 받는다. 여기서 MLP-Mixer가 쓰이는 거다.
DFDN은 크게 세 가지 예측을 수행하는 모듈로 구성된다. Center, Scale, Offset. 각각 보행자의 중심, 크기, 그리고 정확한 위치 조정을 위한 오프셋을 예측하는 역할을 한다.
이 세 가지 예측을 수행하기 위해 MLP-Mixer가 사용된다. 이 친구들이 채널 차원과 토큰 차원을 번갈아 처리하면서 이미지의 각 위치에서 중심, 크기 오프셋을 예측하는데, 채널을 처리하는 것은 각 픽셀 또는 특징 벡터에 대해 각 특징 맵의 채널들이 처리된다는 것이고, 예를 들어 색상, 텍스처, 경계 정보? 뭐 이런 것들이 있을 거다. 이런 채널 간 상호작용을 하며 정보를 조합해 보행자를 감지할지 학습할 것이고,
토큰, 그러니까 이미지에서 작은 부분을 나타내는 하나의 단위(256x256 크기의 이미지를 16x16 크기의 패치로 나누면, 총 16개의 토큰)에서는 무슨 일이 일어나냐? 한번 봐 보자. 이게 채널보다 조금 어렵다.
먼저, 토큰은 이미지의 특정 위치에서 발생하는 공간적 정보를 포함하며, 해당 위치의 객체, 배경, 패턴 등의 정보를 담고 있다. MLP Mixer는 채널 차원과 토큰 차원을 번갈아가며 처리하는 구조를 가지고 있는데, 토큰 차원은 이미지에서 공간적 정보(Spatial Information)를 처리하는 차원인 것이다. 그러니까 이미지에서 객체가 어디에 위치해 있는지, 아니면 어떤 패턴이 중요한지를 파악하는 것이다.
오...결국 보행자의 위치와 형태를 인식하는 데 있어서 중요하다는 것이다.
이제 SP3와 DFDN이 좀 이해가 됐는지?
그러면 백본 네트워크를 살펴보자. 어쨌든 SP3가 이미지를 처리하려면 특징을 추출해야 하는데, 이걸 담당하는 것이 ConvMLP다. CNN의 장점과 MLP의 효율성을 결합한 것. 두 개를 함께 써서 그런지 공간적 정보를 효과적으로 처리하면서도 계산 효율성을 높인다.
이제 모델 구조를 한 줄로 정리할 수 있다.
이 아저씨들이 제안한 LSFM은,
1. 백본 네트워크 ConvMLP로 이미지의 다양한 해상도에서 특징을 추출하고,
2. SP3가 ConvMLP로부터 받은 다양한 해상도의 특징 맵을 패치로 나누고, 이를 결합하여 효율적으로 처리,
3. DFDN이 SP3가 전해준 고수준 특징을 사용하여 보행자의 중심, 크기, 오프셋을 예측!
이해 끝! (추가로 다른 백본으로 HRNet도 사용할 수 있는데, 연산 비용이 더 크고 무거워서 ConvMLP는 자원 제한적인 환경에서 사용하기 적합하다 이해하면 된다.)
성능을 한번 봐볼까??
LSFM과 F2DNet이라는 기존 보행자 감지 모델을 비교한 것인데, 확실히 LSFM이 false negatives의 비율이 낮은 것을 볼 수 있다. 여기서 false negative가 뭐였지? 하는 사람을 위해,
즉, 보행자가 있는데! 감지하지 못한 경우를 우린 False Negative라고 한다. 자율주행 상황에서 보행자가 있는데 감지하지 못하면 소비자들이 믿고 사겠는가? False Negative를 줄이는 게 무엇보다 중요한 상황에서 LSFM이 훌륭하게 해내고 있는 것을 보여준다. 여기 다른 모델과의 객관적 수치 비교도 존재한다.
결론:
지금까지 보행자 감지에서 MLP를 기반으로 이루어진 보행자 감지 모델, LSFN을 알아봤다. 마지막으로 정리해보자면,
1. MLPMixers와 Fully Connected Layers를 사용
2. 제안된 모델은 모든 데이터셋에서 기존 최첨단 보행자 감지기를 능가, 보행자 감지 역사상 처음으로 인간 기준 성능을 뛰어넘음
3. 주로 주간 장면에서의 보행자 감지에 중점, 야간 장면에서도 적용 가능한지 연구할 필요 있음
정도 있겠다. 한번 구글에 검색해서 전체 논문을 읽어봐도 좋을 듯하다.
'딥러닝' 카테고리의 다른 글
[프로젝트] 관중석에서 아시아인을 찾아보자! (3) | 2024.10.15 |
---|---|
[논문리뷰] 5% 아쉬운 무단횡단 감지 딥러닝. YOLOv4+DeepSORT를 중심으로 (0) | 2024.09.10 |
MoveNet으로 수집한 데이터를 seq데이터로 변환하자 (0) | 2024.08.30 |
Mediapipe는 다중인식 되지 않는다. MoveNet을 이용해보자 (0) | 2024.08.23 |
OpenPose로 사용자 동작 인식하기는 실패다. Mediapipe를 이용해보자. (0) | 2024.08.11 |