This repo was moved from @motlabs group. Thanks for @jwkanggist who is a leader of motlabs community.
We tackle the challenge of using machine learning models on iOS via Core ML and ML Kit (TensorFlow Lite).
DEPRECATED
)The overall flow is very similar for most ML frameworks. Each framework has its own compatible model format. We need to take the model created in TensorFlow and convert it into the appropriate format, for each mobile ML framework.
Once the compatible model is prepared, you can run the inference using the ML framework. Note that you must perform pre/postprocessing manually.
If you want more explanation, check this slide(Korean).
Using built-in model with Core ML
Using built-in on-device model with ML Kit
Using custom model for Vision with Core ML and ML Kit
Object Detection with Core ML
Name | DEMO | Note |
---|---|---|
ImageClassification-CoreML | - | |
MobileNet-MLKit | - |
Name | DEMO | Note |
---|---|---|
ObjectDetection-CoreML | - | |
TextDetection-CoreML | - | |
TextRecognition-MLKit | - | |
FaceDetection-MLKit | - |
Name | DEMO | Note |
---|---|---|
PoseEstimation-CoreML | - | |
PoseEstimation-TFLiteSwift | - | |
PoseEstimation-MLKit | - | |
FingertipEstimation-CoreML | - |
DepthPrediction-CoreML | - |
Name | DEMO | Note |
---|---|---|
SemanticSegmentation-CoreML | - |
Name | DEMO | Note |
---|---|---|
dont-be-turtle-ios | - | |
WordRecognition-CoreML-MLKit(preparing...) | Detect character, find a word what I point and then recognize the word using Core ML and ML Kit. |
Name | DEMO | Note |
---|---|---|
KeypointAnnotation | Annotation tool for own custom estimation dataset |
Name | Create ML DEMO | Core ML DEMO | Note |
---|---|---|---|
SimpleClassification-CreateML-CoreML | A Simple Classification Using Create ML and Core ML |
Execution Time: Inference Time + Postprocessing Time
(with iPhone X) | Inference Time(ms) | Execution Time(ms) | FPS |
---|---|---|---|
ImageClassification-CoreML | 40 | 40 | 23 |
MobileNet-MLKit | 120 | 130 | 6 |
ObjectDetection-CoreML | 100 ~ 120 | 110 ~ 130 | 5 |
TextDetection-CoreML | 12 | 13 | 30(max) |
TextRecognition-MLKit | 35~200 | 40~200 | 5~20 |
PoseEstimation-CoreML | 51 | 65 | 14 |
PoseEstimation-MLKit | 200 | 217 | 3 |
DepthPrediction-CoreML | 624 | 640 | 1 |
SemanticSegmentation-CoreML | 178 | 509 | 1 |
WordRecognition-CoreML-MLKit | 23 | 30 | 14 |
FaceDetection-MLKit | - | - | - |
You can see the measured latency time for inference or execution and FPS on the top of the screen.
If you have more elegant method for measuring the performance, suggest on issue!
Measure📏 | Unit Test | Bunch Test | |
---|---|---|---|
ImageClassification-CoreML | O | X | X |
MobileNet-MLKit | O | X | X |
ObjectDetection-CoreML | O | O | X |
TextDetection-CoreML | O | X | X |
TextRecognition-MLKit | O | X | X |
PoseEstimation-CoreML | O | O | X |
PoseEstimation-MLKit | O | X | X |
DepthPrediction-CoreML | O | X | X |
SemanticSegmentation-CoreML | O | X | X |
WWDC2020
WWDC2019
WWDC2018
WWDC2017