May 8, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[8호] 위드로봇 무료강좌 기술자료 – 4차

08SCwith006

4차 릴레이 무료강좌 기술자료

임베디드비전 시스템 소개

 

글 | 위드로봇(주) 김도윤 대표

 

시작글

위드로봇 연구실 확장 이전 기념 릴레이 무료 강좌 4차 교육이 2011년 1월 8일 토요일에 성수동 위드로봇 본사에서 진행 되었습니다. 임베디드 비전 시스템에 대한 주제로 진행된 이번 강좌의 강의 내용을 참석하지 못한 디바이스마트 매거진 구독자들을 위해 간단히  소개하고자 합니다.

서 론

비전 시스템(vision system)은 카메라를 통해 얻은 영상에서부터 얻고자 하는 정보를 처리하는 장치로 카메라 – 이미지 그래버 – PC 형태로 구성되는 것이 일반적이다. 이때 PC의 사양은 통상적으로 해당 시점에서 가장 고성능의 부품들로 구성된다. 이는 영상 데이터가 현재 기술 대비 아직도 실시간으로 처리하기에 힘들고, 많은 비전 어플리케이션들이 하드 데드라인(Hard deadline)을 가지는 실시간성을 요구하기 때문이다. 위드로봇에서 수행한 많은 영상 처리 과제들도 쿼드 코어를 가지는 i7 프로세서를 사용하는 PC 1대로도 실시간 처리가 안되어 PC 3대를 기가비트 이더넷으로 연결한 구조로 구성하여 실시간성을 맞추는 시스템을 만들곤 한다.
비즈니스 관점에서는 시스템의 신뢰성을 높이고 시스템을 구성하는 요소를 줄여 성능을 높이고 생산 단가를 줄이는 것이 중요하다. 위 세 가지 요소(카메라, 이미지 그래버, PC)들은 각각 다음과 같이 발전하고 있다.

●카메라: CCD 이미지 센서에 비해 CMOS 이미지 센서가 대량 생산에 유리하기에 기술 개발은 CMOS 이미지 센서쪽에 편중되어 진행되고 있다. 이 덕분에 고해상도, 고속 CMOS 이미지 센서가 지속적으로 출시되고 있으며, CCD 센서에 비해 단점으로 여겨지는 dark current, 저조도에서의 응답 특성이 점차 개선되어 CCD 이미지 센서를 맹렬히 추격하고 있다. 특히 최근에 많은 관심을 끌고 있는 wide dynamic range 카메라는 명암 차이가 심한 지역에서도 어두운 부분과 밝은 부분의 디테일을 잘 표현하기에 영상 처리 센서를 제조하는 제조사들이 공을 들여 개발을 거듭하고 있다. 아울러 적정 해상도, 응답 특성을 기준으로 놓고 보면, CMOS 센서 기술이 발전하면서 점점 더 작은 크기의 이미지 센서 크기로도 담당할 수 있게 되어 가격이 저렴해지는 효과가 있다. 최근 640 x 480 VGA 급 CMOS 이미지 센서는 $2까지 가격이 떨어졌고, 렌즈까지 포함해도 $4 수준인 경우가 많다. 기존 CCTV용 카메라 셋트를 구성하려면 $100이 넘는데, CMOS 이미지 센서로 영상을 취득하는 부분을 구성하면 1/20 가격으로 카메라를 구성할 수 있게 된 것이다.

● 이미지 그래버는 통상적으로 아날로그 신호로 전달되는 영상 신호를 디지털 신호로 바꾸기 위해 존재했었는데 앞서 소개한 CMOS 이미지 센서들은 디지털 신호를 바로 출력하여 마이크로 프로세서에 연결할 수 있는 인터페이스를 내장하고 있다. ITU BT.601, 656과 같은 규약이 그것이다. 주로 8비트 내지 10비트의 데이터 라인과 함께 수평 라인, 수직 라인을 표시하는 동기 신호 및 각 픽셀의 전송을 알리는 픽셀 클럭 신호를 가지고 있다. 최근 출시되는 범용 마이크로 프로세서에서는 이러한 BT.601/656 포맷을 지원하는 인터페이스 블록을 내장하고 있는 경우도 있어 이러한 마이크로 프로세서를 사용하면 CMOS 이미지 센서 출력을 바로 마이크로 프로세서에 연결할 수 있다. BT.601/656 인터페이스는 PCB 상에서 영상을 전달하거나 근거리(10~20cm 이내)내에서 영상을 전송하는 목적으로 만들어진 인터페이스이므로 이 보다 더 긴 거리로 영상을 전송하려면 별도의 인터페이스가 필요하다. 최근에 널리 사용되는 기술은 Camera link, 기가비트 이더넷, USB 3.0을 들 수 있다. 이 중에서 가장 최근에 출시된 USB 3.0은 5Gbit가 넘는 넓은 대역폭에 기존 USB 2.0과의 하위 호환성을 무기로 빠른 속도로 영상 전송 인터페이스 시장을 잠식할 것으로 예상된다.

