Copyright (C) 커널연구회 (www.kernel.bz)작성자: 정재준(rgbi3307 골뱅이 nate.com)문서위치 메인(출처): https://kernel.bz/blogPost/hailo-pan-tilt아래 내용은 누구나 사용할 수 있습니다. 저자정보는 지우지 말고 위의 출처를 기입해 주시기 바랍니다.커널 버전 [v6.6) 안녕하세요?이번 블로그에서는 카메라에서 수집한 영상을 Hailo(NPU)에 입력하여 인식한 객체를 추적(Tracking)하는 기능에 대해서 소개할까 합니다. 카메라 영상은 데이터 용량이 많아서 소프트웨어 적으로 객체의 위치를 추적(Tracking)하는 것이 상당히 까다로운 작업 입니다. 속도도 느리고 정확성도 떨어집니다. 필자도 몇년전 이 기능을 소프트웨어 적으로 모두 구현해 봤지만 원하는 품질이 잘 나오지 않았습니다. 그러나 최근에 Hailo(NPU) 모듈이 출시 되면서 이것을 온디바이스에 탑재하여 카메라 영상 추적을 빠르고 효과적으로 구현할 수 있습니다. 이것을 테스트한 내용을 요약 정리해 보도록 하겠습니다. Hailo(NPU) 모듈을 온디바이스에 연결하는 것은 아래 블로그에 상세히 기술되어 있으므로 참조 바랍니다.https://www.kernel.bz/blogPost/jh7110-hailo Hailo에는 머신러닝을 위한 Neural Network이 하드웨어 적으로 내장되어 있어 객체 인식 속도가 상당히 빠릅니다. 카메라 영상의 객체를 인식하고 위치를 판단한 결과값은 Hailo에서 빠르게 출력 되므로, 이것을 받아서 카메라의 Pan-Tilt 모터만 잘 구동하면 효과적인 성능을 낼 수 있습니다. 먼저 카메라 거치대와 Pan-Tilt 모터가 내장되어 있는 기구물이 준비되어 있어야 합니다. 이것을 모두 제작 하려면 기구물 설계, 목형 및 금형 제작 비용이 상당히 많이 발생 하므로, 필자는 시중에 판매 되고 있는 아래와 같은 기구물에 카메라를 장착 했습니다. 문제는 시중에 나와 있는 기성품에 카메라 Pan-Tilt 모터를 제어 하기 위한 인터페이스가 있어야 합니다. 필자는 RISC-V(JH7110) 보드에 주변 장치를 쉽게 연결할 수 있는 I/O 보드를 다음과 같이 제작 했습니다. 이 보드에 있는 헤더핀에 카메라 팬틸트 모터를 제어하는 스위치들을 연결할 수 있습니다. 그래서 추가적인 하드웨어 개발 비용없이 손쉽게 카메라 팬틸트 모터를 제어할 수 있습니다. 카메라 영상에서 사람 얼굴을 인식한 위치를 정확하게 Tracking(추적) 하기 위해서는 처리 속도가 중요 합니다. 사람 얼굴을 10ms 이내로 빠르게 인식하여 카메라 Pan-Tilt 모터를 10ms 이내로 빠르게 제어해야 정확한 성능을 낼 수 있습니다. 다행히 Hailo NPU 모듈에서 사람 얼굴을 빠르게 인식 합니다만, 이때 카메라 Pan-Tilt 모터 제어도 10ms 이내로 빠르게 해야 합니다. 그러나, 위에서 예시한 카메라 Pan-Tilt 모터는 스테핑 모터로 구동 되기 때문에, 테스트 결과 상당히 천천히 동작 합니다. 사람 얼굴 인식 속도와 카메라 Pan-Tilt 모터 제어 속도를 최대한 동기화 시켜서 구동을 했지만, 카메라 영상에서 사람 얼굴을 빠르게 움직이면 추적을 놓쳐 버리는 문제가 발생 합니다. 필자는 고민끝에 카메라 Pan-Tilt 모터가 빠르게 구동되는 DC 모터와 BLDC 모터 부품을 구매하여 다음과 같이 조립 했습니다. DC 모터는 PWM으로 속도가 제어 됩니다. RISC-V JH7110 보드에서 PWM 신호를 4개까지 제어할 수 있습니다만, DC 모터를 좀더 빠르고 안정적으로 제어하기 위해서 커널연구회에서 기존에 제작한 SmartMotor 보드(STM32F0 MCU)를 JH7110 보드에 위의 사진처럼 연결 했습니다. JH7110 보드는 Host 역할을 하고, 여기에 포팅되어 있는 Hailo NPU 모듈에서 사람 얼굴을 빠르게 인식한 위치 정보를 SmartMotor 보드에 인터럽트로 알려주면, SmartMotor 보드에 연결되어 있는 카메라 Pan-Tilt 제어용 DC 모터를 10ms 이내로 빠르게 구동 합니다. 이렇게 하면 빠르고 효율적으로 사람 얼굴 추적을 정확하게 할 수 있습니다. 아래는 위의 기능을 동영상으로 촬영하여 시연하는 것입니다. 좀 더 상세한 기술적인 내용들은 SDK를 통해서 제공해 드립니다. 커널연구회에서 제공하는 아래의 SDK를 잘 활용하면, 실무 프로젝트에서 초기 개발 비용을 감축하여 가성비 있는 제품들을 만들 수 있습니다. 좀 더 자세한 기술적인 지원들은 아래 SDK에서 확인 바랍니다. 커널연구회 Hailo(NPU) SDK: https://www.kernel.bz/product/npu-sdk 상세 설명 블로그: https://www.kernel.bz/blogPost/jh7110-hailo 감사합니다.