|
2 | 2 |
|
3 | 3 | This app uses the [MobileNet v3](https://pytorch.org/vision/main/models/mobilenetv3.html) model to process live camera images leveraging three different backends: [XNNPACK](https://github.com/google/XNNPACK), [Core ML](https://developer.apple.com/documentation/coreml) and [Metal Performance Shaders (MPS)](https://developer.apple.com/documentation/metalperformanceshaders) (Xcode 15+ and iOS 17+ only). |
4 | 4 |
|
| 5 | +Please refer to the [documentation](https://pytorch.org/executorch/main/demo-apps-ios.html) on how to build and run this app. |
| 6 | + |
5 | 7 | <p align="center"> |
6 | 8 | <img src="https://github.com/user-attachments/assets/69f4cc2c-a95e-4e01-ba4d-7e40791716c8" width="50%"> |
7 | 9 | </p> |
8 | | - |
9 | | -## Prerequisites |
10 | | - |
11 | | -Before we start, make sure you have the following tools installed: |
12 | | - |
13 | | -### 1. Xcode 15+ and Command Line Tools |
14 | | - |
15 | | -Install Xcode 15+ from the |
16 | | -[Mac App Store](https://apps.apple.com/app/xcode/id497799835) and then install |
17 | | -the Command Line Tools using the terminal: |
18 | | - |
19 | | -```bash |
20 | | -xcode-select --install |
21 | | -``` |
22 | | - |
23 | | -### 2. Python 3.10+ |
24 | | - |
25 | | -Python 3.10 or above, along with `pip3`, should be pre-installed on MacOS 13.5+. |
26 | | -If needed, [download Python](https://www.python.org/downloads/macos/) and |
27 | | -install it. Verify the Python and pip versions using these commands: |
28 | | - |
29 | | -```bash |
30 | | -which python3 pip3 |
31 | | -python3 --version |
32 | | -pip3 --version |
33 | | -``` |
34 | | - |
35 | | -## Models and Labels |
36 | | - |
37 | | -Now, let's move on to exporting and bundling the MobileNet v3 model. |
38 | | - |
39 | | -### 1. Set Up ExecuTorch |
40 | | - |
41 | | -Clone ExecuTorch and configure the basic environment: |
42 | | - |
43 | | -```bash |
44 | | -git clone https://github.com/pytorch/executorch.git --depth 1 && cd executorch && \ |
45 | | -python3 -m venv .venv && source .venv/bin/activate && pip3 install --upgrade pip && cd - && \ |
46 | | -./executorch/install_executorch.sh |
47 | | -``` |
48 | | - |
49 | | -### 2. Install Backend Dependencies |
50 | | - |
51 | | -Install additional dependencies for Core ML and MPS backends: |
52 | | - |
53 | | -```bash |
54 | | -./executorch/backends/apple/coreml/scripts/install_requirements.sh && \ |
55 | | -./executorch/backends/apple/mps/install_requirements.sh |
56 | | -``` |
57 | | - |
58 | | -### 3. Export Model |
59 | | - |
60 | | -Export the MobileNet v3 model with Core ML, MPS and XNNPACK backends: |
61 | | - |
62 | | -```bash |
63 | | -MODEL_NAME="mv3" |
64 | | -cd executorch && \ |
65 | | -python3 -m examples.portable.scripts.export --model_name="$MODEL_NAME" && \ |
66 | | -python3 -m examples.apple.coreml.scripts.export --model_name="$MODEL_NAME" && \ |
67 | | -python3 -m examples.apple.mps.scripts.mps_example --model_name="$MODEL_NAME" && \ |
68 | | -python3 -m examples.xnnpack.aot_compiler --model_name="$MODEL_NAME" --delegate && \ |
69 | | -cd - |
70 | | -``` |
71 | | - |
72 | | -Move the exported model files (those with `.pte` extension) to a specific location where the Demo App will pick them up: |
73 | | - |
74 | | -```bash |
75 | | -mkdir -p apple/ExecuTorchDemo/ExecuTorchDemo/Resources/Models/MobileNet/ && \ |
76 | | -mv executorch/"$MODEL_NAME"*.pte apple/ExecuTorchDemo/ExecuTorchDemo/Resources/Models/MobileNet/ |
77 | | -``` |
78 | | - |
79 | | -### 4. Download Labels |
80 | | - |
81 | | -Download the MobileNet model labels required for image classification: |
82 | | - |
83 | | -```bash |
84 | | -curl https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt \ |
85 | | - -o apple/ExecuTorchDemo/ExecuTorchDemo/Resources/Models/MobileNet/imagenet_classes.txt |
86 | | -``` |
87 | | - |
88 | | -## Final Steps |
89 | | - |
90 | | -Now, we just need to open the project in Xcode, run the tests, and finally run the app. |
91 | | -Double-click on the project file under `apple/ExecuTorchDemo` to open it with Xcode, or run the command: |
92 | | - |
93 | | -```bash |
94 | | -open apple/ExecuTorchDemo/ExecuTorchDemo.xcodeproj |
95 | | -``` |
96 | | - |
97 | | -### 1. Run Tests |
98 | | - |
99 | | -You can run tests on Simulaltor directly in Xcode with `Cmd + U` or use the command line: |
100 | | - |
101 | | -```bash |
102 | | -xcrun simctl create executorch "iPhone 15" && \ |
103 | | -xcodebuild clean test \ |
104 | | - -project apple/ExecuTorchDemo/ExecuTorchDemo.xcodeproj \ |
105 | | - -scheme App \ |
106 | | - -destination name=executorch && \ |
107 | | -xcrun simctl delete executorch |
108 | | -``` |
109 | | - |
110 | | -### 2. Run App |
111 | | - |
112 | | -Finally, connect the device, set up Code Signing in Xcode, and then run the app using `Cmd + R`. Try installing a Release build for better performance. |
113 | | - |
114 | | -Learn more about integrating and running [ExecuTorch on Apple](https://pytorch.org/executorch/main/using-executorch-ios.html) platforms. |
0 commit comments