산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Equipment >> 산업용 로봇

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

이 가이드는 i.MX RT1060 크로스오버 MCU에서 TensorFlow Lite 모델과 터치 지원 GUI를 활용해 필기체 숫자 인식을 구현하는 방법을 보여줍니다.

Arm® Cortex®-M7 코어로 구동되는 i.MX RT1060은 풍부한 디스플레이 인터페이스가 필요한 비용 효율적 산업 솔루션과 고성능 소비자 기기에서 탁월합니다. 이 튜토리얼에서는 사용자가 그린 숫자를 감지·분류하는 임베디드 머신러닝 애플리케이션을 구축하는 과정을 인기 있는 MNIST eIQ 예제를 통해 안내합니다.

MNIST 데이터셋과 모델 살펴보기

표준 MNIST 데이터셋을 사용합니다: 60,000개 학습 및 10,000개 테스트 이미지, 각 28×28 픽셀 중심 그레이스케일 필기체 숫자. 미국 고등학생과 인구조사국 직원에게서 수집돼 북미 필기 스타일을 반영합니다. 합성곱 신경망(CNN)이 이 데이터셋에서 뛰어난 성능을 보이며, 소규모 아키텍처로도 높은 정확도 달성이 가능해 TensorFlow Lite가 임베디드 하드웨어 배포에 이상적입니다.

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

그림 1. MNIST 데이터셋 예시

공식 TensorFlow GitHub 저장소는 Keras, tf.data, tf.estimator로 구축된 MNIST 모델의 Python 구현을 제공합니다. CNN은 테스트셋에서 우수한 성능을 보이며 우리 변환 과정의 참고자료가 됩니다.

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

그림 2. 모델 아키텍처 시각화

아래는 위 시각화에 해당하는 원시 모델 정의입니다.

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

그림 3. TensorFlow 모델 정의

TensorFlow Lite란? 여기서 어떻게 쓰이나?

TensorFlow는 Google이 유지하는 널리 채택된 오픈소스 딥러닝 프레임워크입니다. 리소스 제약 장치로 TensorFlow 추론을 가져오기 위해 Google은 TensorFlow Lite를 도입했습니다. TensorFlow 연산의 부분집합을 지원하는 경량 런타임입니다. TensorFlow Lite 모델은 장치에서 추가 학습할 수 없지만, 양자화, 가지치기 등 사후 학습 기법으로 크기 축소와 추론 속도 향상이 가능합니다.

모델을 TensorFlow Lite로 변환

TensorFlow 1.13.2로 모델을 학습해 변환 도구와의 호환성을 확보했습니다. 다음 명령으로 .tflite 포맷으로 변환:

tflite_convert --saved_model_dir= --output_file=converted_model.tflite --input_shape=1,28,28 --input_array=Placeholder --output_array=Softmax --inference_type=FLOAT --input_data_type=FLOAT --post_training_quantize --target_ops TFLITE_BUILTINS

변환 후 xxd로 바이너리 모델을 애플리케이션에 임베드:

xxd -i converted_model.tflite > converted_model.h

xxd 유틸리티는 모델을 바이트 배열로 포함한 C/C++ 헤더를 생성해 eIQ 프로젝트가 컴파일 타임에 직접 로드할 수 있게 합니다. 자세한 지침은 eIQ 사용자 가이드와 공식 TensorFlow Lite 문서에서 확인하세요.

Embedded Wizard Studio 빠른 소개

MIMXRT1060-EVK의 그래픽 기능을 활용하기 위해 Embedded Wizard Studio로 구축한 터치 지원 GUI를 통합했습니다. IDE는 XNP의 SDK에서 MCUXpresso와 IAR 프로젝트를 생성해 개발자가 하드웨어에서 즉시 인터페이스를 테스트할 수 있게 합니다. 평가판은 GUI 복잡도 제한과 워터마크가 있지만 정식 라이선스는 무제한 기능을 제공합니다.

생성된 GUI 코드는 C인 반면 eIQ 예제는 C/C++이므로 포함된 모든 헤더를 다음으로 래핑했습니다:

#ifdef __cplusplus extern "C" { #endif /* C 코드 */ #ifdef __cplusplus } #endif

소스와 헤더 파일을 SDK의 미들웨어 폴더로 이동하고 인클루드 경로 조정. 디바이스별 설정 파일을 병합해 원활한 빌드를 보장했습니다.

