[테크월드=정환용 기자] 비전 기반의 로보틱스와 드론은 임무를 성공적으로 완수하기 위해 임베디드 비전 애플리케이션에 상당히 많은 부분을 의존하고 있다. 비전 기반 로보틱스와 드론을 위한 임베디드 비전 애플리케이션은 자일링스의 올 프로그래머블(All Programmable) SoC를 통해 구현할 수 있다. 이는 하드웨어 가속 연산을 가능하게 하는 강력한 프로세싱 시스템과 프로그래머블 로직이 단일 디바이스 내에 통합돼 있기 때문이다.

일반적으로 이러한 애플리케이션에 구현되는 몇 가지 알고리즘들이 있는데, 그 중 가장 대표적인 것들이 다음의 3가지다.

▲서라운드 뷰 시스템
차량 주변에 대한 3차원 시각화를 생성해 주변 환경에 대한 이해도를 높여준다. 일반적으로 서라운드 뷰 시스템은 구형 카메라를 사용한다. 서라운드 뷰는 종종 SLAM(Simultaneous Localization and Mapping)과 광학 플로우(Optical Flow)가 요구되는 애플리케이션에 사용된다.
▲파노라마 카메라
주변 환경을 360도 시야각으로 보여주며, 감시 애플리케이션이나 차량의 시각화 분야에 사용된다.
▲이종 센서 융합
저조도 또는 야간 비전의 성능을 높이기 위해 적외선 비주얼과 같이 전자기 스펙트럼의 다른 요소들로 이미지를 융합한다.

 

[그림 1] EM 스펙트럼의 가시 요소와 IR 요소를 결합한 센서 융합 사례.

이런 알고리즘을 구현하는 경우, 렌즈보정·렌즈왜곡 제거, 원근변환, 병행 표면을 이용한 비디오 텍스처링과 같은 몇 가지 공통적인 문제를 해결해야 한다.
또 다른 문제는 최종 이미지를 표현하는 방법이다. 이로 인해 다중 채널 프로세싱 및 다중 채널 동기화 문제를 해결해야 하는데, 모든 카메라가 동일한 프레임을 표시할 수 있어야 한다.

물론 다중 채널 프로세싱 및 동기화 문제는 비전 기반 로보틱스나 드론 애플리케이션에만 국한되는 것은 아니며, 여러 임베디드 비전 애플리케이션에도 공통적으로 해당된다. 또한, 비전 기반 로보틱스나 드론은 객체를 감지하고 구분함으로써 자율 또는 반자동 동작이 가능해야 한다.

IP 활용
이러한 복잡한 이미지 프로세싱 알고리즘을 구현하는 것은 엔지니어링 프로젝트 내에서 매우 중요한 작업이다. 따라서 SoC 내에 이런 알고리즘을 올바르게 구현할 수 있는 전문 기술을 갖춘 엔지니어가 필요하며, 이런 엔지니어는 타깃 아키텍처에 대한 특정 문제를 개발하고 최적화할 수 있어야 한다. 기업에서는 이러한 기술을 소싱하기 위해 정규 엔지니어나 계약직 엔지니어를 고용해야 할 수도 있다. 만약 전문 인력을 소싱하지 않고, 이런 기능을 처음부터 개발한다면 시장 출시시기가 늦어질 수 있다는 점을 감안해야 한다.

전문 공급업체가 개발한 IP를 이용하면, 이런 문제를 해결할 전문 엔지니어를 구할 필요가 없고, 동시에 개발 시간을 단축시켜 보다 빨리 시장에 출시할 수 있다. 또한, 개발 회사는 자사의 임베디드 비전 제품이 시장에서 경쟁우위의 입지를 확보할 수 있도록 부가적인 가치 창출 작업에 집중할 수 있다.

기존 IP 모듈을 활용하면 이미 입증된 기술을 기반으로 하기 때문에, 프로그램의 전반적인 위험요소를 줄일 수 있다. 상용 IP 코어를 프로젝트에 사용하려면, 해당 애플리케이션에 원활하게 통합할 수 있도록 지원 계약도 체결해야 한다. 비바도 디자인 수트(Vivado Design Suite)는 표준으로 여러 IP 모듈을 제공하며, 임베디드 솔루션을 위한 추가적인 첨단 IP는 여러 협력 공급업체들이 상업용으로 공급하고 있다.