● PC는 본질적으로 영상 처리 알고리즘을 동작시키기 위한 장치이므로 성능만 따라준다면 전통적인 임베디드 프로세서로 대치 가능하다. 아쉽게도 현존하는 기술로는 PC가 가장 손쉽게 접할 수 있는 고성능 프로세서를 장착한 시스템이기에 PC를 능가하는 임베디드 프로세서를 접하기는 어렵다. 하지만 특정 영상 처리 알고리즘을 소프트웨어가 아닌 하드웨어를 통해 구현하고, 이를 하나의 칩으로 만든 형태로 시스템을 구성하면 PC에 비해 낮은 클록으로 동작하는 임베디드 프로세서에서도 실시간성을 확보할 수 있어 굳이 PC를 사용하지 않더라도 비전 시스템을 구성할 수 있게 된다. 대표적인 예로 차량에 장착하여 전방의 상황을 실시간으로 SD 카드에 저장하는 차량용 블랙박스를 들 수 있다. 640×480 해상도의 컬러 이미지를 실시간으로 압축하여 저장하는 연산량은 저사양 PC에서도 버거울 정도로 많은 컴퓨팅 파워를 요구한다. 이를 현장에서는 MPEG2 또는 H.264와 같은 특정 압축 알고리즘을 전담하는 임베디드 프로세서와 인터페이스를 담당하는 임베디드 프로세서 두 개를 하나의 칩으로 만들어 해결하였다. 이러한 프로세서는 설계는 어렵지만 일단 설계가 완성되면 대량 생산이 가능해지기 때문에 생산 원가를 대폭 줄일 수 있다. 통상적으로 이러한 프로세서는 $5 이내에서 공급되기에 $150이 넘는 PC 세트에 비해 가격 우월성, 저전력, 시스템 크기 등에서 큰 장점을 가진다.

그림1. ITU BT 601 인터페이스 타이밍

그림1. ITU BT 601 인터페이스 타이밍

위에서 살펴본 바와 같이 이미지 센서 기술 발전으로 인한 영상 장치 가격의 하락, 별도의 이미지 그래버 없이 영상을 바로 마이크로 프로세서로 전달할 수 있는 인터페이스 등장, 그리고 마이크로 프로세서의 성능 개선을 통한 컴퓨팅 능력의 향상은 영상 처리 기술이 공장 자동화와 같이 한정된 산업 분야를 벗어나 모바일 기기, 차량, 게임, 서비스 로봇, 사용자 인터페이스 등과 같이 실생활 곳곳에서 다양한 형태로 응용되는 기반을 마련하였다[1]. 이처럼 영상 처리 시스템의 기반이 기존 고성능, 고가의 컴퓨터에서 휴대폰이나 디지털 카메라와 같은 저가형 임베디드 시스템으로 전환되면서 임베디드 비전 시스템, 임베디드 컴퓨터 비전이라는 개념이 등장하기 시작하였고, 관련 학회에서도 이러한 용어를 사용하기 시작하였다[2][3].

이러한 새로운 개념이 등장하면 해외에서는 뜻을 같이 하는 단체를 결정하여 주도권을 쥐고 많은 부분의 표준을 선도한다. 이런 부분은 국내 연구진, 산업체들이 항상 한 발 늦어 아쉬운 부분인데 임베디드 비전 분야도 얼마전 15개의 해외 기업 주도로 임베디드 비전 연합(Embedded Vision Alliance, www.embedded-vision.com)을 출범하였다. 참여하고 있는 기업을 살펴 보면 BDTI, 자일링스, 아날로그 디바이스, 앱티컬(Aptical), 애브넷 일렉트로닉스 마케팅, CEVA, 코그니뷰, 프리스케일, 매스웍스, 내쇼날 인스트루먼트(NI), 엔비디아(NVIDIA), 텍사스 인스트루먼트(TI), 도쿄 일렉트론 디바이스, Ximea 그리고 XMOS 등이다. 아직은 초기 단계여서 홈페이지에서 많은 정보를 제공하고 있지는 않지만 쟁쟁한 업체들이 참여한 만큼 해당 분야에서 큰 영향력을 미칠 것으로 예상된다.

