Google Coral dev board 사용후기
지난 2주간 구글의 Coral dev board와 함께했습니다.
처음 받아서 라즈베리파이와 비교해본 사진
사용하면서 느낀 점을 나열해 보도록 하겠습니다.
성능면에서 살짝 애매한 느낌이 들었습니다.
CPU는 NXP의 i.MX 8M Soc로 쿼드코어의 Cortex-A53 하나와 Cortex-M4F 하나가 들어가 있습니다.
CPU가 좋으면 좋지만.. 그래픽 출력을 따로 하지도 않을거라 크게 신경쓰지 않았습니다.
제일 문제가 되는건 RAM이였습니다.
1G 모델밖에 없는데(차후 2G, 4G도 나온다고 합니다.) 무슨 작업을 하려하면 매번 터집니다.
swap 파일은 필수가 되었습니다.
외부 연결 장치는 USB A 3.0이 하나, USB-C OTG가 하나 있습니다.
그 외 스피커 연결 포트등이 있지만 크게 쓰진 않았습니다. 음성 관련 ML을 한다면 사용하지 않을까 예상하고 있습니다.
네트워크 연결을 위해 기가빗 이더넷과 802.11 b/g/n/ac를 지원하는 와이파이가 내장되어 있습니다.
사용해보니?
결론만 말하면, 애매하다였습니다.
모델 구동을 위한 tflite가 기본적으로 설치되어 있습니다.
모델을 생성하기 위한 tensorflow는 별도로 설치해 주어야 합니다.
mnist 정도는 학습 후 양자화, edgetpu용으로 변환까지 가능합니다.
물론 메모리가 부족하여 swap file은 필수입니다.
whl을 이용해서 설치가 가능한데, scipy가 설치되지 않아 추가적인 작업에 어려움이 있었습니다.
카메라 (Coral Camera)
MIPI CSI-2 방식의 카메라를 사용합니다.
라즈베리파이 카메라와 호환이 불가능하여 별도로 구매해야 합니다.
자동 초점 기능과, 1920 x 1080 @ 60 Hz를 지원합니다.
혹은 USB A 커넥터를 통해 USB 캠을 사용할 수 있습니다.
라즈베리파이 4와 비교하면?
1. 계산 능력
CPU의 성능을 비교하기에는 Clock이 정확히 나와있지 않습니다.
Coral 보드에는 TPU가 있어 압도적이라고 할 수 있으나, 특수한 상황에서만 사용 가능하기 때문에 비슷하다고 생각합니다.
2. 주변 장비를 연결하기에는 라즈베리파이가 훨씬 편했습니다.
USB C 장비가 많이 나오고 있지만, 아직까지도 USB A 소켓을 쓰는 장비가 많기 때문입니다.
디스플레이 연결이 Coral 보드는 HDMI인 반면, 라즈베리파이는 4부터 micro HDMI가 되었으므로 조금 불편한건 사실입니다.
하지만 디스플레이 연결이 많지 않은 SoC 특성상 큰 차이는 없다고 생각합니다.
HAT을 연결하기에도 Coral 보드는 방열판과 팬이 가로막고 있어 불편해 보입니다.
3. 방열 성능
라즈베리파이 4의 고질적인 문제가 열이 너무 많이 난다는 것입니다.
별다른 작업이 없을때도 50도가 넘어가며, 고온에서는 CPU 성능이 떨어진다는 말이 많았습니다.
하지만 Coral 보드는 큰 방열판 + 팬의 조합으로 일정한 온도 유지가 가능했습니다.
4. 네트워크 연결
기가빗 이더넷과 wifi는 비슷하게 지원하므로 넘어가도록 하겠습니다.
5. 결론
저한테 선택하라 하면 라즈베리파이를 사용하겠습니다.
가격적인 면에서 라즈베리파이가 밀린다고 할 수 있으나, 커뮤니티 그리고 사용경험, 각종 자료는 따라갈 수 없습니다.
에러가 났을 때 검색해서 찾을 수 있는지, 예시 프로젝트가 있는지는 장비를 활용하는 입장에서 매우 중요한 요소입니다.
최선의 선택은 Raspberry pi 4 + usb형 edge tpu라고 생각합니다.
그러면 어디에 쓸까?
단호하게 말하자면, 학습 - 모델 생성으로 이어지는 과정에는 부적합합니다.
램이 부족하여 터지기 일쑤, TPU를 학습에 사용할 수 있는 방법이 없어(제가 못찾은 것일수도 있습니다.) 속도도 느립니다.
그렇다면 어디 사용할 것인가?
현재 지원하고 있는 Classify 와 Detection API는 이미지 인식에 잘 작동하고, 속도도 빠른 것으로 확인하였습니다.
Flask를 이용하여 스트리밍 하는데 30fps정도가 나왔습니다.
카메라를 이용한 실시간 이미지 Classify 혹은 Detection에는 충분히 사용 가능합니다.
Teachable AI를 이용하면 edgetpu용 모델을 손쉽게 만들 수 있습니다.
Teachable AI + edgeTPU + @가 관건이라 생각합니다.
edgeTPU로 실시간 가위바위보 인식을 하며 30fps을 유지하는 것으로 마무리 하겠습니다.