Slide 1

Slide 1 text

이름 신정아 E-mail [email protected] tf.keras 가 모바일을 만나면 AI Tech Networking (19.07.10)

Slide 2

Slide 2 text

자기소개 • 본업은 개발, 취미는 딥러닝! 딥러닝 공부하는 안드로이드 개발자 • Research Engineer들과의 더 나은 협업을 위해 딥러닝을 공부합니다. • 지표 측정과 테스트를 생활화 합니다. • Tensorflow Lite, ML Kit, Caffe2 on Mobile, Android NN API, Federated Learning… 신정아 (Jeongah Arie Shin) 모두의연구소 MoT / Naver ClovaAI

Slide 3

Slide 3 text

오늘의 이야기는 … 딥알못(딥러닝을 알지 못하는) 안드로이드 개발자가 직접 CNN 모델(Landmark Detection, Object Detection)을 설계해서 직접 학습시키고, 직접 Tensorflow Lite, ML Kit으로 Serving 하는 이야기 ** End2End

Slide 4

Slide 4 text

Index 1) On-Device AI End2End 2) Why I choose tf.keras 3) Model Overview ­ Landmark Detection, Object Detection 4) Model Architecture 5) Model Training 6) Model Serving 7) Trial and Error

Slide 5

Slide 5 text

Mobile Machine Learning Pipeline Training Conversion TFLiteConverter TocoConverter MACE converter .tflite Inference mobile_exporter

Slide 6

Slide 6 text

Machine Learning Pipeline (Usual case) Training - 데이터 분석, 데이터 전처리, 모델 설계, 모델 학습, 테스트, parameter tuning

Slide 7

Slide 7 text

Machine Learning Pipeline (Usual case) Conversion - 모바일용으로의 경량화 5'-JUF$POWFSUFS  $PNQBUJCMFXJUIPUIFSGSBNFXPSLT ,FSBT 1Z5PSDI j  )%'  4BWFE.PEFM  'SP[FO(SBQI  4FTTJPO

Slide 8

Slide 8 text

Machine Learning Pipeline (Usual case) .tflite Inference - (경량화된 모델 파일을 통해) 실제 모바일에의 적용

Slide 9

Slide 9 text

On-Device AI End2End tf.contrib.learn.evaluate tf.estimator.Estimator tf.lite.Interpreter 모델에 대한 성능 평가 GQT *OGFSFODF5JNF NT $16 )BSEXBSF"DDFMFSBUJPO j Serving 과정에 대한 평가

Slide 10

Slide 10 text

On-Device AI End2End tf.contrib.learn.evaluate tf.estimator.Estimator tf.lite.Interpreter 모델에 대한 성능 평가 GQT *OGFSFODF5JNF NT $16 )BSEXBSF"DDFMFSBUJPO j Serving 과정에 대한 평가 Rollback

Slide 11

Slide 11 text

2010 2013 2014 2015 2017 Why I choose tf.keras 수많은 오픈소스 딥러닝 프레임워크 / 라이브러리들

Slide 12

Slide 12 text

CoreML (Apple) Caffe2Go (Facebook) Fritz.ai Mace (Shaomi) MLKit Why I choose tf.keras On-Device AI를 지원하는 딥러닝 프레임워크 / 라이브러리들

Slide 13

Slide 13 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving

Slide 14

Slide 14 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving : 신경망 레이어 구성, 비용 함수 계산, 최적화, 초기화, 활성화 함수, 정규화 등의 기능 구현을 간단한 모듈로써 사용 가능

Slide 15

Slide 15 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving : 학습 디버깅을 위한 시각화 도구 Tensorboard 제공, Theano Backend의 Keras 학습 디버깅에 이슈가 많 은 점이 한 몫 하기도 했음.

Slide 16

Slide 16 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving : 제일 많은 Serving 경험을 가진 프레임워크. Tensorflow Backend의 Keras를 활용했기 때문에 (weight 추 출 부터 시작하여) Model Conversion이 쉽고, Tensorflow Lite Evaluation 체계를 활용할 수 있음.

Slide 17

Slide 17 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving tf.keras + Tensorflow Lite (Android Native)

Slide 18

Slide 18 text

Why I choose tf.keras 쉬운 모델 설계 / 학습 + Tensorflow Lite 기반의 Serving tf.keras + Tensorflow Lite (Android Native)

Slide 19

Slide 19 text

Model Overview Object Detection + Landmark Detection - 귀여운게 체-고 - Snapchat, Snow에서 출시한 동물 전용 AR 카메라를 만들 목적으로 시작 - 데이터셋 구하기가 쉬움(kaggle, 오픈 데이터셋 …) - 지루하고 긴 데이터 전처리 과정에서의 기쁨을 얻을 수 있었음❤

Slide 20

Slide 20 text

Model Overview Object Detection + Landmark Detection 주어진 이미지에서 강아지/고양이가 위치한 영역을 검출(Object Detection), 9개의 Facial Feature 분석(Landmark Detection)

Slide 21

Slide 21 text

Model Overview Object Detection + Landmark Detection [DEMO] 고양이용 Landmark Detection 모바일에의 적용 주어진 이미지에서 강아지/고양이가 위치한 영역을 검출(Object Detection), 9개의 Facial Feature 분석(Landmark Detection)

Slide 22

Slide 22 text

Model Architecture Object Detection + Landmark Detection ­ MobileNet V2 기반 * MobileNet V2 이전 버전의 MobileNet의 Standard Convolution이 무겁기 때문에 이를 DSC(Depthwise Seperable Convolution) mobilenetv2_model = mobilenetv2.MobileNetV2(input_shape=(img_size, img_size, 3), alpha=1.0, depth_multiplier=1, include_top=False, weights='imagenet', input_tensor=inputs, pooling='max')