이같은 이미지 프로세싱 라이브러리 중 자일론(Xylon)이 제공하는 LogicBRICKS IP 라이브러리가 있다. 이 라이브러리는 비바도 디자인 수트에서 사용할 수 있도록 최적화돼 있다. 이런 IP 모듈을 비바도 디자인에 포함한 다음, 애플리케이션 요건에 따라 사용자가 조정할 수 있다.

LogicBRICKS IP 라이브러리에는 비전 기반 로보틱스나 드론 애플리케이션을 개발하는데 중요한 여러 IP 블록들이 있다.

임베디드 비전 애플리케이션에서 객체를 감지하고 추적하는 기능은, 종종 HOG(Histogram of Oriented Gradients) 기반 분류기를 이용해 수행된다. HOG 분류기는 머신 러닝의 일종인 SVM(Support Vector Machine)을 이용한다. LogicBRICKS 라이브러리에는 LogiHOG 형태로 제공되는 HOG 분류기가 있는데, 이는 최대 4개의 각기 다른 SVM 분류기가 병렬로 여러 객체를 감지할 수 있는 성능을 제공한다. 이같은 SVM은 날씨나 조명과 같은 각기 다른 조건에서도 수행할 수 있도록 트레이닝과 업데이트를 할 수 있다. [그림 2]

 

[그림 2] LogiHOG 분류기의 동작

LogicBRICKS 라이브러리에는 일반적으로 사용되는 다른 여러 IP 코어들이 있으며, 개발을 용이하게 해준다. 여기에는 설계자가 해당 디자인에 구현할 수 있는 여러 이미지 시그널 프로세싱 파이프라인(Image Signal Processing Pipeline)이 포함돼 있다. 이런 이미지 프로세싱 코어는 최대 4K UHD, 60FPS 파이프라인을 생성할 수 있는 완벽한 솔루션을 제공한다. 이같은 파이프라인은 SoC 내에서 카메라 인터페이스와 인터페이싱하며, 여러 다른 카메라 기술을 지원할 수 있다.

개발 플로우는 필요한 동작을 SoC에 구현하는 전통적인 SoC 개발 플로우를 따른다.

LogicBRICKS 라이브러리의 IP 코어는 프로그래머블 로직 패브릭에 삽입돼 필요한 기능에 따라 이미지 프로세싱 파이프라인을 형성한다. 그런 다음 필요에 따라 실시간으로 알고리즘을 미세 조정하기 위해, ARM A9 코어 환경에서 실행되는 애플리케이션 소프트웨어로 API 호출을 사용한다.

많은 애플리케이션에서는 높은 동적 범위의 카메라가 사용된다. 동적 범위는 조도가 넓은 범위에 걸쳐 적용된 이미지를 캡처하는 센서의 기능을 나타내며, 보통 dB 또는 비율로 표시된다. 이미지에는 높은 조도의 영역과 어두운 영역이 동일한 이미지에 모두 포함될 수 있는데, logiHDR 코어는 카메라와 인터페이싱한 다음, 이미지의 최대 디테일을 추출해 이미지의 로컬 영역에서 밝기와 이미지 휘도를 향상시킨다. [그림 3]

 

[그림 3] 자일론 logilSP 파이프라인 비디오의 입력(왼쪽)과 출력 예.

애플리케이션에 특화된 기능 개발 가속
무료 또는 상업적으로 제공되는 IP를 이용해 대부분의 이미지 프로세싱 파이프라인을 구현한 후에는, 애플리케이션에 특화된 기능을 구현해야 하는 과제가 남아 있다. 이같은 기능은 SoC를 이용하면 프로세서나 프로그래머블 로직에서 처리할 수 있다. 자일링스의 개발 툴 ‘SDSoC’를 이용할 경우, 처음에 하이-레벨 언어로 개발한 애플리케이션 디자인 작업을 가속화할 수 있도록 둘 사이의 기능을 원활하게 이동시킬 수 있다.