완성된 애플리케이션과 기능

GUI는 숫자 그리기용 터치 입력 영역과 분류 결과를 표시하는 출력 필드를 제공. 두 버튼으로 추론 실행 또는 캔버스 지우기 가능. 추론 후 예측 숫자와 신뢰도 점수를 표준 출력으로 출력해 디버깅용.

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

그림 4. 입력, 출력, 제어 버튼이 있는 애플리케이션 GUI

TensorFlow Lite 모델 정확도

CNN이 종이 기반 MNIST 샘플에서 높은 정확도를 보이지만, 터치스크린에 그린 필기체 숫자는 크게 다릅니다. 이 차이는 타겟 입력 모달리티와 일치하는 프로덕션급 데이터로 학습하는 것의 중요성을 강조합니다. 성능 향상을 위해 터치스크린으로 새 데이터셋 수집 후 전이 학습 적용(NXP 커뮤니티 연습 참조).

구현 세부사항

Embedded Wizard는 슬롯으로 사용자 상호작용에 반응. 그리기 슬롯은 터치 이동을 캡처해 메인 색상으로 1픽셀 선 렌더링. 지우기 슬롯은 입력·출력 필드를 배경색으로 리셋. 추론 실행 슬롯 트리거 시 비트맵 데이터 가져와 28×28로 리사이즈 후 TensorFlow Lite 인터프리터에 공급.

입력 캔버스가 112×112이므로 이미지 전처리는 다음과 같습니다:

그림 5는 전처리 후 중간 배열을 보여줍니다.

i.MX RT1060 MCU에 TensorFlow Lite로 필기체 숫자 인식 배포

그림 5. 추론 준비된 전처리 입력 배열

TensorFlow Lite 인터프리터는 시작 시 한 번 초기화. 각 추론 요청마다 전처리된 입력 텐서를 픽셀 단위로 인터프리터 입력 버퍼에 복사. 메모리 풋프린트와 런타임 특성은 NXP 애플리케이션 노트에 문서화됨.

TensorFlow Lite: 실행 가능한 솔루션

임베디드 장치에 필기체 숫자 인식 배포는 제한된 컴퓨팅 리소스와 다양한 입력 모달리티 같은 과제가 있습니다. TensorFlow Lite는 경량 런타임과 풍부한 최적화 도구 생태계로 이를 완화합니다. i.MX RT1060의 M7 코어와 SDK 미들웨어 결합으로 디지털 도어락용 보안 숫자 키패드 같은 복잡한 유스케이스 구현이 가능합니다.

손가락으로 터치스크린에 그린 숫자 같은 실제 프로덕션 데이터로 모델 학습하는 것이 높은 정확도 유지에 필수적. 또한 지역별 필기체 차이도 데이터셋 설계 시 고려해야 합니다.

i.MX RT 크로스오버 MCU 시리즈는 성능과 비용의 균형을 제공해 다양한 임베디드 애플리케이션에 적합. 자세한 내용은 i.MX RT 제품 페이지 참조.

업계 기사는 업계 파트너가 All About Circuits 독자들에게 유용한 소식, 메시지, 기술을 공유할 수 있는 콘텐츠 형태입니다. 모든 업계 기사는 엄격한 편집 가이드라인을 준수하며, 표현된 견해는 파트너의 것이며 All About Circuits나 필진의 의견과 반드시 일치하지는 않습니다.


산업용 로봇

  1. 자율 로봇으로 낭비와 에너지 비용 절감
  2. 라즈베리 파이로 텐서플로와 OpenCV를 활용한 숫자 인식기 만들기
  3. NXP i.MX RT500 크로스오버 MCU로 전력 관리 마스터하기
  4. NXP i.MX RT500을 활용한 DSP 지원 스마트 기기: 멀티스레딩, XOS, Cadence Fusion F1 오디오 DSP
  5. TensorFlow로 변이형 오토인코더(VAE) 구축하기: 실전 가이드
  6. 예술 작품 보존을 위한 에폭시 수지 전문가 가이드
  7. 코봇으로 CNC 머신 텐딩 자동화: 효율성과 정밀도 향상
  8. 야스카와 모토맨 로봇 프로그래밍 입문 가이드: 속도와 정확성 향상
  9. 초보자 가이드: 라즈베리 파이에 로보디케이 설치하기
  10. OPC UA 클라이언트로 PLC 함수 블록 호출하기: 실용 가이드