Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[Let's Swift 2019] iOS 앱에서 머신러닝이 해결 할 수 있는 문제들

1,030 views

Published on

iOS에서 머신러닝으로 해결할 수 있는 문제들을 다양한 예시와 함께 소개합니다. 기존에 룰베이스 알고리즘으로는 해결하기 힘들었던 어려운 문제들을 머신러닝이 어떻게 해결할 수 있는지 설명하고, 간단한 코드 예제와 함께 Core ML 사용법을 알려드립니다. 또한 서비스에 사용하는 모델의 경우 어떤 추가적인 고려를 해야하는지도 간략히 소개하고 있습니다.

본 발표에 공유된 대부분의 데모는 https://github.com/motlabs/awesome-ml-demos-with-ios 저장소에 올라가있어, 코드 레벨까지 궁금한 분들께서는 이 저장소를 확인해주세요.

발표영상: https://www.youtube.com/watch?v=zKPB8rnS-EM

Published in: Technology

[Let's Swift 2019] iOS 앱에서 머신러닝이 해결 할 수 있는 문제들

  1. 1. iOS 앱에서 머신러닝이 해결할 수 있는 문제들 Vision편 NAVER 곽도영
  2. 2. ● NAVER CONOMI 개발팀에서 iOS 개발 담당 ● MoT Labs에서 iOS 개발 담당 ● iOS 앱 개발 취미, 지금은 업 ● ML 공부중 ● 모바일 기기 위에 머신러닝 관심
  3. 3. Awesome Machine Learning DEMOs with iOS https://github.com/motlabs/awesome-ml-demos-with-ios 발표를 하게 된 계기는
  4. 4. 머신러닝 모델 제작자 입장에서 머신러닝 모델 사용자 입장에서 그래서 오늘 할 이야기는
  5. 5. 사용자 프라이버시 친화적인 앱 네트워크 비용 절감 지연시간 감소 왜 모바일 머신러닝을 사용하나요?
  6. 6. 검증 데이터 입력 출력 학습 추론 머신러닝 개발 프로세스
  7. 7. 검증 데이터 입력 출력 학습 추론 머신러닝 개발 프로세스
  8. 8. 검증 데이터 입력 출력 학습 추론 머신러닝 개발 프로세스
  9. 9. 검증 모델 추출 데이터 입력 출력 학습 추론 모바일 머신러닝 개발 프로세스
  10. 10. 검증 모델 추출 데이터 입력 출력 학습 추론 이슈 이슈 이슈 모바일 머신러닝 개발 프로세스
  11. 11. https://leanpub.com/coreml-survival-guide CORE ML SURVIVAL GUIDEhttps://github.com/ysh329/deep-learning-model-convertor Deep Learning Model Convertors 모델 추출 단계 (참고)
  12. 12. 추론이란? 본론으로 들어가면
  13. 13. 추론입력 출력 추론이란? → 입력에대해서 예측한 결과를 출력하는 것
  14. 14. 추론 Mountain ... 기존의 룰베이스 알고리즘으로 해결할 수 없었던 문제를 해결 추론이란?
  15. 15. 추론할 때 사용하는 도구는?
  16. 16. https://github.com/fritzlabs/Awesome-Mobile-Machine-Learning Vision Natural Language Speech MLKit/ Vision MLKit/ Language Sound Analysis Accelerate and BNNS MPS C++ Lib C++ Lib Your App TF Lite Pytorch Mobile Core ML iOS의 머신러닝 프레임워크 https://images.app.goo.gl/GnjEn7hWLA4xhQwH9 https://images.app.goo.gl/gTB3iFncwt7XNZc56 https://images.app.goo.gl/2JneWt3SRNi4BDdL7
  17. 17. 아래로 갈수록 어려움 모델 사용 프레임워크 API 사용🏛 애플(혹은 오픈소스)에서 제공되는 모델 사용 직접 학습한 모델을 변환하여 사용 iOS에서 머신러닝을 사용하는 2가지 방법
  18. 18. 그럼, 어떤 문제를 해결 할 수 있을까요?
  19. 19. Image Classification 카테고리
  20. 20. ... acorn squash cucumber bell pepper mushroom granny smith strawberry orange lemon fig pineapple banana jackfruit custard apple pomegranate hay carbonara chocolate sauce dough meat loaf pizza red wine ... ... 0.01% 0.12% 0.31% 0.65% 0.04% 0.00% 0.00% 0.60% 0.14% 0.04% 97.21% 0.01% 0.22% 0.31% 0.65% 0.04% 0.00% 0.00% 0.60% 0.14% 0.01% ... Image Classification
  21. 21. 잠시, 구현 방법 소개
  22. 22. 커스텀 모델 구현 방법 MobileNetV2.mlmodel 먼저 해야할 것: 어디선가 모델을 구해와서 Xcode에 넣는다
  23. 23. 구현 1번째 방법: 자동생성된 클래스 활용하기(1/3) 커스텀 모델 구현 방법
  24. 24. 구현 1번째 방법: 자동생성된 클래스 활용하기(2/3) 커스텀 모델 구현 방법
  25. 25. 구현 1번째 방법: 자동생성된 클래스 활용하기(3/3) 커스텀 모델 구현 방법 pixelBuffer 크기를 모델 크기에 맞게 전처리 필요
  26. 26. 구현 2번째 방법: Vision 프레임워크로 전후처리 커스텀 모델 구현 방법
  27. 27. 구현 2번째 방법: Vision 프레임워크로 전후처리 커스텀 모델 구현 방법 My모델 Vision Model Vision Request 완료핸들러
  28. 28. 구현 2번째 방법: Vision 프레임워크로 전후처리 커스텀 모델 구현 방법 VNClassificationObservation ● 카테고리 ● 확률
  29. 29. 구현 2번째 방법: Vision 프레임워크로 전후처리 커스텀 모델 구현 방법
  30. 30. Image Classification ● 사진이 어떤 카테고리에 속하는지 찾아줌 ● 입력: 이미지 ● 출력: 카테고리 (VNClassificationObservation) https://github.com/tucan9389/ImageClassification-CoreML
  31. 31. 다음으로 Object Detection 위치와 영역
  32. 32. https://github.com/tucan9389/ObjectDetection-CoreML
  33. 33. Object Detection https://images.app.goo.gl/KB5ci9xLkf2Sp9kN8 car: 98% car: 98% car: 98% car: 98% traffic light: 89% traffic light: 89%
  34. 34. https://images.app.goo.gl/KB5ci9xLkf2Sp9kN8 car: 98% car: 98% car: 98% car: 98% traffic light: 89% traffic light: 89% ● 위치와 영역 ● 위치와 영역 ● 카테고리 Object Detection
  35. 35. 후처리: (필요시)좌표 변환 (0,0) (1,1) (0,0) (width, height) Object Detection
  36. 36. ● 사진에서 객체의 위치와 영역을 찾아줌 ● 입력:이미지 ● 출력: ○ 위치와 영역 (VNDetectedObjectObservation) ○ 위치와 영역 + 카테고리 (VNRecognizedObjectObservation) ● 후처리: 좌표 변환 https://github.com/tucan9389/ObjectDetection-CoreML Object Detection
  37. 37. Text RecognitionText Detection Tools ● Apple’s Vision Framework ● Apple’s Vision Framework ● Google’s ML Kit Framework Input/ Output 응용된 API
  38. 38. Text Recognition 응용
  39. 39. Image to XXXmap Depth Prediction & Pose Estimation & Image Segmentation
  40. 40. ● 사진에서 픽셀별 카메라와 거리를 찾아줌 ● 입력: 이미지 ● 출력: Depthmap (VNCoreMLFeatureValueObservation) ● Depth Camera 없이 가능 https://github.com/tucan9389/DepthPrediction-CoreML Depth Prediction
  41. 41. ● 사진에서 사람의 골격 위치를 찾아줌 ● People Occlusion (ARKit에선..) ● 입력: 이미지 ● 출력: Heatmap (VNCoreMLFeatureValueObservation) https://github.com/tucan9389/PoseEstimation-CoreML https://www.youtube.com/watch?v=OrOZxOTIv-g Pose Estimation
  42. 42. https://www.youtube.com/watch?v=OrOZxOTIv-g 후처리: Heatmap 가공 Pose Estimation
  43. 43. Pose Estimation 응용
  44. 44. Pose Estimation Text Detection Text Recognition Just Point It
  45. 45. ● 사진에서 픽셀별 카테고리를 찾아줌 ● 입력: 이미지 ● 출력: Segmentation Map (VNCoreMLFeatureValueObservation) https://www.jeremyjordan.me/semantic-segmentation/ https://github.com/tucan9389/ObjectSegmentation-CoreML Image Segmentation
  46. 46. https://www.jeremyjordan.me/semantic-segmentation/ ● 사진에서 픽셀별 카테고리를 찾아줌 ● 입력: 이미지 ● 출력: Segmentation Map (VNCoreMLFeatureValueObservation) https://github.com/tucan9389/ObjectSegmentation-CoreML Image Segmentation
  47. 47. Pose Estimation Depth Estimation Image Segmentation Input Output Type 14 x 96 x 96 Array<Float> 96 x 96 Array<Float> 96 x 96 Array<Int> Range 0.0 ~ 1.0 0.0 ~ 1.0 0, 1, 2, 3, …, 20 Heatmap Depthmap Segmentation map
  48. 48. Image to Image Image Style Transfer & Super Resulotion
  49. 49. Image Style Transfer https://www.appcoda.com/coreml-turi-create/ https://github.com/backnotprop/fast-style-transfer-coreml https://github.com/s1ddok/HED-CoreML
  50. 50. https://www.appcoda.com/coreml-turi-create/ https://github.com/imxieyi/waifu2x-ios Super Resolution
  51. 51. Image Classification Object Detection Pose Estimation Depth Prediction Image Segmentation Image Style Transfer Super Resolution 카테고리 위치와 영역 xxx map 결과 image-to-image 정리 한번..
  52. 52. 서비스에 사용한다면?
  53. 53. 서비스에 모델을 사용할 때 고려할 점 1. 실데이터로 모델 검증 2. 추론속도 비교
  54. 54. Image Segmentation (DeepLabV3) 기기별 추론속도 비교(1/3)
  55. 55. Image Classification (MobileNetV2) 기기별 추론속도 비교(2/3)
  56. 56. iPhone 11 Pro 추론시간은 15 ms 100장에 1.5 s iPhone X 추론시간은 50 ms 100장에 10 s 기기별 추론속도 비교(3/3)
  57. 57. 마무리 • 다양한 모델의 기능 • 모델별 입출력 • 서비스에서 고려할점 (실데이터 검증, 추론시간) https://github.com/motlabs/awesome-ml-demos-with-ios
  58. 58. 감사합니다 doyoung.gawk@navercorp.com WE ARE HIRING!

×