임베디드 비전 분야가 등장하면서 이전 영상 처리 시스템에서는 별로 고려하지 않던 제약 사항들이 새롭게 등장하는데, 대표적인 것이 성능, 가격, 크기 등이다. 이 중 이번 원고에서는 임베디드 비전 시스템의 성능에 대해 살펴보도록 하겠다.

임베디드 비전 시스템의 성능 개선 방향

반복해서 강조하지만 영상정보는 한 장의 이미지만 해도 수백 KB가 넘는 데이터를 가지고 있어 연산량은 매우 방대하다. 따라서 연산 속도가 PC에 비해 절대적으로 느린 임베디드 프로세서에서는 성능 저하가 발생한다. 임베디드 환경이 가지는 여러 제약사향을 만족시키면서 실시간성을 확보하기 위해 전용/범용 하드웨어 구성 및 소프트웨어 프로그램에 대한 연구가 진행되고 있다. DSP(Digital Signal Processor)를 내장하여 코프로세서(Co-processor)처럼 활용하는 방법이 있으며, DSP에 전통적으로 강점을 지녔던 TI(Texas Instrument)가 많은 시도를 하고 있다. TI의 Davinci 제품군은 범용 프로세서로 ARM Cortex-A8을 사용하고, 전용 프로세서로 TI C6000 계열 DSP를 내장한 원칩 임베디드 프로세서이다.

외부에서 봤을 때에는 ARM 프로세서처럼 보이게 되어 기존 ARM 시스템과 호환성을 높였고 내부적으로는 DSP가 코프로세서처럼 동작하게 하여 다양한 영상 처리를 두 개의 프로세서를 통해 처리가 가능하도록 구성한 시스템이다. 두 개의 프로세서 프로그래밍을 돕기 위해 SYS/LINK라는 기능이 지원되며 이를 이용하면 ARM쪽 프로세스와 DSP쪽 프로세스간의 프로세스 통신 및 데이터 교환이 가능하다. 2011년 기준으로 가장 최신 Davinci 제품군은 DM814x 시리즈이며, Cortex-A8 667MHz와 C674x DSP가 내장되어 있다. TI에서 전략적으로 임베디드 비전 분야 시장을 보고 출시한 제품이며 2012년 상반기에 출시될 예정이다. 현재 엔지니어링 샘플이 출시되어 있다.

TI사의 DM814x 블록 다이어그램

TI사의 DM814x 블록 다이어그램

또 다른 접근 방법은 FPGA(Field-programmable Gate Array)를 이용하는 것이다. FPGA 단어 자체가 낯선 분들을 위해 간단히 소개하면 하드웨어 기술 언어(HDL)을 이용하여 수행하고자 하는 연산을 하드웨어 로직으로 구성할 수 있는 디바이스이다. 통상적으로 ASIC으로 가기 위한 전단계로 많이 사용되지만 영상 처리 알고리즘에 최적화된 하드웨어를 빠르게 구현할 수 있다는 점에서 꾸준히 영상 처리 전문가들에게 관심을 받아왔다. FPGA를 이용하여 영상 처리 알고리즘을 구현하면 비종속적인 연산을 동시에 수행할 수 있어 병렬 처리가 가능해진다.

이는 전통적인 범용 프로세서에서 for loop를 돌릴 경우 파이프 라인 처리 속도 이상은 기대할 수 없는 반면, 극단적인 예를 들다면, for loop문이 필요 없이 한 번에 연산을 처리할 수 있다는 이야기가 된다. 특히 특정 비전 알고리즘은 FPGA와 궁합이 매우 잘 맞는다. Optical flow, 얼굴 검출 등은 연산의 구조가 서로 관련성이 적고, 여러 영상 화소 데이터값은 동시 참조가 빈번하여 FPGA 특성을 잘 활용하면 범용 프로세서에서 처리한 것에 비해 대폭적인 성능 향상을 기대할 수 있는 분야이다. 실제로 이와 같은 특징을 잘 활용하여 얼굴 인식 분야에서는 얼굴 인식 알고리즘을 FPGA 또는 ASIC까지 진행하여 원칩으로 나온 제품들이 많이 있다. 이러한 전용 칩은 동시 연산이 가능하기에 VGA 영상을 초당 300장 이상 처리할 수 있는 제품들도 있어 동적 응답 특성이 중요한 응용 분야에서 널리 활용될 것으로 기대된다.