SDSoC의 기능을 활용할 수 있도록 IP 코어와 함께 기본 이미지 프로세싱 파이프라인을 포함하고 있는 새로운 플랫폼을 정의할 수 있다. 그러면 SDSoC는 사용 가능한 로직과 인터커넥션 리소스를 사용해 디자인 작업을 가속화할 수 있다.

SDSoC에는 설계자가 프로그래머블 로직 내에서 가속화하고자 하는 애플리케이션 개발에 사용할 수 있는 여러 라이브러리가 있으며, 이미지 프로세싱과 관련해서는 HLS를 지원하는 두 가지 주요 라이브러리가 있다.

▲HLS_video 
이 라이브러리는 임베디드 비전 기능과 데이터 구조를 제공한다. 이런 요소는 합성이 가능하다.
▲HLS_OpenCV 
이 라이브러리는 사전 컴파일된 OpenCV 기능과 함께 IP 모듈과의 인터페이스에 필요한 특수 지원 기능이 포함돼 있다. 이 라이브러리는 테스트 벤치에 사용하기 위한 것이며, 합성은 가능하지 않다.

대부분의 알고리즘은 OpenCV처럼 오픈소스 이미지 프로세싱 프레임워크를 사용해 개발된다. 따라서 설계자는 SDSoC를 사용해 가속을 위한 시스템을 개발할 때 이와 유사한 프레임워크를 사용하고자 할 것이다. 이를 위해 HLS_OpenCV 라이브러리는 SDSoC 개발 툴에서 함께 구동할 수 있고, 가속 기능과의 인터페이스에 필요한 기능을 제공한다.

가장 기본적인 OpenCV 요소는 X, Y 이미지 크기와 픽셀 정보를 정의하는 cv::mat 클래스다. 예를 들어 부호가 있거나 없는 경우, 픽셀 내의 비트 수와 픽셀을 구성하는 채널의 수를 나타낸다. 이 클래스는 OpenCV를 사용할 때 이미지를 저장·처리하는 기본적인 방법이다.

HLS 라이브러리에는 유사한 구조의 hls::mat가 있다. 이 라이브러리는 이미지 프로세싱 파이프라인을 생성할 때 표준 인터페이스를 사용했기 때문에 hls::mat 클래스를 HLS 스트리밍으로 변환할 수 있는 많은 함수를 제공한다. cv::mat와 hls::mat 클래스 간의 한 가지 중요한 차이점은 hls::mat 클래스는 프로그래머블 로직 아키텍처에 적합한 픽셀 스트림으로 정의돼 있다는 점이다. 이는 메모리에 매핑된 cv::mat 클래스와 다른 점이다. 스트리밍과 메모리 매핑 구현간의 차이점은 hls::mat 클래스를 사용한 픽셀은 랜덤 액세스를 하지 않는다는 것이다.

이를 통해 듀얼 ARM A9 코어를 이용해 프로세서 내에 애플리케이션을 초기에 개발, 알고리즘 기능을 유지할 수 있다. 이 기능이 요구되면 프로그래머블 로직의 알고리즘을 가속화할 수 있다. 설계자는 가속 성능을 세밀하게 조정하기 위해 AXI 성능 모니터링이나 트레이싱과 같은 SDSoC의 기능을 이용할 수 있다.


결론
비전 기반 로보틱스와 드론 기술은 환경을 이해하고, 결과 정보를 기반으로 의사 결정을 내릴 수 있는 기능을 제공하기 위해 임베디드 비전 알고리즘 개발에 있어 많은 과제를 안고 있다. 이런 이미지 프로세싱 시스템을 개발하기 위해 설계자는 IP 코어가 제공하는 기능을 활용하거나, SDSoC와 같은 시스템 레벨 개발 툴을 활용해 필요한 최종 하드웨어 가속 기능을 구현하는데 도움을 얻을 수 있다.

 

글: 아론 버만(Aaron Behman) 자일링스 비디오 및 비전 부문 기업전략 및 마케팅 디렉터

이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지