This project is Object Detection on iOS with Core ML.
If you are interested in iOS + Machine Learning, visit here you can see various DEMOs.
- Xcode 10.3+
- iOS 13.0+
- Swift 4.2
git clone https://github.com/tucan9389/ObjectDetection-CoreML
- You can download COCO models or another model from here
Or if you want to make and use model with custom dataset,
- follow roboflow tutorial from scratch or yolov5 repo's tutorial
- and convert the
.pt
model to.mlmodel
model with our issue.
By default, the project uses the yolov5s
model. If you want to use another model, you can replace the model file in the project.
You can check here to convert your object detection model to Core ML with additional layers for supporting VNRecognizedObjectObservation
output automatically.
Model | Size (MB) |
Minimum iOS Version |
Download Link |
Trained Dataset |
---|---|---|---|---|
yolov5n.mlmodel | 7.52 | iOS13 | Link | COCO |
yolov5s.mlmodel | 28.0 | iOS13 | Link | COCO |
yolov5m.mlmodel | 81.2 | iOS13 | Link | COCO |
yolov5l.mlmodel | 178.0 | iOS13 | Link | COCO |
yolov5x.mlmodel | 331.0 | iOS13 | Link | COCO |
yolov5n6.mlmodel | 12.8 | iOS13 | Link | COCO |
yolov5s6.mlmodel | 48.5 | iOS13 | Link | COCO |
yolov5m6.mlmodel | 137.0 | iOS13 | Link | COCO |
yolov5l6.mlmodel | 293.0 | iOS13 | Link | COCO |
yolov5x6.mlmodel | 537.0 | iOS13 | Link | COCO |
YOLOv3.mlmodel | 248.4 | iOS12 | Link | COCO |
YOLOv3FP16.mlmodel | 124.2 | iOS12 | Link | COCO |
YOLOv3Int8LUT.mlmodel | 62.2 | iOS12 | Link | COCO |
YOLOv3Tiny.mlmodel | 35.5 | iOS12 | Link | COCO |
YOLOv3TinyFP16.mlmodel | 17.8 | iOS12 | Link | COCO |
YOLOv3TinyInt8LUT.mlmodel | 8.9 | iOS12 | Link | COCO |
MobileNetV2_SSDLite.mlmodel | 9.3 | iOS12 | Link | COCO |
ObjectDetector.mlmodel | 63.7 | iOS12 | Link | 6 Label Dataset |
COCO Dataset
6 Label Dataset(Apple's DEMO)
- Bagel
- Banana
- Coffee
- Croissant
- Egg
- Waffle
Build Setting:
Xcoede > Build Settings > Apple Clang - Code Generation > Optimization Level > Fastest [-O3]
Model vs. Device | 13 Pro |
12 Pro |
11 Pro |
XS | XS Max |
XR | X | 7+ | 7 |
---|---|---|---|---|---|---|---|---|---|
yolov5n | 24 | ||||||||
yolov5s | 29 | ||||||||
yolov5m | 39 | ||||||||
yolov5l | 38 | ||||||||
yolov5x | 69 | ||||||||
yolov5n6 | 24 | ||||||||
yolov5s6 | 34 | ||||||||
yolov5m6 | 39 | ||||||||
yolov5l6 | 41 | ||||||||
yolov5x6 | 57 | ||||||||
YOLOv3 | 45 | 83 | 108 | 93 | 100 | 356 | 569 | 561 | |
YOLOv3FP16 | 44 | 84 | 104 | 89 | 101 | 348 | 572 | 565 | |
YOLOv3Int8LUT | 53 | 86 | 101 | 92 | 100 | 337 | 575 | 572 | |
YOLOv3Tiny | 36 | 44 | 46 | 41 | 47 | 106 | 165 | 168 | |
YOLOv3TinyFP16 | 33 | 44 | 51 | 41 | 44 | 103 | 165 | 167 | |
YOLOv3TinyInt8LUT | 39 | 44 | 45 | 39 | 39 | 106 | 160 | 161 | |
MobileNetV2_SSDLite | 17 | 18 | 31 | 31 | 31 | 109 | 141 | 134 | |
ObjectDetector | 13 | 18 | 24 | 26 | 23 | 63 | 86 | 84 |
Model vs. Device | 13 Pro |
12 Pro |
11 Pro |
XS | XS Max |
XR | X | 7+ | 7 | |
---|---|---|---|---|---|---|---|---|---|---|
yolov5n | 26 | |||||||||
yolov5s | 31 | |||||||||
yolov5m | 41 | |||||||||
yolov5l | 39 | |||||||||
yolov5x | 72 | |||||||||
yolov5n6 | 25 | |||||||||
yolov5s6 | 36 | |||||||||
yolov5m6 | 41 | |||||||||
yolov5l6 | 42 | |||||||||
yolov5x6 | 59 | |||||||||
YOLOv3 | 46 | 84 | 108 | 93 | 100 | 357 | 569 | 561 | ||
YOLOv3FP16 | 45 | 85 | 104 | 89 | 101 | 348 | 572 | 565 | ||
YOLOv3Int8LUT | 54 | 86 | 102 | 92 | 102 | 338 | 576 | 573 | ||
YOLOv3Tiny | 37 | 45 | 46 | 42 | 48 | 106 | 166 | 169 | ||
YOLOv3TinyFP16 | 35 | 45 | 51 | 41 | 44 | 104 | 165 | 167 | ||
YOLOv3TinyInt8LUT | 41 | 45 | 45 | 39 | 40 | 107 | 160 | 161 | ||
MobileNetV2_SSDLite | 19 | 19 | 32 | 31 | 32 | 109 | 142 | 134 | ||
ObjectDetector | 14 | 18 | 25 | 26 | 23 | 64 | 87 | 85 |
Model vs. Device | 13 Pro |
12 Pro |
11 Pro |
XS | XS Max |
XR | X | 7+ | 7 | |
---|---|---|---|---|---|---|---|---|---|---|
yolov5n | 19 | |||||||||
yolov5s | 14 | |||||||||
yolov5m | 13 | |||||||||
yolov5l | 14 | |||||||||
yolov5x | 7 | |||||||||
yolov5n6 | 19 | |||||||||
yolov5s6 | 14 | |||||||||
yolov5m6 | 13 | |||||||||
yolov5l6 | 14 | |||||||||
yolov5x6 | 13 | |||||||||
YOLOv3 | 12 | 9 | 8 | 10 | 9 | 2 | 1 | 1 | ||
YOLOv3FP16 | 13 | 9 | 9 | 10 | 8 | 2 | 1 | 1 | ||
YOLOv3Int8LUT | 14 | 9 | 9 | 10 | 9 | 2 | 1 | 1 | ||
YOLOv3Tiny | 14 | 14 | 21 | 22 | 20 | 8 | 5 | 5 | ||
YOLOv3TinyFP16 | 14 | 14 | 19 | 23 | 21 | 9 | 5 | 5 | ||
YOLOv3TinyInt8LUT | 11 | 14 | 21 | 24 | 23 | 8 | 5 | 5 | ||
MobileNetV2_SSDLite | 19 | 29 | 23 | 23 | 23 | 8 | 6 | 6 | ||
ObjectDetector | 17 | 29 | 23 | 23 | 24 | 14 | 10 | 11 |
- motlabs/awesome-ml-demos-with-ios
: The challenge using machine learning model created from tensorflow on iOS - Machine Learning - Models - Apple Developer
- hollance/coreml-survival-guide
- vonholst/SSDMobileNet_CoreML
: iOS project for object detection(SSDMobileNet V1) using Core ML. - ultralytics/yolov5
: YOLOv5 repository