스마트 카메라, 컴퓨터 비전, 머신 비전... 무엇이라고 부르든, 비전 애플리케이션은 점점 더 많은 제품에 적용되고 있습니다. 대부분의 PCB 디자이너들이 익숙한 전통적인 애플리케이션은 제조업이며, 최근에는 스마트폰의 얼굴 인식 기능입니다. 머신 비전 디자인과 시스템 작업을 정기적으로 하는 잘 아는 디자이너들은 의학, 자동차, 로봇공학, 항공우주, 보안 등 다른 분야에서도 많은 독특한 애플리케이션을 보고 있습니다.
전자 산업에서 흥미로운 일 중 하나는 새로운 기술이 계속해서 확산됨에 따라 새로운 시스템에 쉽게 통합될 수 있다는 것입니다. 머신 비전은 표준화, 개발자 지원, 그리고 디자이너들이 이 분야에서 혁신하고자 할 때 사용할 수 있는 풍부한 구성 요소들이 제공되는 지점까지 확실히 도달했습니다. 오늘날에는 새로운 디자이너들을 위한 입문용 옵션으로 여러 인기 있는 하드웨어 플랫폼이 있습니다. 프로토타이핑을 넘어서 생산 등급 하드웨어를 준비하고 있다면, 머신 러닝과 같은 고급 기술을 활용하는 더 통합된 시스템을 가능하게 하는 새로운 프로세서가 있습니다.
이 가이드에서는 머신 비전 시스템을 구축하는 데 필요한 구성 요소와 임베디드 개발자에게 사용 가능한 리소스를 살펴볼 것입니다. 머신 비전 시스템은 카메라와 광학을 다루기 때문에 중요한 하드웨어 및 기계 공학 요소를 가지고 있습니다. 이 시스템의 개발은 여러 분야에 걸쳐 있는 작업으로 매우 풍부합니다. 다행히도, 구성 요소 제조업체와 오픈 소스 개발자는 하드웨어 디자인과 시스템 개발을 가속화하는 데 도움이 되는 많은 리소스에 접근할 수 있으며, 관심 있는 개발자들은 여기서 보여줄 몇 가지 예제를 살펴보기를 권장합니다.
전자 부문에서 머신 비전 시스템은 다른 시스템에 비해 다소 일반적인 아키텍처를 가지고 있습니다. 아래에 표시된 블록 다이어그램은 머신 비전 시스템에 구현된 일반적인 고수준 아키텍처를 보여줍니다. 이 시스템들은 통합 수준과 형태 요소에서 다양할 수 있으며, 아래에 표시된 일부 블록들은 더 강력한 프로세서로 통합될 수 있습니다.
고수준 머신 비전 시스템 아키텍처
다른 디자인을 위한 참조로 사용될 수 있는 전형적인 머신 비전 시스템은 없습니다. 왜냐하면 머신 비전은 제품이나 특정 유형의 디자인이 아니라 능력이기 때문입니다. 위의 블록 다이어그램에서 보여진 것처럼 머신 비전 시스템은 공통적인 특성을 가지고 있지만, 다른 구성 요소 세트로 구현됩니다. 머신 비전 시스템을 지원하기 위한 구성 요소 목록을 제시하는 대신, 이미지 처리 알고리즘이 효율적으로 구현될 수 있는 방법을 보기 위해 프로세서 수준에서 시작해야 합니다.
MCU 또는 MCU 기반 SoC는 기계 시각 기능을 구현하는 시스템에서도 항상 인기가 있었습니다. 표준 디지털 인터페이스를 가진 MCU는 비전 처리를 위한 전문 ASIC과 인터페이스할 수 있으며, FPGA는 인라인 이미지 취득, DSP 기능 및 기타 시스템 수준 처리를 구현하기에 충분히 클 수 있습니다. GPU는 호스트 컨트롤러에 데이터를 다시 제공하는 전용 외부 비전 프로세서를 제공할 수 있습니다.
진보 수준 측면에서, 거의 실시간 기계 시각을 위해서는 MPU + FPGA 또는 MPU + GPU 아키텍처가 선호됩니다. 또한 FPGA/GPU는 병렬 처리를 구현할 수 있어 고해상도/고색상 깊이 처리가 필요할 때 처리 시간을 단축시키기 때문에 고해상도 이미지 처리에도 선호됩니다. FPGA의 주요 장점은 논리가 유연하지만, 고급 처리를 위한 관리 및 알고리즘 개발이 이전 경험이 없으면 더 어렵다는 것입니다.
이 모든 것이 MCU와 MPU가 기계 시각 애플리케이션에서 호스트 컨트롤러로 사용될 수 없다는 것을 의미하는 것은 아닙니다. 예를 들어, 여러분의 휴대폰과 컴퓨터는 이러한 것을 사용하지 않고 있으며 저프레임 속도 비디오와 정적 이미지에서 일부 간단한 이미지 처리 작업을 수행할 수 있습니다. 공정하게 말하자면, 그러한 장치의 CPU/SoC는 고급 MPU보다 훨씬 더 많은 계산 능력을 가지고 있습니다. MCU는 낮은 해상도, 낮은 프레임 속도, 낮은 색상 깊이 또는 흑백 이미지 처리에 사용될 수 있으며, 더 많은 계산 능력을 추가함에 따라 더 상세한 이미지를 처리할 수 있습니다. MPUs는 외부 고속 메모리에 액세스해야 할 수도 있기 때문에 생산에서 더 나은 옵션입니다. 즉, DDR RAM 인터페이스와 일부 주변 장치에 대해 PCIe가 필요할 수 있으며, 이는 일반적으로 느린 MCU에서 찾을 수 없는 것입니다.
시스템에서 더 고급 이미지 인식 및 분할 알고리즘을 구현하려면 SOM, COM 또는 단일 보드 컴퓨터를 기계 시각 애플리케이션의 주요 컨트롤러로 선택할 수 있습니다. 프로세서에 충분한 온칩 메모리와 외부 RAM이 있으면 대부분의 취득 및 처리 작업을 구현하는 동시에 시스템의 나머지를 제어하는 애플리케이션을 실행할 수 있습니다. 이러한 아키텍처는 종종 매우 특정한 애플리케이션에서 낮은 프레임 속도에서 중간 프레임 속도 비디오 데이터에 대한 임계값 기반 이미지 분할 및 객체 감지 작업에 사용됩니다.
기본적으로 저수준 아날로그 신호로 작동하는 다른 많은 설계와 마찬가지로, 기계 시각 시스템과 설계는 고려해야 할 자체의 전기적 도전 과제를 가지고 있습니다. 일부 해결책은 이미지 처리 수준에 있고, 다른 해결책은 구성 요소 선택과 관련된 시스템 수준에 있습니다. 기계 시각 설계에서 설계자가 고려해야 할 주요 도전 과제는 다음과 같습니다:
열 관리: 더 컴팩트한 시스템에서 보드에 장착된 고해상도 카메라는 작동 중 많은 열을 받을 수 있으며, 이는 열을 식히거나 쿨링을 위해 케이스를 통한 공기 흐름이 필요할 수 있습니다. 프로세서가 작고 보드가 큰 시스템은 보통 스스로 쿨링될 수 있지만, 보드가 작고 프로세서가 빠른 시스템은 열을 제거하기 위해 케이스에 접착된 인터페이스 재료가 필요할 수 있습니다.
EMI/EMC: 기계 시각 시스템은 일반적으로 혼합 신호 시스템이므로, CMOS 센서나 CCD에서 나오는 출력과 디지털 구성 요소 사이의 간섭을 방지하기 위해 적절한 레이아웃이 필요합니다. 데이터 변환을 칩 레벨에서 수행하기 때문에 CMOS가 더 나은 옵션이 될 수 있습니다. 빠른 처리를 하는 컴팩트 시스템에서 정확한 이미지 복구를 보장하기 위해, EMI 억제를 위한 몇 가지 최선의 방법을 구현해야 합니다.
전력 무결성: 비전 시스템과 HMI 시스템은 레이아웃이 제대로 구성되지 않으면, 고속 구성 요소나 프로토콜을 사용하지 않는 경우에도 전력 무결성 문제를 경험할 수 있습니다. 이는 필터링으로 해결될 수 있는 문제처럼 들릴 수 있지만, 그렇지 않습니다. 대신, 호스트 보드로 들어오는 모든 디지털 신호를 라우팅하기 위해 접지면을 배치하는 것만큼 간단한 해결책이 될 수 있습니다.
광학 장착: 비전 시스템은 객체와 이미지 평면을 정의하고 이미징 센서에서 데이터 수집이 발생할 수 있도록 선명한 이미지를 형성하기 위해 광학이 필요합니다. 현대의 기계 비전 시스템은 낮은 히스테리시스와 가능하다면 통합 모터 제어를 통한 자동 초점 조정이 가능한 안정적인 마운트가 필요합니다. 이는 기계 설계 도전과제이자 모터 제어 및 타이밍 회로에서의 전력 소모를 포함하는 전기 설계 도전과제입니다.
이 글에서 모든 가능한 구성 요소를 보여줄 수는 없습니다. 그렇게 하면 너무 길어질 것입니다. 대신, 시스템의 다양한 부분을 구축하기 시작하는 데 사용할 수 있는 좋은 구성 요소 목록을 제공할 수 있습니다. 아래 목록에서는 새 시스템의 각 부분에서 사용할 수 있는 몇 가지 예제 구성 요소를 포함했습니다:
STM32와 MSP430 같은 MCU는 가벼운 기계 시각 시스템을 운영하고 일부 간단한 AI 추론 작업을 구현하는 데 좋은 옵션입니다.
더 많은 계산 능력이 필요한 경우, Zynq FPGA 플랫폼은 기계 시각 시스템에 좋은 옵션입니다. Xilinx는 또한 Zynq 기반 기계 시각 시스템을 위한 많은 개발자 지원을 제공합니다.
CMOS 이미지 센서와 CCD 센서는 흑백 또는 컬러일 수 있으며, 다양한 해상도로 제공됩니다. ON Semiconductor의 MT9P031I12STC-DR1은 고해상도 기계 시각 애플리케이션을 위한 컬러 CMOS 센서의 좋은 예입니다.
고급 애플리케이션을 개발하기 위해, OpenCV는 기계 시각 시스템에서 사용되는 많은 표준 이미지 처리 기능을 포함하는 우수한 오픈 소스 라이브러리 세트입니다. 더 전문화된 애플리케이션 개발을 위해 온라인에서 사용할 수 있는 다른 오픈 소스 라이브러리도 있습니다.
이미지 인식, 분할, 객체 식별과 비디오 데이터 내 추적과 같은 일반화된 작업에는 GPU 또는 FPGA를 추천합니다. 이는 애플리케이션 특정 사전 처리(즉, 원시 이미지에서)를 적용하지 않고도 수행할 수 있습니다. 여기서 언급하는 이유는 이미지 센서와 프로세서를 어떻게 연결할지 고려해야 하기 때문입니다. FPGA에서는 애플리케이션의 나머지 로직과 병렬로 데이터 수집 로직과 후속 처리를 구현할 수 있습니다.
시스템 개발에 사용할 수 있는 인기 있는 오픈 하드웨어 플랫폼은 OpenMV입니다. 이 카메라 모듈은 이미지 취득을 위한 로직, 광학 요소를 장착하기 위한 하드웨어, 그리고 EMI/EMC 및 SI/PI를 보장하기 위한 PCB를 통합하고 있습니다. 또한 STM32 MCU 및 기타 플랫폼과 호환됩니다. 이는 시스템 내에서 더 큰 애플리케이션의 호스트 컨트롤러로 외부 프로세서를 사용하고자 하는 애플리케이션 개발자에게 하드웨어 개발 및 디버깅 측면에 얽매이지 않고 사용하기 좋은 시스템입니다.
M7 카메라 모듈 (왼쪽)과 FLIR Lepton 어댑터 모듈 (오른쪽).
기계 시각은 모든 형태에서 매우 유용하며, 고급 MCU, MPU, 또는 FPGA 기반 솔루션이 클라우드와 통합되어야 한다는 사실에 놀라워할 필요가 없습니다. 클라우드 컴퓨팅을 어떻게 활용하느냐에 따라, 데이터 센터로 처리를 오프로드하는 것이 가장 좋을 수도 있으므로, MCU 또는 경량 MPU를 사용할 수 있습니다. 현장에서 빠른 처리가 필요한 경우, 더 강력한 호스트 컨트롤러(FPGA, MPU + FPGA, 또는 MPU + GPU)를 사용하여 현장에서 처리 작업을 수행해야 합니다. 다시 말하지만, 선택은 장치에서 이미지를 정리하고 압축하여 클라우드로 전송하기 전에 수행하는 전처리의 양에 따라 달라집니다.
기계 시각을 포함하는 AI/ML 애플리케이션의 경우, 일부 회사들은 느린 프로세서를 보완하거나 SBC용 애드온 모듈로 SoC와 ASIC을 제공합니다. Google Coral은 이러한 옵션 중 하나로, 이미지 데이터에서 추론을 포함하는 TensorFlow Lite 모델을 실행하기 위한 전용 프로세서로 작동합니다. 다른 옵션들은 여러 비디오 스트림에 대한 AI 추론을 목표로 하는 스타트업들로부터 시장에 출시되고 있으며, 이상적으로는 더 작은 패키지로 GPU를 대체합니다.
기계 시각 시스템은 이미지를 캡처하고 처리하는 것 이상의 많은 일을 해야 합니다. 오늘날의 시스템은 연결되어 있습니다, 여러 센서와 인터페이스를 제공합니다. 기계 시각 시스템에 필요할 수 있는 몇 가지 다른 구성 요소는 다음과 같습니다:
기계 시각 시스템 설계는 여러 분야의 전문 지식과 팀과의 협력을 요구하지만, 이러한 시스템을 위한 구성 요소 선택은 어렵지 않아야 합니다. 기계 시각 애플리케이션을 위한 구성 요소를 찾을 때는 Octopart의 고급 검색 및 필터링 기능을 사용하세요. Octopart의 전자 부품 검색 엔진을 사용하면 최신 유통업체 가격 데이터, 부품 재고, 부품 사양에 대한 액세스를 사용자 친화적인 인터페이스에서 무료로 이용할 수 있습니다. 저희의 집적 회로 페이지를 살펴보세요 필요한 구성 요소를 찾아보세요.
저희 뉴스레터에 가입하여 최신 기사를 계속 업데이트하세요.