앞서 언급한 ARM+DSP 조합이 범용 프로세서 두 개를 구성하고 소프트웨어를 잘 구성하여 임베디드 비전 시스템의 성능 향상을 꾀하는 방법이라면 범용 프로세서 + FPGA 조합은 하드웨어 구성으로 성능 향상을 꾀하는 방법이다. 후자 방식이 시스템 크기도 커지고 소비 전력도 상대적으로 많이 소비되며 VHDL 또는 Verilog로 추가 코딩을 해야 하기 때문에 디버깅이 어렵다는 단점이 있다. 하지만 시스템의 보완이 상대적으로 우월하며 실시간 측면에서는 훨씬 이점이 있기에 주어진 조건에 맞춰 개발자들은 적절한 방법을 선택하여 개발하고 있다.

마지막으로 시도하는 방식은 GPU(Graphics Processor Unit)을 이용하는 것이다. GPU는 원래 모니터에 2D/3D 그래픽을 출력하는데 있어 빠른 처리를 위해 매트릭스 연산을 빨리 수행할 수 있도록 특화된 프로세서이다. 부동 소수점의 병렬 처리 기능이 강화되어 있으며 하드웨어 구조가 범용 프로세서에 비해 매우 단순하여 집적도를 늘리기 쉽다. 그 결과 범용 프로세서의 집적도를 넘어서서 연산 성능으로만 보면 GPU가 CPU를 능가하게 되었다. 이런 기능을 그래픽 연산뿐만 아니라 범용 연산에도 처리할 수 있도록 하는 GPGPU(General-Purpose computing on Graphics Processor Unit)가 도입되면서 최근에는 슈퍼 컴퓨터들이 GPU로 만들어지고 있다. 앞서 소개한 임베디드 비전 얼라이언스 참여 기업 목록을 보면 그래픽 카드 칩셋 제조사로 유명한 엔비디아가 참여하고 있는 것을 확인할 수 있다. 이는 GPU의 임베디드 비전 분야 활용을 보여주는 단적인 예이다. 엔비디아는 CUDA(Compute Unified Device Architecture)라는 하드웨어 코어 및 프로그래밍 방법론을 제공하고 있다. CUDA 코어에는 매 클록 당 부동 소수점 연산이 가능한데 GF100 그래픽 카드의 경우 이러한 CUDA 코어를 512개 가지고 있다. 추가로 스트리밍 멀티 프로세서(SM)을 16개, SM 1개당 4개의 특수 기능 유닛(SFU)를 가지고 있어 범용 프로세서 대비 30배 이상 빠른 연산을 수행할 수 있다. 실제로 위드로봇에서는 CPU에서 동작하던 알고리즘을 GPU로 이식하는 과제를 수행하였는데 인텔 CPU 대비 38배 빠르게 수행할 수 있는 결과를 얻었었다.

그림3. CUDA 코어의 내부 구조

그림3. CUDA 코어의 내부 구조

문제는 내부 캐시 메모리가 한정적이어서 모든 이미지를 GPU가 접근 가능한 영역에 올릴 수 없다는 것이 단점이다. 따라서 메모리 억세스를 최소화하면서 해당 알고리즘을 구현할 수 있도록 변경해야 하는데 이 부분이 GPU 프로그램의 핵심이 된다.
이와 같은 GPU 장점으로 임베디드 프로세서에 GPU를 이식하는 시도가 계속되고 있으며, 첫 번째 제품이 최근 스마트 폰에 도입되어 선전하고 있는 테그라 프로세서이다. 올해 시제품이 출시될 것으로 보이는 테그라3의 경우 쿼드 코어 프로세서 + 듀얼 GPU 기반으로 출시가 된다면 임베디드 비전 분야에서는 가장 화려한 스펙을 가진 디바이스가 될 것으로 예상된다.

그림4. CUDA 코어의 내부 구조

그림4. CUDA 코어의 내부 구조

핵심은 무엇인가?

