[Toy] OOTD 트래커 (1) 배경

사전에 알아야할 지식 및 과정

Tensorflow Lite

  • EdgeTPU? https://cloud.google.com/edge-tpu?hl=ko
    • 에지에서 추론을 실행하도록 특별히 설계된 Google의 ASIC. (ASIC이란 주문형 반도체)
    • Coral Device https://coral.ai/
  • 라즈베리파이에서 인식하려면 EdgeTPU가 필요하더라. 그래서 별도로 판매하고 있는 USB Accelerator를 구매했다.

구매

  • 공식홈페이지에서 소개하는 기기는 크게 두가지.
    • Coral Dev Board ($129.99) 와 Coral USB Accelerator ($59.99).
    • 찾아보니 직접 판매는 하지 않아서 Amazon이나 Ali같은 대리점을 통해 판매하던데 가격이 공식홈피보다 훨씬 비싸다.
    • 그런데 마침 gravitylink 에서 공홈과 동일한 가격으로 판매하길래 언제 또다시 가격이 오를지 몰라 구매를 진행. 그리고 지금 구매해도 3주 정도 뒤에 올 것이기 때문에 미리 진행했다.
  • 흑우가 될 것인가.. ㅎㅎ ($270..)
    • Coral Dev Board ($129.99) 1개.
    • Coral USB Accelerator ($59.99) 2개
      • 두개를 산 이유는 혹시나하는 보완을 위해 구매.
    • 배송비 $20.
    • 도합 $270.13 을 결제 했다.

  • 우리나라 메카솔루션에서는 보드는 약 22만원에 판매하고 있다. 15만원을 7만원이나 부풀려서;; 배송도 빠르고 그렇다지만 그래서 결국 직구.
  • 배송까지 대략 3주 예상한다.

기기 스펙

Dev Board

  • 라즈베리파이와 닮았다. 하지만 가격도 2배이상 비싸고, 가운데 커다란 방열판과 펜이 달려있다는게 특징이다. 즉, 발열이 심하다는 것을 간접적으로 알 수 있다. 또는 발열이 나는 작업을 한다든가.
  • 크기는 85mm x 56mm.
#베이스보드 스펙

- Edge TPU System-on-Module (SoM)
	- NXP i.MX 8M SoC (Quad-core Arm Cortex-A53, plus Cortex-M4F)
	- Google Edge TPU ML accelerator coprocessor
	- Cryptographic coprocessor
	- Wi-Fi 2x2 MIMO (802.11b/g/n/ac 2.4/5 GHz)
	- Bluetooth 4.2
	- 8 GB eMMC
	- 1 or 4 GB LPDDR4
	
- 플래시 메모리 : MicroSD 슬롯 (카드 미포함)
- USB 인터페이스 : Type-C 전원 입력,  Type-C OTG, Type-A 3.0, Micro-B 시리얼 콘솔 포트(CP2102 드라이버)
- 유선 인터넷 : 기가비트 이더넷 포트
- 오디오 : 3.5mm 오디오  (CTIA 호환), Digital PDM microphone (x2), 2.54mm 4-pin 스테레오 스피커 터미널 단자
- 모니터 출력 : HDMI 2.0a (풀 사이즈), 39MIPI-DSI-디스플레이 FFC 커넥터, 24MIPI-CSI2 카메라 FFC커넥터
- GPIO : 3.3V 전원 출력, 40 ~ 255옴 프로그래밍으로 제어할 수 있는 임피던스, 최대 전류 ~82 mA
- 전원 : 5V DC (USB Type-C), 2.5~3A (관련상품 바로가기)

#운영체제
- Mendel Linux (개발보드에 기본적으로 설치되지 않은 상태 입니다)
- 보드에 운영체제는 윈도우로도 설치 가능하지만 리눅스, 맥을 이용하여 설치하는 것을 권장해 드립니다.

USB Acclerator

꺠알같이 한국도 지원해준다. 갓구글.

  • Dev Board가 아닌 기기에 장착하면 안에 내장된 TPU Processor를 통해 TPU를 사용하게 해준다.

과정

  1. Teachable Machine에서 Classification 모델 만들기(=학습 시키기)
    • 지그재그애서 산 옷을 입은채로 여러각도로 촬영.(학습데이터)
    • 위 촬영사진으로 모델 생성.
    • 다른 구매 옷들도 촬영. .. N개.
    • 그리고 쇼핑몰에 올라온 사진을 모델에 입력해서 어떤 옷인지 구별하는 모델을 검증.
  2. 만들어진 모델을 Tensorflow Lite로 내보내기
  3. 내보낸 모델을 Coral 적용하기. (라즈베리파이 + USB Accelerator)
  4. 잘 실행되는지 확인해보기. (테스트)

실제 회사내에 있는 전신 거울에 설치해서, 직원분을 대상으로 동의 구하고 해볼생각.

여러 케이스들을 고려해야할 듯

  • 0000에서 구매하지 않은 옷은 없다고 해야함.
  • 0000에서 구매하지 않았지만 이미 등록한 옷과 유사한 옷이 디텍션 된다면...?
  • 유저별로 구별을 해야함.

기존에 생각한대로 하면,, 새로운 데이터가 들어올때마다 학습을 해야한다.
PC에서 수많은 이미지 데이터로 생성된 만들어진 모델을 적용해서, 자주는 어렵겠지만 업데이트가 지속적으로 필요한 것은 사실.
지금 정도 수준에서는, "니가 입은 옷이 이 옷이냐?" 가 아닌 "너가 입은 옷은 원피스다" 이정도다.
내가 원하는건 지금 입은 옷이 수백. 수천개 옷중. 특정지어서 맞추기를 원함.

  • 물론 이게 어렵기 때문에.. 수백. 수천이 아닌 고객별로 한정을 한다면 많아야 100개 미만의 수준에서 가능할듯.
  • 매일 같이 거울앞에서서 오늘 입은 지그재그 옷을 기록.
    • 기록할때는 현재 입은옷이 올바른지 더블 체크해주면 좋을거 같다.
    • 모델은 "지금 당신이 입은 옷은 A인거 같은데, 맞나요?"
      • 맞으면 굿. 아니라고 하면 다음 학습할때 반영하기.

해결해야할 질문

  • 한 클래스당 학습할 데이터양은?
    • 30장 정도. 너무 적게하면 학습이 안될 것이고, 그렇다고 많이 해도 어느 정도 수준에서 큰 의미가 없을듯.
    • 학습할 데이터를 DB에 저장시, 무거우면 곤란할 듯.
    • 사진 한장당 1MB라고 해도, 30MB임. 데이터양도 무시 못할 듯.

좋은 웹페이지 즐겨찾기