Slide 23

Slide 23 text

Model Architecture ** Input Channel 은 작게, 후처리가 적도록!

Slide 24

Slide 24 text

Model Training Facial Feature. Bounding Box를 전처리 하는 모바일 인터페이스 기반의 Annotation Tool 개발 - 2000장의 Training Set을 kaggle, 오픈 데이터셋 등을 통해 수집 - 200장의 Test Set 크롤링(Phantom.js)

Slide 25

Slide 25 text

Model Serving End2End : 18 ~ 30 fps (Mobile GPU 가속시) 5FOTPSGMPX -JUF .-,JU  (16%FMFHBUJPO"1*੄ ੸ਊ  5FOTPSGMPX .PEFM0QUJNJ[BUJPO5PPMLJU ഝਊ

Slide 26

Slide 26 text

Model Serving 전처리/후처리 클래스에 어떤 역할을 위임할 것인가? .tflite input output 전처리 : ImageClassifer convertBitmapToByteBuffer() loadModel() loadAsset() … 후처리 : ImageClassiferFloatException runInference() addPixelValue() getProbability() getLabelProbArray() …

Slide 27

Slide 27 text

5FOTPSGMPX -JUFҗ .-,JU࠺Ү 5FOTPSGMPX -JUF $VTUPN.PEFM݅ ૑ਗ 1SFUSBJOFE ػ ҳӖ੄ ݽ؛ٜ੉ ݆੉ ա৬੓૑݅ ӝࠄ੸ਵ۽ ೐۽ં౟ী ૒੽ UGMJUF ౵ੌ ੉ध೧ঠ ೣ 0O%FWJDF୶ۿ݅ ૑ਗ ೞ٘ਝয оࣘҗ ઁೠ੸ਵ۽ (164FSWJOHоמ .-,JU 1SPEVDUJPO3FBEZݽ؛ .BEFCZ(PPHMF $VTUPN.PEFMݽف ૑ਗ 0O%FWJDF୶ۿ  ௿ۄ਋٘ ୶ۿ ݽف ૑ਗ ف ߑߨ ݽف 'JSFCBTFഝਊ ೞ٘ਝয оࣘ਷ оמೞ૑݅ ই૒ $164FSWJOH݅ оמ

Slide 28

Slide 28 text

5FOTPSGMPX -JUF 'BTUFSXJUI.PCJMF(16 %FWFMPQFS1SFWJFX  ୹୊IUUQTNFEJVNDPNUFOTPSGMPXUFOTPSGMPXMJUFOPXGBTUFSXJUINPCJMFHQVTEFWFMPQFSQSFWJFXFFEFF 5IFOFX(16CBDLFOE  1FSGPSNTmY GBTUFS 5IFGMPBUJOHQPJOU$16JNQMFNFOUBUJPO

Slide 29

Slide 29 text

5FOTPSGMPX -JUF 'BTUFSXJUI.PCJMF(16 %FWFMPQFS1SFWJFX  ୹୊IUUQTXXXUFOTPSGMPXPSHMJUFQFSGPSNBODFHQV import org.tensorflow.lite.Interpreter import org.tensorflow.lite.experimental.GpuDelegate // Initialize interpreter with GPU delegate protected val delegate = GpuDelegate() protected var options = (Interpreter.Options()).addDelegate(delegate) protected var interpreter = Interpreter(model, options) // Run inference while (true) { writeToInput(input) interpreter.run(input, output) readFromOutput(output) } // Clean up delegate.close() ✓ ࢜۽਍ (16#BDLFOE ª (16оਊ ৈࠗܳ PQUJPO ച ೧ࢲ ࢎਊ ✓ ӝઓ $16CBTFE*NQMFNFOUBUJPO ª *OUFSQSFUFSী NPEFM MPBE0/-:

Slide 30

Slide 30 text

5FOTPSGMPX -JUF 'BTUFSXJUI.PCJMF(16 %FWFMPQFS1SFWJFX  ୹୊IUUQTXXXUFOTPSGMPXPSHMJUFQFSGPSNBODFHQV ✓ .PCJMF(16ܳ оࣘೡ ࣻ ੓ח 5FOTPSGMPX 0QFSBUPSח ೠ੿غয ੓਺ ✓ (16%FMFHBUFীࢲ ૑ਗೞ૑ ঋח 0QFSBUPSо ࢎਊػ ࠗ࠙ী ೠীࢲ $16৬੄ ߽೯੸ੋ ࢎਊ੉ оמೞ૑݅ $16݅ ࢎਊೡ ٸ ࠁ׮ غ۰ ࢿמ੉ ೞۅؼ ࣻ ੓਺ ✓ (16࢚ীࢲ੄ UFOTPSEBUB DIBOOFM ஠ݫۄ ೞ٘ਝযо 3(#"ܳ ૑ਗೡ ٸ 3(#9  DIBOOFM ഋधਵ۽ JOQVUਸ ֍ਵݶ ࢿמ ೱ࢚੉ оמೣ

Slide 31

Slide 31 text

Trial and Error ­ Model Size ✓ Post-training Quantization with Tensorflow Model Optimization Toolkit - Fully Quantized (weight/activation) Model Size : 9.6mb -> 5.2mb / End2End : 30 ~ 45 fps (Mobile GPU 가속시), accuracy loss 1% 이내

Slide 32

Slide 32 text

Trial and Error ✓ 앞으로의 많은 TODO - Pruning API의 적용 - During-training Quantization 시도 - End2End Model 개발 (Object Detection / Landmark Detection 결합) - 반려동물별 Custom Model의 개발

Slide 33

Slide 33 text

이름 신정아 E-mail [email protected] 감사합니다. AI Tech Networking (19.07.10)