앞서 소개한 내용 구성 요소 모두가 중요하긴 하다. 하지만 최근 프로세서의 패키징이 작아지고 AP(application processor) 공급이 대규모 설계 쪽으로 치중되는 현상이 심해지면서 아마추어들이 취미 삼아 하드웨어를 만들기에는 점점 어려워지고 있다. 이는 소규모 회사에게도 마찬가지여서 Davinci 시스템이건, FPGA 기반 시스템이건, Tegra3 GPU 기반의 시스템이건 프로젝트를 가동하기가 매우 부담스러워졌다. 이러다 보니 해당 프로세서를 조그마한 모듈로 만들고 이를 대량 생산하여 공급하는 업체들이 자리 잡을 시장이 형성되고 있다. 이 이야기는 임베디드 비전 시스템을 구성하는데 있어 하드웨어는 굳이 자체적으로 제작하지 않아도 시장에서 구할 수 있는 분위기가 조성되고 있다는 뜻이다.

반면 소프트웨어는 조금 사정이 다르다. 시중에 나와있는 상용 영상처리 라이브러리는 모두 PC 기반이며, 임베디드용은 거의 찾기가 어렵다. 그나마 컴퓨터 비전 연구자들이 모여 공개 소프트웨어로 진행한 OpenCV가 임베디드 비전 분야에서는 대안책처럼 여겨지고 있다.

주어진 환경에서 목적하는 작업을 수행하는 알고리즘은 매번 프로젝트마다 달라지고, 또한 프로젝트마다 주어진 환경이 달라지기에 기존에 사용했던 알고리즘을 그대로 사용할 가능성은 희박하다. 이러한 분위기에서는 환경에 알맞게 변화하는 카멜레온처럼 알고리즘을 주어진 환경 및 하드웨어에 최적화하는 기술을 핵심이 된다. 이를 위해서는 해당 알고리즘의 기본 원리에서부터 구현까지 온전히 다 알고 있어야 한다. 최근 스마트 폰 보급이 늘어나면서 스마트 폰에서 다양한 영상 처리를 하려는 시도가 늘어나고 있다. 이 역시 임베디드 비전 분야라고 볼 수 있는데, 이 분야의 개발자들과 이야기를 하다 보면 “나는 비전 전문가가 아니라서… 알고리즘에는 관심 없고 일단 함수 레벨에서 가져다 쓰면 되지”라는 이야기를 종종 듣곤 한다.

예를 들면 2D 바코드로 유명한 QR code는 최근 보급이 많이 되어 스마트 폰에서 다양한 어플리케이션들이 만들어 지고 있는데 그 수 많은 어플리케이션들이 단 2종류의 QR 코드 디코더를 쓰고 있다. 스마트 폰 어플리케이션 개발자가 수 만명이라면 이러한 임베디드 비전 알고리즘을 구현할 수 있는 개발자는 수 십명 수준이라는 것이다. 어느 쪽이 개발자로서 수명이 길고 대접을 받을 수 있을까?

항상 핵심은 단순하고 간단하다. 가장 밑바탕이 되는, 그리고 가장 어려워 보이는 것이 핵심이다. 그리고 그 핵심이 가장 오래 간다. 많은 개발자들이 개발자로서의 수명이 짧다고 한탄하는 것, 제대로 대접받지 못하는 것은 물론 시스템 구조적인 문제도 있겠지만 보다 쉽고 빨리 할 수 있는 방향으로 가다 보니 본질에 해당하는 핵심 부분을 건드리지 못해서는 아닐까 생각해 본다. 짧은 저자의 식견으로는 임베디드 비전 분야의 핵심은 ARM 프로세서를 잘 사용하는 것도, ARM 프로세서 하드웨어를 잘 설계하는 것도 아닌 비전 알고리즘을 얼마나 잘 이해하고 실제 구현할 수 있느냐라고 생각한다.

앞서 DSP, FPGA, GPU 등의 다양한 하드웨어를 소개했었다. 하지만 자신이 풀고자 하는 문제의 특성을 정확하게 파악하지 않으면 아무리 좋은 하드웨어를 사용한다고 해도 생각보다 빨라지지 않는 것을 경험할 수 있으며 꽤나 많은 시간을 들여도 개선되지 않는 것을 경험하게 될 것이다. 예를 들면 어떤 필터 알고리즘을 구현한다면, 부동 소수점 연산을 고정 소수점 연산으로 바꾸는 것만으로도 8배 이상 빨라지거나 심지어는 20배 이상 빨라지는 것을 경험할 수 있다.

