Vision Platform for Mobile Intelligent Robot Based on 81.6 GOPS Object Recognition Processor
칩 설계에 관한 내용은 관심 밖이라 SIFT의 특성 파악을 위한 내용만 옮겨둔다.
1. Introduction
최근 지능형 로봇에서의 자동 네비게이션 시스템은 필수적인 기능이 되어버렸습니다. 이는 Simultaneous Localization and Mapping (SLAM) 알고리즘 기반으로 구현되곤 하는데 SLAM에서는 SIFT 기반의 물체 검출 알고리즘이 널리 쓰이고 있습니다. SIFT 알고리즘은 큰 계산량을 필요로 합니다.
하지만 실제 차량에 들어가는 프로세서는 한정된 파워를 갖기 때문에 SIFT 계산이 실시간으로 가능하면서도 적은 전력을 소모하는 프로세서가 필요하게 되었습니다. 이는 곧 하나의 칩으로 성능을 얻으면서도 전력의 효율적인 특징을 가지는 프로세서가 필요하게 된 것입니다.
2. Target Application : SIFT
SIFT는 크게 두가지 단계로 나뉘어 집니다. 하나는 키포인트를 찾는 것과, 둘째로 디스크립터 벡터의 생성입니다. 키 포인트의 경우 여러 파라미터에 대하여 가우시안 필터링이 반복적으로 이루어지며, 이들을 서로 빼는 Difference of Gaussian (DOG) 계산. 그리고 그 결과에서의 에지를 찾는 과정이 있습니다. 이어서 그 중에서 local maximum을 찾는 과정으로 이루어져 이씁니다.
디스크립터는, 각 키포인트 당 N * N 픽셀을 샘플링하여 그래디언트를 계산하는 것입니다. 이 때, N은 DoG의 스케일에 따라 결정되며, 그래디언트의 magnitude와 orientation을 이용한 히스토그램을 참조하여 벡터를 만들게 됩니다.
SIFT의 큰 계산은 곧 병렬처리를 가져오게 됩니다. 먼저 데이터 병렬성으로 가우시안 필터링 태스크가 있습니다. 이는 각 픽셀에 대하여 같은 동작을 수행하게 됩니다. 반면 태스크 레벨의 병렬성은 디스크립터 벡터의 생성입니다.
따라서 태스크의 병렬성은 multiple Processing Elements (PEs)를, 데이터 병렬성에 대해서는 SIMD 명령어를 사용하도록 설계하였습니다.
또한 데이터 전송방법에 대한 연구도 진행되었는데, 가우시안 필터링이나 DoG, local maximum의 경우 그 전단계의 데이터가 현재 단계에서 처리된 뒤 나중 단계로 전송되고 됩니다. 따라서 태스크가 파이프라인되어 실행되도록 태스크를 매핑하였습니다.
또 다른 한가지는, 가우시안 필터링이나 local maximum 검색 시, 대상 위치 주변 픽셀의 데이터를 가져오기 때문에 특별히 설계된 메모리를 사용하였습니다.
변경된 부분을 요약하면 다음과 같습니다.
- 태스크 병렬성을 위한 멀티 프로세서 아키텍쳐
- 데이터 병렬성을 위한 SIMD 명령어
- 1-to-N, M-to-1 데이터 전송을 위한 효과적인 연결 방법
- local maximum search를 위한 특별한 메모리