Skip to content

Latest commit

 

History

History
195 lines (142 loc) · 11.2 KB

README_kr.md

File metadata and controls

195 lines (142 loc) · 11.2 KB

Awesome PRs Welcome

Awesome Machine Learning DEMOs with iOS

Core ML과 ML Kit(TensorFlow Lite)를 이용해 iOS에서 머신러닝을 돌려보는 예제 모음 저장소입니다.

목차

들어가며

MoT Lab에 iOS 개발 담당으로 있으면서 만들어봤던 프로젝트들입니다. 공개하기에 좋은 코드는 아니지만 iOS에서 머신러닝을 돌려보았을때 어떤 것들이 어디까지 구현가능한지 영감을 얻는데 도움이 될 수 있지 않을까 생각했습니다.

공개된 프로젝트에대해 조언이나 개선사항은 이슈에 남겨주세요. PR은 언제나 환영입니다.

iOS를 위한 ML 프레임워크

Core ML을 이용할 때의 모델 흐름도

flow of model when using coreml

전체적인 흐름은 대부분의 ML 프레임워크가 비슷하게 사용됩니다. 각자 프레임워크에 호환되는 모델 포멧이 있으며, Tensorflow에서 만들어진 모델 포멧으로부터 변환시키는 작업이 필요합니다.

호환되는 모델을 준비했다면, ML 프레임워크를 사용하여 추론을 실행합니다. 추론을 실행하기 전/후에 전처리/후처리를 해줘야하며, ML 프레임워크마다 편의성의 정도가 다릅니다.

더 자세한 설명은 슬라이드 자료를 참고해주세요.

모델 실행 예제

MobileNet

MobileNet 모델을 실행시켜본 예제입니다.

  1. MobileNet-CoreML
  2. MobileNet-MLKit
MobileNet-CoreML MobileNet-MLKit
DEMO-CoreML DEMO-MLKit

Pose Estimation

  1. PoseEstimation-CoreML

    1. PoseEstimationForMobile에서 제공하는 Core ML 모델 준비
    2. iOS에서 CoreML으로 실시간 추론
  2. PoseEstimation-MLKit

    1. PoseEstimationForMobile에서 제공하는 tflite 모델 준비
    2. iOS에서 ML Kit으로 실시간 추론
  3. dont-be-turtle-ios

    1. dont-be-turtle 프로젝트로 학습하여 모델 준비
    2. CoreML 모델로 변환
    3. iOS에서 CoreML으로 실시간 추론
  4. FingertipEstimation-CoreML

    1. 직접 촬영한 5천개의 손가락 사진 준비
    2. KeypointAnnotation 앱으로 어노테이션 시켜 데이터셋 준비
    3. PoseEstimationForMobile 프로젝트로 학습하여 모델 생성
    4. CoreML 모델로 변환
    5. iOS에서 CoreML으로 실시간 추론
  • KeypointAnnotation(준비중...)
    : 커스텀 Estimation 데이터셋을 준비하기위한 어노테이션 툴

Body Pose Estimation

PoseEstimation-CoreML PoseEstimation-MLKit
180705-poseestimation-demo.gif PoseEstimation-MLKit-hourglass
dont-be-turtle-ios
dont-be-turtle_demo

Fingertip Estimation

FingertipEstimation-CoreML KeypointAnnotation(preparing...)
fingertip_estimation_demo003 annotation_ios_app_demo001

Object Detection

  1. SSDMobileNet-CoreML
    : 90개의 물체를 인지(물체의 위치와 크기를 찾고 카테고리를 식별합니다).
SSDMobileNet-CoreML
SSDMobileNet-CoreML_DEMO001

TextDetection & Recognition

  1. TextDetection-CoreML
    : Vision의 내장된 모델을 사용하여 텍스트를 찾기.

  2. TextRecognition-MLKit
    : Firebase의 내장된 모델을 사용하여 텍스트를 인식.

  3. WordRecognition-CoreML-MLKit(준비중...)
    : Core ML의 내장된 Text Detection으로 글자를 찾고, 단어를 찾아서, ML Kit으로 단어를 인식.

    TextDetection-CoreML TextRecognition-MLKit WordRecognition-CoreML-MLKit
    TextDetection-CoreML_DEMO001 TextRecognition-MLKit_DEMO002 recognition a word demo

Create ML과 Core ML을 사용한 간단한 분류

  1. SimpleClassification-CreateML-CoreML
Create ML Core ML
IMG_0436 IMG_0436

⏰성능

실행시간: 추론시간 + 후처리시간

WordRecognition-CoreML-MLKit: Text Detection(내장 Core ML 모델) + Text Recognition(내장 ML Kit 모델)

추론시간(ms) 실행시간(ms) FPS
MobileNet-CoreML 40 40 23
MobileNet-MLKit 120 130 6
PoseEstimation-CoreML 51 65 14
PoseEstimation-MLKit 200 217 3
SSDMobileNet-CoreML 72 180 5
TextDetection-CoreML 12 13 30(max)
TextRecognition-MLKit 35~200 40~200 5~20
WordRecognition-CoreML-MLKit 23 30 14

📏Measure 모듈

데모 상단에서 추론시간, 실행시간, fps를 실시간으로 확인할 수 있습니다.

measure_ui

테스트

단일 테스트

한 입력에대한 한 결과 출력 세부적인 결과 그리기 디버깅용 테스트?

  • Pose Estimation: point마다 점을 찍고 연결, 각 point마다 confidence 출력
  • ...

묶음 테스트(준비중...)

여러 입력에대한 여러 결과를 종합적으로 분석

  • 평균 execution time, fps
  • 누적 execution time, fps...?
  • 총 execution time
  • rendering time
  • ...

Author

See also