이 때 고정 소수점 연산으로 변환하기 위해서는 알고리즘의 각 부분은 명확하게 이해해야지 오류 없이 변환이 가능하다. 또한 GPU의 경우 일반 프로세서에서 순차적으로 수행하는 형태로 작성된 알고리즘은 그다지 빨라지는 효과를 볼 수 없다. 알고리즘을 이해하여 병렬적인 부분을 만들어 내야지만 대폭적인 성능 개선을 볼 수 있다. 이러한 부분은 책이나 강의로 전달될 수 있는 부분이 아니라 많은 시간을 들여 노력을 해야 얻을 수 있는 노하우이다. 역설적으로 그러기에 누구나 할 수 있는 분야가 아니게 되고 그렇기에 더욱 값어치가 있다.
임베디드 비전 시스템의 알고리즘을 공부하고 싶은 분은 다음 내용을 추천한다.

● OpenCV(http://sourceforge.net/projects/opencvlibrary/): 현존하는 가장 좋은 임베디드 비전 알고리즘을 학습하기에 좋은 소스이다. PC에서 동작하는 것을 기본으로 하고 있지만, cxcore 부분을 잘 이식하면 non-OS의 임베디드에서도 잘 동작한다. 단순히 영상 처리 함수들을 불러다 쓰는데만 만족하지 않고 해당 소스들을 하나씩 공부하다 보면 누구보다도 월등한 실력을 가진 임베디드 비전 개발자가 될 수 있다. 꽤 방대한 양이니 단숨에 끝날 것이라고는 기대하지 마시길.

● TI Fast Run-Time Support Library(http://focus.ti.com/docs/toolsw/folders/print/sprc060.html): 임베디드 비전 분야에서는 DSP쪽에 강세인 Texas Instruments 자료에 많이 의존하게 된다. FastRTS라고 알려진 수학 함수라이브러리는 일반 라이브러리에 비해 3배 이상 빠른 연산을 보장한다. 실제로 필자도 MARU 휴머노이드 프로젝트를 할 때 FastRTS의 도움을 많이 받았다. 부동 소수점 연산 수학 함수들이 DSP에 최적화되어 있는데 어떻게 하면 DSP에 최적화되는지 구조를 볼 수 있다. 폼페이지 접속하면 소스와 설명서를 내려 받을 수 있는데, 대부분의 TI 문서가 그렇듯이 무지막지한 양을 자랑한다.

● BLAS/LAPACK(http://www.netlib.org/lapack/): FOTRAN에서 시작한 수학 연산 라이브러리로 거의 대부분의 수학 연산 알고리즘을 확인할 수 있다.

● TI DSPLIB(http://focus.ti.com/docs/toolsw/folders/print/sprc265.html): TI DSP 하드웨어 플랫폼에 최적화된 라이브러리이다. ANSI-C 로 작성되어 있으니 꼭 TI가 아니더라도 한 번 살펴보면 다른 DSP쪽에 어떻게 활용할 것인지 알 수 있다.

● TI IMGLIB(http://focus.ti.com/docs/toolsw/folders/print/sprc264.html) : 2D 이미지 처리에 관련된 기본 함수가 TI DSP에 최적화되어 있다.

● IPP(http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-domain-library-migration-faq/): 인텔 프로세서에 최적화된 라이브러이다. OpenCV도 IPP의 전신인 IPL을 기반으로 작성되어 있다. 각종 이미지 연산에 관련된 최적화된 함수를 확인할 수 있다.

마감하며
위드로봇㈜ 연구소를 성수동으로 이전하는 기념으로 시작한 공개 강좌 내용을 디바이스마트 매거진에 글로 옮긴지 벌써 네 번째이자 마지막이 되었다. 볼품없는 글을 예쁘게 다듬어주신 디바이스마트 디자인 팀 및 신종헌 팀장님께 감사 드리며, 다시 기회가 주어진다면 좀 더 알찬 내용으로 다시 한 번 독자분들을 찾아 뵙겠다는 이야기로 마무리한다.

 

참고 문헌

[1] 진승훈, 전재욱, “Embedded Computer Vision 관련 연구 동향,“ 로봇학회지 제7권 제 1호, pp7-15
[2] http://www.movesinstitute.org/~kolsch/pubs/EmbeddedCV.html
[3] Mathias Kolsch, Branislav Kisacanin, “Embedded Computer Vision and Smart Cameras,” Tutorial Paper on Embedded Systems Conference(ESC), 2007

그림 출처

그림 1 Micron 홈페이지
그림 2 TI 홈페이지
그림 3, 4 nVidia 홈페이지

 

Leave A Comment

*