kem-gov commited on
Commit
ea3b5c8
·
verified ·
1 Parent(s): f494526

Publish via hf-publish-experiment (384a3c8e93b1fe34d2cc4173539bf6e715ab4496)

Browse files
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ deit_raspberry_executorch_fp32.pte filter=lfs diff=lfs merge=lfs -text
37
+ deit_raspberry_executorch_optimized.pte filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: executorch
3
+ license: apache-2.0
4
+ base_model: facebook/deit-tiny-patch16-224
5
+ base_model_relation: quantized
6
+ tags:
7
+ - image-classification
8
+ - deit
9
+ - int8
10
+ - quantized
11
+ - xnnpack
12
+ - arm
13
+ - executorch
14
+ - edge-ai
15
+ - imagenet
16
+ pipeline_tag: image-classification
17
+ datasets:
18
+ - imagenet-1k
19
+ metrics:
20
+ - accuracy
21
+ model-index:
22
+ - name: deit-tiny-patch16-224-int8-xnnpack-executorch
23
+ results:
24
+ - task:
25
+ type: image-classification
26
+ name: Image Classification
27
+ dataset:
28
+ type: imagenet-1k
29
+ name: ImageNet-1K val
30
+ split: validation
31
+ args:
32
+ evaluation_samples: 50000
33
+ metrics:
34
+ - type: accuracy
35
+ value: 67.62
36
+ name: Top-1 Accuracy (INT8)
37
+ - type: accuracy
38
+ value: 88.48
39
+ name: Top-5 Accuracy (INT8)
40
+ ---
41
+
42
+ # DeiT-Tiny INT8 (ExecuTorch + XNNPACK)
43
+
44
+ This is an INT8 symmetric post-training quantized version of [facebook/deit-tiny-patch16-224](https://huggingface.co/facebook/deit-tiny-patch16-224), exported to the ExecuTorch `.pte` format and accelerated with the XNNPACK delegate for deployment on ARM-based edge devices. The model was calibrated on 1,000 ImageNet samples and evaluated on the full 50,000-image ImageNet-1K validation set.
45
+
46
+ ## Key Highlights
47
+
48
+ - **3.32x smaller** — model file reduced from 22.00 MB (FP32) to 6.62 MB (INT8)
49
+ - **1.34x faster on Raspberry Pi** — latency drops from 34.57 ms to 25.71 ms per image
50
+ - **-1.34 pp Top-1 accuracy** — 67.62% INT8 vs 68.96% FP32 on ImageNet-1K val (50,000 images)
51
+
52
+ ## Model Details
53
+
54
+ ### Model Description
55
+
56
+ DeiT-Tiny is a compact Data-efficient Image Transformer trained entirely on ImageNet without extra data. This variant applies INT8 symmetric static quantization via the PT2E (PyTorch 2 Export) pipeline and lowers the quantized graph to ExecuTorch with the XNNPACK delegate. XNNPACK covers 27.70% of operators and accounts for 63.81% of wall-clock inference time on the target device.
57
+
58
+ - **Base model developed by:** Meta (FAIR)
59
+ - **Quantized/exported artifact prepared by:** Marvik AI
60
+ - **Model type:** Vision Transformer (ViT/DeiT) — image classification
61
+ - **Base model:** [facebook/deit-tiny-patch16-224](https://huggingface.co/facebook/deit-tiny-patch16-224)
62
+ - **Quantization:** INT8 symmetric, static, post-training (PT2E)
63
+ - **Runtime:** ExecuTorch with XNNPACK delegate
64
+ - **Target hardware:** ARM-based devices (Raspberry Pi, Android, Graviton, embedded)
65
+ - **License:** Apache 2.0
66
+
67
+ ### Model Sources
68
+
69
+ - **Base model:** https://huggingface.co/facebook/deit-tiny-patch16-224
70
+ - **Original paper:** [Training data-efficient image transformers & distillation through attention (Touvron et al., 2021)](https://arxiv.org/abs/2012.12877)
71
+
72
+ ## How to Get Started
73
+
74
+ ### 1. Install dependencies
75
+
76
+ ```bash
77
+ pip install executorch torchvision pillow
78
+ ```
79
+
80
+ ### 2. Download the model
81
+
82
+ Download `deit_raspberry_executorch_optimized.pte` and `imagenet_classes.json` from the **Files** tab of this repository, then place them alongside `example.py`.
83
+
84
+ ### 3. Run inference
85
+
86
+ ```bash
87
+ python example.py
88
+ ```
89
+
90
+ ### Inline example
91
+
92
+ ```python
93
+ """Minimal inference example for DeiT-Tiny INT8 using ExecuTorch."""
94
+
95
+ import json
96
+ from pathlib import Path
97
+
98
+ import torch
99
+ from executorch.runtime import Runtime
100
+ from PIL import Image
101
+ from torchvision import transforms
102
+
103
+ MODEL_PATH = "deit_raspberry_executorch_optimized.pte"
104
+ IMAGE_PATH = "sample_input.jpg"
105
+ INPUT_SIZE = (224, 224)
106
+ MEAN = [0.485, 0.456, 0.406]
107
+ STD = [0.229, 0.224, 0.225]
108
+ TOP_K = 5
109
+
110
+ def load_model(pte_path):
111
+ runtime = Runtime.get()
112
+ program = runtime.load_program(pte_path)
113
+ return program.load_method("forward")
114
+
115
+ def preprocess(image_path):
116
+ transform = transforms.Compose([
117
+ transforms.Resize(256),
118
+ transforms.CenterCrop(INPUT_SIZE),
119
+ transforms.ToTensor(),
120
+ transforms.Normalize(mean=MEAN, std=STD),
121
+ ])
122
+ image = Image.open(image_path).convert("RGB")
123
+ return transform(image).unsqueeze(0)
124
+
125
+ def run_inference(method, input_tensor):
126
+ outputs = method.execute([input_tensor])
127
+ return outputs[0]
128
+
129
+ def postprocess(raw_output, labels):
130
+ logits = raw_output.squeeze(0)
131
+ probabilities = torch.softmax(logits, dim=-1)
132
+ top_probs, top_indices = torch.topk(probabilities, TOP_K)
133
+ return [{"class": labels[str(idx)], "probability": prob}
134
+ for prob, idx in zip(top_probs.tolist(), top_indices.tolist())]
135
+
136
+ def main():
137
+ script_dir = Path(__file__).parent
138
+ with open(script_dir / "imagenet_classes.json") as f:
139
+ labels = json.load(f)
140
+ method = load_model(str(script_dir / MODEL_PATH))
141
+ input_tensor = preprocess(str(script_dir / IMAGE_PATH))
142
+ raw_output = run_inference(method, input_tensor)
143
+ results = postprocess(raw_output, labels)
144
+ for i, r in enumerate(results, 1):
145
+ print(f" {i}. {r['class']} ({r['probability']*100:.1f}%)")
146
+
147
+ if __name__ == "__main__":
148
+ main()
149
+ ```
150
+
151
+ ## Evaluation
152
+
153
+ ### Testing Data and Metrics
154
+
155
+ - **Dataset:** ImageNet-1K validation set
156
+ - **Evaluation samples:** 50,000 images (full validation split)
157
+ - **Calibration samples:** 1,000 ImageNet validation images (random shuffle)
158
+ - **Metrics:** Top-1 Accuracy, Top-5 Accuracy, model file size, on-device latency (Raspberry Pi), peak memory usage
159
+
160
+ ### Results
161
+
162
+ #### Accuracy
163
+
164
+ | Metric | FP32 | INT8 | Delta |
165
+ |---|---|---|---|
166
+ | Top-1 Accuracy | 68.96% | 67.62% | -1.34 pp |
167
+ | Top-5 Accuracy | 89.17% | 88.48% | -0.70 pp |
168
+
169
+ #### Efficiency (Raspberry Pi)
170
+
171
+ | Metric | FP32 | INT8 | Improvement |
172
+ |---|---|---|---|
173
+ | Model size (.pte) | 22.00 MB | 6.62 MB | 3.32x smaller |
174
+ | Inference latency | 34.57 ms | 25.71 ms | 1.34x faster |
175
+ | Peak memory | 33.58 MB | 18.47 MB | 1.82x lower |
176
+
177
+ ## Technical Specifications
178
+
179
+ ### Objective
180
+
181
+ Reduce model size and inference latency of DeiT-Tiny for deployment on resource-constrained ARM devices while preserving ImageNet classification accuracy within an acceptable margin.
182
+
183
+ ### Quantization
184
+
185
+ - **Method:** Post-training static quantization (PTQ), INT8 symmetric
186
+ - **Framework:** PT2E (PyTorch 2 Export) quantization pipeline
187
+ - **Calibration:** 1,000 randomly sampled ImageNet validation images
188
+ - **Granularity:** Per-channel for weights, per-tensor for activations
189
+ - **Layers kept in FP32:** `patch_embeddings` on the current ExecuTorch/XNNPACK recipe
190
+ - **Delegate:** XNNPACK (covers 27.70% of operators, 63.81% of wall-clock time)
191
+
192
+ ### Export Pipeline
193
+
194
+ 1. The FP32 model is captured via `torch.export` to produce a portable FX graph.
195
+ 2. XNNPACK-aware observers are inserted and calibrated on 1,000 ImageNet validation samples.
196
+ 3. Observers are converted to INT8 quantize/dequantize (Q/DQ) pairs.
197
+ 4. The quantized graph is lowered to ExecuTorch `.pte` format with the XNNPACK delegate.
198
+
199
+ ### Preprocessing
200
+
201
+ Inputs must be preprocessed before being passed to the model:
202
+
203
+ | Step | Parameters |
204
+ |---|---|
205
+ | Resize (shorter side) | 256 px |
206
+ | Center crop | 224 × 224 px |
207
+ | To tensor | Scales pixel values to [0.0, 1.0] |
208
+ | Normalize | mean = [0.485, 0.456, 0.406], std = [0.229, 0.224, 0.225] |
209
+
210
+ - **Input shape:** `[1, 3, 224, 224]` (batch × channels × height × width)
211
+ - **Input dtype:** `float32`
212
+
213
+ ### Postprocessing
214
+
215
+ The model outputs raw class logits of shape `[1, 1000]` (one logit per ImageNet class). To obtain class probabilities:
216
+
217
+ 1. Apply `softmax` along the class dimension.
218
+ 2. Take `top-k` (k = 5) to retrieve the most likely classes.
219
+
220
+ ## Known Limitations
221
+
222
+ - **Fixed input resolution:** The model expects exactly 224 × 224 inputs. Images of different sizes must be resized and cropped prior to inference.
223
+ - **ImageNet classes only:** The model was trained and evaluated on ImageNet-1K (1,000 classes). It is not suitable for out-of-distribution domains without fine-tuning.
224
+ - **Latency figures are Raspberry Pi-specific:** The speedup of 1.34x was measured on a Raspberry Pi using the ExecuTorch XNNPACK runtime. Results on other ARM devices (Android, AWS Graviton, embedded MCUs) may differ.
225
+ - **INT8 accuracy drop:** A -1.34 pp Top-1 regression is typical for static PTQ on ViT-family models. Tasks requiring higher accuracy may benefit from quantization-aware training (QAT) or a larger DeiT variant.
226
+ - **XNNPACK coverage:** 27.70% of operators are delegated to XNNPACK. Remaining operators run on the ExecuTorch portable kernel, which may limit speedup compared to a fully delegated CNN.
benchmarks/README.md ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Benchmarks
2
+
3
+ Machine-readable measurement records for this model, conforming to
4
+ [`mech-model-schemas`](https://github.com/Arm-Debug/mech-model-schemas)
5
+ v1.0.0 (`task: vision-classification`).
6
+
7
+ These complement — they don't replace — the eval block in the model
8
+ card. The card carries the headline numbers in human-readable form;
9
+ these YAMLs carry the same data with full context (target hardware,
10
+ runtime config, dataset slice, benchmark parameters) so downstream
11
+ tooling can ingest them programmatically.
12
+
13
+ ## Files
14
+
15
+ - `deit-tiny-raspberrypi5-int8.yaml` — INT8 measurements on
16
+ Raspberry Pi 5 via ExecuTorch + XNNPACK + KleidiAI.
17
+ - `deit-tiny-raspberrypi5-fp32.yaml` — FP32 baseline on the same
18
+ hardware/runtime, for comparison.
19
+
20
+ ## Reading these
21
+
22
+ Each record has three top-level sections:
23
+
24
+ - `context.{model,target,runtime,dataset,benchmark}` — everything
25
+ needed to reproduce the measurement.
26
+ - `performance` — latency (p50/p90), memory (peak/average), cold
27
+ start, FPS, delegation %.
28
+ - `accuracy` — Top-1 / Top-5 percentages.
29
+
30
+ The two records share `context.{target,runtime,dataset,benchmark}`;
31
+ the disambiguator is `weight_dtype` (and, once published under an
32
+ `Arm/*` slug, `model.id`).
33
+
34
+ ## Provenance
35
+
36
+ Source: Marvik delivery package `deit_raspberry_executorch.zip`
37
+ (`report.json`, `metadata.yaml`, `huggingface/README.md`).
38
+ Schema-conformant transformation tracked in `mech-model-schemas`.
39
+
40
+ Some schema-required fields (e.g. `context.benchmark.num_runs`) are
41
+ placeholders because the upstream pipeline doesn't surface them yet;
42
+ header comments in each YAML file flag the gaps.
benchmarks/deit-tiny-raspberrypi5-fp32.yaml ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # FP32 baseline measurement record — DeiT-Tiny on Raspberry Pi 5 via ExecuTorch.
2
+ # Pairs with `deit-tiny-raspberrypi5-int8.yaml` to demonstrate the
3
+ # baseline-comparison join documented in `docs/header-and-generic.md`.
4
+ #
5
+ # Source: Marvik delivery package `deit_raspberry_executorch.zip`, `report.json`
6
+ # `original` fields (the un-quantised baseline measured under identical
7
+ # target / runtime / dataset / benchmark conditions to the optimised record).
8
+ #
9
+ # Same target / runtime / dataset / benchmark as the INT8 record —
10
+ # disambiguator is `weight_dtype`, and (once published) `model.id`.
11
+ #
12
+ # Known unknowns (Marvik pipeline does not currently surface these):
13
+ # - context.benchmark.num_runs — required by schema; placeholder used
14
+ # - context.benchmark.warmup_runs — optional
15
+ # - context.runtime.version — optional but worth recording
16
+ # - context.target.os_version — optional
17
+ # - context.runtime.config.n_threads — optional
18
+ # - context.model.baseline_checksum — optional
19
+ # - context.model.base_model_revision — not yet a schema field; pinning
20
+ # this artefact to a HF revision SHA
21
+ # would close the last reproducibility
22
+ # gap on the baseline.
23
+ # - performance.end_to_end_latency_ms.p99 — optional; only p50/p90 reported
24
+
25
+ version: 1.0.0
26
+ task: vision-classification
27
+ created_at: '2026-04-22T22:43:46Z'
28
+ context:
29
+ model:
30
+ id: facebook/deit-tiny-patch16-224
31
+ base_model_id: facebook/deit-tiny-patch16-224
32
+ profile: Experimental
33
+ weight_dtype: fp32
34
+ model_size_mb: 22.00
35
+ parameter_count: 5717416
36
+ format: pte
37
+ target:
38
+ name: Raspberry Pi 5
39
+ hardware_class: Edge Linux
40
+ cpu_architecture: arm64
41
+ cpu_model: Cortex-A76
42
+ cpu_core_count: 4
43
+ cpu_clock_ghz: 2.4
44
+ system_memory_gb: 8
45
+ os: linux
46
+ runtime:
47
+ name: executorch
48
+ execution_backend: cpu
49
+ config:
50
+ optimisations:
51
+ - XNNPACK
52
+ - KleidiAI
53
+ dataset:
54
+ name: imagenet-1k
55
+ version: '1.0'
56
+ slice: validation
57
+ sample_count: 50000
58
+ reference_url: https://image-net.org
59
+ benchmark:
60
+ batch_size: 1
61
+ input_resolution: 224x224
62
+ num_runs: 1 # PLACEHOLDER — not surfaced by Marvik pipeline; schema requires this field
63
+ performance:
64
+ end_to_end_latency_ms:
65
+ p50: 34.54
66
+ p90: 34.67
67
+ peak_memory_mb: 33.58
68
+ average_memory_mb: 31.08
69
+ cold_start_time_ms: 52.39
70
+ accuracy:
71
+ top_1_accuracy_pct: 68.96
72
+ top_5_accuracy_pct: 89.17
benchmarks/deit-tiny-raspberrypi5-int8.yaml ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Real measurement record — DeiT-Tiny INT8 on Raspberry Pi 5 via ExecuTorch + XNNPACK.
2
+ # Source: Marvik delivery package `deit_raspberry_executorch.zip`, files
3
+ # - report.json (machine-readable metrics)
4
+ # - metadata.yaml (Marvik's portal metadata, now superseded by these schemas)
5
+ # - huggingface/README.md (recipe prose)
6
+ #
7
+ # Known unknowns (Marvik pipeline does not currently surface these):
8
+ # - context.benchmark.num_runs — required by schema; placeholder used
9
+ # - context.benchmark.warmup_runs — optional
10
+ # - context.runtime.version — optional but worth recording
11
+ # - context.target.os_version — optional
12
+ # - context.runtime.config.n_threads — optional
13
+ # - context.model.baseline_checksum — optional
14
+ # - performance.end_to_end_latency_ms.p99 — optional; only p50/p90 reported
15
+ #
16
+ # Mapping notes:
17
+ # - cold_start_time_ms holds Marvik's "Time To First Inference" (37.39 ms — process
18
+ # start to first output completing). Marvik separately reports "Cold Start" (21.84 ms,
19
+ # process startup before any inference); this is not a separate schema field.
20
+ # - base_model_id and id are identical here because the artefact is not yet uploaded
21
+ # under arm/<slug>. Once published, id becomes the arm/* identifier and base_model_id
22
+ # remains facebook/deit-tiny-patch16-224.
23
+
24
+ version: 1.0.0
25
+ task: vision-classification
26
+ created_at: '2026-04-22T22:43:46Z'
27
+ context:
28
+ model:
29
+ id: facebook/deit-tiny-patch16-224
30
+ base_model_id: facebook/deit-tiny-patch16-224
31
+ weight_dtype: int8
32
+ quantization:
33
+ method: PTQ-static
34
+ weight_bits: 8
35
+ activation_bits: 8
36
+ symmetric: true
37
+ mode: static
38
+ weight_granularity: per-channel
39
+ fp32_layers:
40
+ - patch_embeddings
41
+ calibration:
42
+ dataset_name: imagenet-1k
43
+ sample_count: 1000
44
+ selection: random
45
+ profile: Arm-Optimized
46
+ model_size_mb: 6.62
47
+ parameter_count: 5717416
48
+ format: pte
49
+ target:
50
+ name: Raspberry Pi 5
51
+ hardware_class: Edge Linux
52
+ cpu_architecture: arm64
53
+ cpu_model: Cortex-A76
54
+ cpu_core_count: 4
55
+ cpu_clock_ghz: 2.4
56
+ system_memory_gb: 8
57
+ os: linux
58
+ runtime:
59
+ name: executorch
60
+ execution_backend: cpu
61
+ config:
62
+ optimisations:
63
+ - XNNPACK
64
+ - KleidiAI
65
+ dataset:
66
+ name: imagenet-1k
67
+ version: '1.0'
68
+ slice: validation
69
+ sample_count: 50000
70
+ reference_url: https://image-net.org
71
+ benchmark:
72
+ batch_size: 1
73
+ input_resolution: 224x224
74
+ num_runs: 1 # PLACEHOLDER — not surfaced by Marvik pipeline; schema requires this field
75
+ performance:
76
+ end_to_end_latency_ms:
77
+ p50: 25.65
78
+ p90: 25.84
79
+ peak_memory_mb: 18.47
80
+ delegation_pct: 63.81
81
+ average_memory_mb: 16.21
82
+ cold_start_time_ms: 37.39
83
+ frames_per_second: 38.90
84
+ accuracy:
85
+ top_1_accuracy_pct: 67.62
86
+ top_5_accuracy_pct: 88.48
config.yaml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ input:
2
+ shape: [1, 3, 224, 224]
3
+ dtype: float32
4
+ range: [0.0, 1.0]
5
+ preprocessing:
6
+ - resize: 256
7
+ - center_crop: [224, 224]
8
+ - to_tensor
9
+ - normalize:
10
+ mean: [0.485, 0.456, 0.406]
11
+ std: [0.229, 0.224, 0.225]
12
+
13
+ output:
14
+ shape: [1, 1000]
15
+ format: "Raw class logits (unnormalized)"
16
+ postprocessing:
17
+ softmax: true
18
+ top_k: 5
deit_raspberry_executorch_fp32.pte ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a2f06e1355d83b6d38c11bd7423cdd847e17a7c36b6d41128a1613ef347dc2cc
3
+ size 23073184
deit_raspberry_executorch_optimized.pte ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c749ec3bb0ffabdf4b0364ef6020b28e5b4ea3897706a45f7fff24d571890205
3
+ size 6941472
example.py ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Minimal inference example for DeiT-Tiny INT8 using ExecuTorch."""
2
+
3
+ import json
4
+ from pathlib import Path
5
+
6
+ import torch
7
+ from executorch.runtime import Runtime
8
+ from PIL import Image
9
+ from torchvision import transforms
10
+
11
+ # Configuration
12
+ MODEL_PATH = "deit_raspberry_executorch_optimized.pte"
13
+ IMAGE_PATH = "sample_input.jpg"
14
+ INPUT_SIZE = (224, 224)
15
+ MEAN = [0.485, 0.456, 0.406]
16
+ STD = [0.229, 0.224, 0.225]
17
+ TOP_K = 5
18
+
19
+
20
+ def load_model(pte_path: str):
21
+ runtime = Runtime.get()
22
+ program = runtime.load_program(pte_path)
23
+ return program.load_method("forward")
24
+
25
+
26
+ def preprocess(image_path: str) -> torch.Tensor:
27
+ transform = transforms.Compose([
28
+ transforms.Resize(256),
29
+ transforms.CenterCrop(INPUT_SIZE),
30
+ transforms.ToTensor(),
31
+ transforms.Normalize(mean=MEAN, std=STD),
32
+ ])
33
+ image = Image.open(image_path).convert("RGB")
34
+ tensor = transform(image)
35
+ return tensor.unsqueeze(0)
36
+
37
+
38
+ def run_inference(method, input_tensor: torch.Tensor) -> torch.Tensor:
39
+ outputs = method.execute([input_tensor])
40
+ return outputs[0]
41
+
42
+
43
+ def postprocess(raw_output: torch.Tensor, labels: dict) -> list[dict]:
44
+ logits = raw_output.squeeze(0)
45
+ probabilities = torch.softmax(logits, dim=-1)
46
+ top_probs, top_indices = torch.topk(probabilities, TOP_K)
47
+ results = []
48
+ for prob, idx in zip(top_probs.tolist(), top_indices.tolist()):
49
+ results.append({
50
+ "class": labels[str(idx)],
51
+ "probability": prob,
52
+ })
53
+ return results
54
+
55
+
56
+ def save_results(results: list[dict], script_dir: Path) -> None:
57
+ output_path = script_dir / "predictions.json"
58
+ with open(output_path, "w") as f:
59
+ json.dump(results, f, indent=2)
60
+
61
+
62
+ def main() -> None:
63
+ script_dir = Path(__file__).parent
64
+
65
+ labels_path = script_dir / "imagenet_classes.json"
66
+ with open(labels_path) as f:
67
+ labels = json.load(f)
68
+
69
+ method = load_model(str(script_dir / MODEL_PATH))
70
+ input_tensor = preprocess(str(script_dir / IMAGE_PATH))
71
+ raw_output = run_inference(method, input_tensor)
72
+ results = postprocess(raw_output, labels)
73
+
74
+ print("Top-5 predictions:")
75
+ for i, r in enumerate(results, 1):
76
+ print(f" {i}. {r['class']} ({r['probability'] * 100:.1f}%)")
77
+
78
+ save_results(results, script_dir)
79
+ print(f"Saved predictions.json to {script_dir / 'predictions.json'}")
80
+
81
+
82
+ if __name__ == "__main__":
83
+ main()
imagenet_classes.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"0": "tench, Tinca tinca", "1": "goldfish, Carassius auratus", "2": "great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias", "3": "tiger shark, Galeocerdo cuvieri", "4": "hammerhead, hammerhead shark", "5": "electric ray, crampfish, numbfish, torpedo", "6": "stingray", "7": "cock", "8": "hen", "9": "ostrich, Struthio camelus", "10": "brambling, Fringilla montifringilla", "11": "goldfinch, Carduelis carduelis", "12": "house finch, linnet, Carpodacus mexicanus", "13": "junco, snowbird", "14": "indigo bunting, indigo finch, indigo bird, Passerina cyanea", "15": "robin, American robin, Turdus migratorius", "16": "bulbul", "17": "jay", "18": "magpie", "19": "chickadee", "20": "water ouzel, dipper", "21": "kite", "22": "bald eagle, American eagle, Haliaeetus leucocephalus", "23": "vulture", "24": "great grey owl, great gray owl, Strix nebulosa", "25": "European fire salamander, Salamandra salamandra", "26": "common newt, Triturus vulgaris", "27": "eft", "28": "spotted salamander, Ambystoma maculatum", "29": "axolotl, mud puppy, Ambystoma mexicanum", "30": "bullfrog, Rana catesbeiana", "31": "tree frog, tree-frog", "32": "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui", "33": "loggerhead, loggerhead turtle, Caretta caretta", "34": "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea", "35": "mud turtle", "36": "terrapin", "37": "box turtle, box tortoise", "38": "banded gecko", "39": "common iguana, iguana, Iguana iguana", "40": "American chameleon, anole, Anolis carolinensis", "41": "whiptail, whiptail lizard", "42": "agama", "43": "frilled lizard, Chlamydosaurus kingi", "44": "alligator lizard", "45": "Gila monster, Heloderma suspectum", "46": "green lizard, Lacerta viridis", "47": "African chameleon, Chamaeleo chamaeleon", "48": "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis", "49": "African crocodile, Nile crocodile, Crocodylus niloticus", "50": "American alligator, Alligator mississipiensis", "51": "triceratops", "52": "thunder snake, worm snake, Carphophis amoenus", "53": "ringneck snake, ring-necked snake, ring snake", "54": "hognose snake, puff adder, sand viper", "55": "green snake, grass snake", "56": "king snake, kingsnake", "57": "garter snake, grass snake", "58": "water snake", "59": "vine snake", "60": "night snake, Hypsiglena torquata", "61": "boa constrictor, Constrictor constrictor", "62": "rock python, rock snake, Python sebae", "63": "Indian cobra, Naja naja", "64": "green mamba", "65": "sea snake", "66": "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus", "67": "diamondback, diamondback rattlesnake, Crotalus adamanteus", "68": "sidewinder, horned rattlesnake, Crotalus cerastes", "69": "trilobite", "70": "harvestman, daddy longlegs, Phalangium opilio", "71": "scorpion", "72": "black and gold garden spider, Argiope aurantia", "73": "barn spider, Araneus cavaticus", "74": "garden spider, Aranea diademata", "75": "black widow, Latrodectus mactans", "76": "tarantula", "77": "wolf spider, hunting spider", "78": "tick", "79": "centipede", "80": "black grouse", "81": "ptarmigan", "82": "ruffed grouse, partridge, Bonasa umbellus", "83": "prairie chicken, prairie grouse, prairie fowl", "84": "peacock", "85": "quail", "86": "partridge", "87": "African grey, African gray, Psittacus erithacus", "88": "macaw", "89": "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita", "90": "lorikeet", "91": "coucal", "92": "bee eater", "93": "hornbill", "94": "hummingbird", "95": "jacamar", "96": "toucan", "97": "drake", "98": "red-breasted merganser, Mergus serrator", "99": "goose", "100": "black swan, Cygnus atratus", "101": "tusker", "102": "echidna, spiny anteater, anteater", "103": "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus", "104": "wallaby, brush kangaroo", "105": "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus", "106": "wombat", "107": "jellyfish", "108": "sea anemone, anemone", "109": "brain coral", "110": "flatworm, platyhelminth", "111": "nematode, nematode worm, roundworm", "112": "conch", "113": "snail", "114": "slug", "115": "sea slug, nudibranch", "116": "chiton, coat-of-mail shell, sea cradle, polyplacophore", "117": "chambered nautilus, pearly nautilus, nautilus", "118": "Dungeness crab, Cancer magister", "119": "rock crab, Cancer irroratus", "120": "fiddler crab", "121": "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica", "122": "American lobster, Northern lobster, Maine lobster, Homarus americanus", "123": "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish", "124": "crayfish, crawfish, crawdad, crawdaddy", "125": "hermit crab", "126": "isopod", "127": "white stork, Ciconia ciconia", "128": "black stork, Ciconia nigra", "129": "spoonbill", "130": "flamingo", "131": "little blue heron, Egretta caerulea", "132": "American egret, great white heron, Egretta albus", "133": "bittern", "134": "crane", "135": "limpkin, Aramus pictus", "136": "European gallinule, Porphyrio porphyrio", "137": "American coot, marsh hen, mud hen, water hen, Fulica americana", "138": "bustard", "139": "ruddy turnstone, Arenaria interpres", "140": "red-backed sandpiper, dunlin, Erolia alpina", "141": "redshank, Tringa totanus", "142": "dowitcher", "143": "oystercatcher, oyster catcher", "144": "pelican", "145": "king penguin, Aptenodytes patagonica", "146": "albatross, mollymawk", "147": "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus", "148": "killer whale, killer, orca, grampus, sea wolf, Orcinus orca", "149": "dugong, Dugong dugon", "150": "sea lion", "151": "Chihuahua", "152": "Japanese spaniel", "153": "Maltese dog, Maltese terrier, Maltese", "154": "Pekinese, Pekingese, Peke", "155": "Shih-Tzu", "156": "Blenheim spaniel", "157": "papillon", "158": "toy terrier", "159": "Rhodesian ridgeback", "160": "Afghan hound, Afghan", "161": "basset, basset hound", "162": "beagle", "163": "bloodhound, sleuthhound", "164": "bluetick", "165": "black-and-tan coonhound", "166": "Walker hound, Walker foxhound", "167": "English foxhound", "168": "redbone", "169": "borzoi, Russian wolfhound", "170": "Irish wolfhound", "171": "Italian greyhound", "172": "whippet", "173": "Ibizan hound, Ibizan Podenco", "174": "Norwegian elkhound, elkhound", "175": "otterhound, otter hound", "176": "Saluki, gazelle hound", "177": "Scottish deerhound, deerhound", "178": "Weimaraner", "179": "Staffordshire bullterrier, Staffordshire bull terrier", "180": "American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier", "181": "Bedlington terrier", "182": "Border terrier", "183": "Kerry blue terrier", "184": "Irish terrier", "185": "Norfolk terrier", "186": "Norwich terrier", "187": "Yorkshire terrier", "188": "wire-haired fox terrier", "189": "Lakeland terrier", "190": "Sealyham terrier, Sealyham", "191": "Airedale, Airedale terrier", "192": "cairn, cairn terrier", "193": "Australian terrier", "194": "Dandie Dinmont, Dandie Dinmont terrier", "195": "Boston bull, Boston terrier", "196": "miniature schnauzer", "197": "giant schnauzer", "198": "standard schnauzer", "199": "Scotch terrier, Scottish terrier, Scottie", "200": "Tibetan terrier, chrysanthemum dog", "201": "silky terrier, Sydney silky", "202": "soft-coated wheaten terrier", "203": "West Highland white terrier", "204": "Lhasa, Lhasa apso", "205": "flat-coated retriever", "206": "curly-coated retriever", "207": "golden retriever", "208": "Labrador retriever", "209": "Chesapeake Bay retriever", "210": "German short-haired pointer", "211": "vizsla, Hungarian pointer", "212": "English setter", "213": "Irish setter, red setter", "214": "Gordon setter", "215": "Brittany spaniel", "216": "clumber, clumber spaniel", "217": "English springer, English springer spaniel", "218": "Welsh springer spaniel", "219": "cocker spaniel, English cocker spaniel, cocker", "220": "Sussex spaniel", "221": "Irish water spaniel", "222": "kuvasz", "223": "schipperke", "224": "groenendael", "225": "malinois", "226": "briard", "227": "kelpie", "228": "komondor", "229": "Old English sheepdog, bobtail", "230": "Shetland sheepdog, Shetland sheep dog, Shetland", "231": "collie", "232": "Border collie", "233": "Bouvier des Flandres, Bouviers des Flandres", "234": "Rottweiler", "235": "German shepherd, German shepherd dog, German police dog, alsatian", "236": "Doberman, Doberman pinscher", "237": "miniature pinscher", "238": "Greater Swiss Mountain dog", "239": "Bernese mountain dog", "240": "Appenzeller", "241": "EntleBucher", "242": "boxer", "243": "bull mastiff", "244": "Tibetan mastiff", "245": "French bulldog", "246": "Great Dane", "247": "Saint Bernard, St Bernard", "248": "Eskimo dog, husky", "249": "malamute, malemute, Alaskan malamute", "250": "Siberian husky", "251": "dalmatian, coach dog, carriage dog", "252": "affenpinscher, monkey pinscher, monkey dog", "253": "basenji", "254": "pug, pug-dog", "255": "Leonberg", "256": "Newfoundland, Newfoundland dog", "257": "Great Pyrenees", "258": "Samoyed, Samoyede", "259": "Pomeranian", "260": "chow, chow chow", "261": "keeshond", "262": "Brabancon griffon", "263": "Pembroke, Pembroke Welsh corgi", "264": "Cardigan, Cardigan Welsh corgi", "265": "toy poodle", "266": "miniature poodle", "267": "standard poodle", "268": "Mexican hairless", "269": "timber wolf, grey wolf, gray wolf, Canis lupus", "270": "white wolf, Arctic wolf, Canis lupus tundrarum", "271": "red wolf, maned wolf, Canis rufus, Canis niger", "272": "coyote, prairie wolf, brush wolf, Canis latrans", "273": "dingo, warrigal, warragal, Canis dingo", "274": "dhole, Cuon alpinus", "275": "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus", "276": "hyena, hyaena", "277": "red fox, Vulpes vulpes", "278": "kit fox, Vulpes macrotis", "279": "Arctic fox, white fox, Alopex lagopus", "280": "grey fox, gray fox, Urocyon cinereoargenteus", "281": "tabby, tabby cat", "282": "tiger cat", "283": "Persian cat", "284": "Siamese cat, Siamese", "285": "Egyptian cat", "286": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "287": "lynx, catamount", "288": "leopard, Panthera pardus", "289": "snow leopard, ounce, Panthera uncia", "290": "jaguar, panther, Panthera onca, Felis onca", "291": "lion, king of beasts, Panthera leo", "292": "tiger, Panthera tigris", "293": "cheetah, chetah, Acinonyx jubatus", "294": "brown bear, bruin, Ursus arctos", "295": "American black bear, black bear, Ursus americanus, Euarctos americanus", "296": "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus", "297": "sloth bear, Melursus ursinus, Ursus ursinus", "298": "mongoose", "299": "meerkat, mierkat", "300": "tiger beetle", "301": "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle", "302": "ground beetle, carabid beetle", "303": "long-horned beetle, longicorn, longicorn beetle", "304": "leaf beetle, chrysomelid", "305": "dung beetle", "306": "rhinoceros beetle", "307": "weevil", "308": "fly", "309": "bee", "310": "ant, emmet, pismire", "311": "grasshopper, hopper", "312": "cricket", "313": "walking stick, walkingstick, stick insect", "314": "cockroach, roach", "315": "mantis, mantid", "316": "cicada, cicala", "317": "leafhopper", "318": "lacewing, lacewing fly", "319": "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", "320": "damselfly", "321": "admiral", "322": "ringlet, ringlet butterfly", "323": "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus", "324": "cabbage butterfly", "325": "sulphur butterfly, sulfur butterfly", "326": "lycaenid, lycaenid butterfly", "327": "starfish, sea star", "328": "sea urchin", "329": "sea cucumber, holothurian", "330": "wood rabbit, cottontail, cottontail rabbit", "331": "hare", "332": "Angora, Angora rabbit", "333": "hamster", "334": "porcupine, hedgehog", "335": "fox squirrel, eastern fox squirrel, Sciurus niger", "336": "marmot", "337": "beaver", "338": "guinea pig, Cavia cobaya", "339": "sorrel", "340": "zebra", "341": "hog, pig, grunter, squealer, Sus scrofa", "342": "wild boar, boar, Sus scrofa", "343": "warthog", "344": "hippopotamus, hippo, river horse, Hippopotamus amphibius", "345": "ox", "346": "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis", "347": "bison", "348": "ram, tup", "349": "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis", "350": "ibex, Capra ibex", "351": "hartebeest", "352": "impala, Aepyceros melampus", "353": "gazelle", "354": "Arabian camel, dromedary, Camelus dromedarius", "355": "llama", "356": "weasel", "357": "mink", "358": "polecat, fitch, foulmart, foumart, Mustela putorius", "359": "black-footed ferret, ferret, Mustela nigripes", "360": "otter", "361": "skunk, polecat, wood pussy", "362": "badger", "363": "armadillo", "364": "three-toed sloth, ai, Bradypus tridactylus", "365": "orangutan, orang, orangutang, Pongo pygmaeus", "366": "gorilla, Gorilla gorilla", "367": "chimpanzee, chimp, Pan troglodytes", "368": "gibbon, Hylobates lar", "369": "siamang, Hylobates syndactylus, Symphalangus syndactylus", "370": "guenon, guenon monkey", "371": "patas, hussar monkey, Erythrocebus patas", "372": "baboon", "373": "macaque", "374": "langur", "375": "colobus, colobus monkey", "376": "proboscis monkey, Nasalis larvatus", "377": "marmoset", "378": "capuchin, ringtail, Cebus capucinus", "379": "howler monkey, howler", "380": "titi, titi monkey", "381": "spider monkey, Ateles geoffroyi", "382": "squirrel monkey, Saimiri sciureus", "383": "Madagascar cat, ring-tailed lemur, Lemur catta", "384": "indri, indris, Indri indri, Indri brevicaudatus", "385": "Indian elephant, Elephas maximus", "386": "African elephant, Loxodonta africana", "387": "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens", "388": "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca", "389": "barracouta, snoek", "390": "eel", "391": "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch", "392": "rock beauty, Holocanthus tricolor", "393": "anemone fish", "394": "sturgeon", "395": "gar, garfish, garpike, billfish, Lepisosteus osseus", "396": "lionfish", "397": "puffer, pufferfish, blowfish, globefish", "398": "abacus", "399": "abaya", "400": "academic gown, academic robe, judge's robe", "401": "accordion, piano accordion, squeeze box", "402": "acoustic guitar", "403": "aircraft carrier, carrier, flattop, attack aircraft carrier", "404": "airliner", "405": "airship, dirigible", "406": "altar", "407": "ambulance", "408": "amphibian, amphibious vehicle", "409": "analog clock", "410": "apiary, bee house", "411": "apron", "412": "ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin", "413": "assault rifle, assault gun", "414": "backpack, back pack, knapsack, packsack, rucksack, haversack", "415": "bakery, bakeshop, bakehouse", "416": "balance beam, beam", "417": "balloon", "418": "ballpoint, ballpoint pen, ballpen, Biro", "419": "Band Aid", "420": "banjo", "421": "bannister, banister, balustrade, balusters, handrail", "422": "barbell", "423": "barber chair", "424": "barbershop", "425": "barn", "426": "barometer", "427": "barrel, cask", "428": "barrow, garden cart, lawn cart, wheelbarrow", "429": "baseball", "430": "basketball", "431": "bassinet", "432": "bassoon", "433": "bathing cap, swimming cap", "434": "bath towel", "435": "bathtub, bathing tub, bath, tub", "436": "beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon", "437": "beacon, lighthouse, beacon light, pharos", "438": "beaker", "439": "bearskin, busby, shako", "440": "beer bottle", "441": "beer glass", "442": "bell cote, bell cot", "443": "bib", "444": "bicycle-built-for-two, tandem bicycle, tandem", "445": "bikini, two-piece", "446": "binder, ring-binder", "447": "binoculars, field glasses, opera glasses", "448": "birdhouse", "449": "boathouse", "450": "bobsled, bobsleigh, bob", "451": "bolo tie, bolo, bola tie, bola", "452": "bonnet, poke bonnet", "453": "bookcase", "454": "bookshop, bookstore, bookstall", "455": "bottlecap", "456": "bow", "457": "bow tie, bow-tie, bowtie", "458": "brass, memorial tablet, plaque", "459": "brassiere, bra, bandeau", "460": "breakwater, groin, groyne, mole, bulwark, seawall, jetty", "461": "breastplate, aegis, egis", "462": "broom", "463": "bucket, pail", "464": "buckle", "465": "bulletproof vest", "466": "bullet train, bullet", "467": "butcher shop, meat market", "468": "cab, hack, taxi, taxicab", "469": "caldron, cauldron", "470": "candle, taper, wax light", "471": "cannon", "472": "canoe", "473": "can opener, tin opener", "474": "cardigan", "475": "car mirror", "476": "carousel, carrousel, merry-go-round, roundabout, whirligig", "477": "carpenter's kit, tool kit", "478": "carton", "479": "car wheel", "480": "cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM", "481": "cassette", "482": "cassette player", "483": "castle", "484": "catamaran", "485": "CD player", "486": "cello, violoncello", "487": "cellular telephone, cellular phone, cellphone, cell, mobile phone", "488": "chain", "489": "chainlink fence", "490": "chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour", "491": "chain saw, chainsaw", "492": "chest", "493": "chiffonier, commode", "494": "chime, bell, gong", "495": "china cabinet, china closet", "496": "Christmas stocking", "497": "church, church building", "498": "cinema, movie theater, movie theatre, movie house, picture palace", "499": "cleaver, meat cleaver, chopper", "500": "cliff dwelling", "501": "cloak", "502": "clog, geta, patten, sabot", "503": "cocktail shaker", "504": "coffee mug", "505": "coffeepot", "506": "coil, spiral, volute, whorl, helix", "507": "combination lock", "508": "computer keyboard, keypad", "509": "confectionery, confectionary, candy store", "510": "container ship, containership, container vessel", "511": "convertible", "512": "corkscrew, bottle screw", "513": "cornet, horn, trumpet, trump", "514": "cowboy boot", "515": "cowboy hat, ten-gallon hat", "516": "cradle", "517": "crane", "518": "crash helmet", "519": "crate", "520": "crib, cot", "521": "Crock Pot", "522": "croquet ball", "523": "crutch", "524": "cuirass", "525": "dam, dike, dyke", "526": "desk", "527": "desktop computer", "528": "dial telephone, dial phone", "529": "diaper, nappy, napkin", "530": "digital clock", "531": "digital watch", "532": "dining table, board", "533": "dishrag, dishcloth", "534": "dishwasher, dish washer, dishwashing machine", "535": "disk brake, disc brake", "536": "dock, dockage, docking facility", "537": "dogsled, dog sled, dog sleigh", "538": "dome", "539": "doormat, welcome mat", "540": "drilling platform, offshore rig", "541": "drum, membranophone, tympan", "542": "drumstick", "543": "dumbbell", "544": "Dutch oven", "545": "electric fan, blower", "546": "electric guitar", "547": "electric locomotive", "548": "entertainment center", "549": "envelope", "550": "espresso maker", "551": "face powder", "552": "feather boa, boa", "553": "file, file cabinet, filing cabinet", "554": "fireboat", "555": "fire engine, fire truck", "556": "fire screen, fireguard", "557": "flagpole, flagstaff", "558": "flute, transverse flute", "559": "folding chair", "560": "football helmet", "561": "forklift", "562": "fountain", "563": "fountain pen", "564": "four-poster", "565": "freight car", "566": "French horn, horn", "567": "frying pan, frypan, skillet", "568": "fur coat", "569": "garbage truck, dustcart", "570": "gasmask, respirator, gas helmet", "571": "gas pump, gasoline pump, petrol pump, island dispenser", "572": "goblet", "573": "go-kart", "574": "golf ball", "575": "golfcart, golf cart", "576": "gondola", "577": "gong, tam-tam", "578": "gown", "579": "grand piano, grand", "580": "greenhouse, nursery, glasshouse", "581": "grille, radiator grille", "582": "grocery store, grocery, food market, market", "583": "guillotine", "584": "hair slide", "585": "hair spray", "586": "half track", "587": "hammer", "588": "hamper", "589": "hand blower, blow dryer, blow drier, hair dryer, hair drier", "590": "hand-held computer, hand-held microcomputer", "591": "handkerchief, hankie, hanky, hankey", "592": "hard disc, hard disk, fixed disk", "593": "harmonica, mouth organ, harp, mouth harp", "594": "harp", "595": "harvester, reaper", "596": "hatchet", "597": "holster", "598": "home theater, home theatre", "599": "honeycomb", "600": "hook, claw", "601": "hoopskirt, crinoline", "602": "horizontal bar, high bar", "603": "horse cart, horse-cart", "604": "hourglass", "605": "iPod", "606": "iron, smoothing iron", "607": "jack-o'-lantern", "608": "jean, blue jean, denim", "609": "jeep, landrover", "610": "jersey, T-shirt, tee shirt", "611": "jigsaw puzzle", "612": "jinrikisha, ricksha, rickshaw", "613": "joystick", "614": "kimono", "615": "knee pad", "616": "knot", "617": "lab coat, laboratory coat", "618": "ladle", "619": "lampshade, lamp shade", "620": "laptop, laptop computer", "621": "lawn mower, mower", "622": "lens cap, lens cover", "623": "letter opener, paper knife, paperknife", "624": "library", "625": "lifeboat", "626": "lighter, light, igniter, ignitor", "627": "limousine, limo", "628": "liner, ocean liner", "629": "lipstick, lip rouge", "630": "Loafer", "631": "lotion", "632": "loudspeaker, speaker, speaker unit, loudspeaker system, speaker system", "633": "loupe, jeweler's loupe", "634": "lumbermill, sawmill", "635": "magnetic compass", "636": "mailbag, postbag", "637": "mailbox, letter box", "638": "maillot", "639": "maillot, tank suit", "640": "manhole cover", "641": "maraca", "642": "marimba, xylophone", "643": "mask", "644": "matchstick", "645": "maypole", "646": "maze, labyrinth", "647": "measuring cup", "648": "medicine chest, medicine cabinet", "649": "megalith, megalithic structure", "650": "microphone, mike", "651": "microwave, microwave oven", "652": "military uniform", "653": "milk can", "654": "minibus", "655": "miniskirt, mini", "656": "minivan", "657": "missile", "658": "mitten", "659": "mixing bowl", "660": "mobile home, manufactured home", "661": "Model T", "662": "modem", "663": "monastery", "664": "monitor", "665": "moped", "666": "mortar", "667": "mortarboard", "668": "mosque", "669": "mosquito net", "670": "motor scooter, scooter", "671": "mountain bike, all-terrain bike, off-roader", "672": "mountain tent", "673": "mouse, computer mouse", "674": "mousetrap", "675": "moving van", "676": "muzzle", "677": "nail", "678": "neck brace", "679": "necklace", "680": "nipple", "681": "notebook, notebook computer", "682": "obelisk", "683": "oboe, hautboy, hautbois", "684": "ocarina, sweet potato", "685": "odometer, hodometer, mileometer, milometer", "686": "oil filter", "687": "organ, pipe organ", "688": "oscilloscope, scope, cathode-ray oscilloscope, CRO", "689": "overskirt", "690": "oxcart", "691": "oxygen mask", "692": "packet", "693": "paddle, boat paddle", "694": "paddlewheel, paddle wheel", "695": "padlock", "696": "paintbrush", "697": "pajama, pyjama, pj's, jammies", "698": "palace", "699": "panpipe, pandean pipe, syrinx", "700": "paper towel", "701": "parachute, chute", "702": "parallel bars, bars", "703": "park bench", "704": "parking meter", "705": "passenger car, coach, carriage", "706": "patio, terrace", "707": "pay-phone, pay-station", "708": "pedestal, plinth, footstall", "709": "pencil box, pencil case", "710": "pencil sharpener", "711": "perfume, essence", "712": "Petri dish", "713": "photocopier", "714": "pick, plectrum, plectron", "715": "pickelhaube", "716": "picket fence, paling", "717": "pickup, pickup truck", "718": "pier", "719": "piggy bank, penny bank", "720": "pill bottle", "721": "pillow", "722": "ping-pong ball", "723": "pinwheel", "724": "pirate, pirate ship", "725": "pitcher, ewer", "726": "plane, carpenter's plane, woodworking plane", "727": "planetarium", "728": "plastic bag", "729": "plate rack", "730": "plow, plough", "731": "plunger, plumber's helper", "732": "Polaroid camera, Polaroid Land camera", "733": "pole", "734": "police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria", "735": "poncho", "736": "pool table, billiard table, snooker table", "737": "pop bottle, soda bottle", "738": "pot, flowerpot", "739": "potter's wheel", "740": "power drill", "741": "prayer rug, prayer mat", "742": "printer", "743": "prison, prison house", "744": "projectile, missile", "745": "projector", "746": "puck, hockey puck", "747": "punching bag, punch bag, punching ball, punchball", "748": "purse", "749": "quill, quill pen", "750": "quilt, comforter, comfort, puff", "751": "racer, race car, racing car", "752": "racket, racquet", "753": "radiator", "754": "radio, wireless", "755": "radio telescope, radio reflector", "756": "rain barrel", "757": "recreational vehicle, RV, R.V.", "758": "reel", "759": "reflex camera", "760": "refrigerator, icebox", "761": "remote control, remote", "762": "restaurant, eating house, eating place, eatery", "763": "revolver, six-gun, six-shooter", "764": "rifle", "765": "rocking chair, rocker", "766": "rotisserie", "767": "rubber eraser, rubber, pencil eraser", "768": "rugby ball", "769": "rule, ruler", "770": "running shoe", "771": "safe", "772": "safety pin", "773": "saltshaker, salt shaker", "774": "sandal", "775": "sarong", "776": "sax, saxophone", "777": "scabbard", "778": "scale, weighing machine", "779": "school bus", "780": "schooner", "781": "scoreboard", "782": "screen, CRT screen", "783": "screw", "784": "screwdriver", "785": "seat belt, seatbelt", "786": "sewing machine", "787": "shield, buckler", "788": "shoe shop, shoe-shop, shoe store", "789": "shoji", "790": "shopping basket", "791": "shopping cart", "792": "shovel", "793": "shower cap", "794": "shower curtain", "795": "ski", "796": "ski mask", "797": "sleeping bag", "798": "slide rule, slipstick", "799": "sliding door", "800": "slot, one-armed bandit", "801": "snorkel", "802": "snowmobile", "803": "snowplow, snowplough", "804": "soap dispenser", "805": "soccer ball", "806": "sock", "807": "solar dish, solar collector, solar furnace", "808": "sombrero", "809": "soup bowl", "810": "space bar", "811": "space heater", "812": "space shuttle", "813": "spatula", "814": "speedboat", "815": "spider web, spider's web", "816": "spindle", "817": "sports car, sport car", "818": "spotlight, spot", "819": "stage", "820": "steam locomotive", "821": "steel arch bridge", "822": "steel drum", "823": "stethoscope", "824": "stole", "825": "stone wall", "826": "stopwatch, stop watch", "827": "stove", "828": "strainer", "829": "streetcar, tram, tramcar, trolley, trolley car", "830": "stretcher", "831": "studio couch, day bed", "832": "stupa, tope", "833": "submarine, pigboat, sub, U-boat", "834": "suit, suit of clothes", "835": "sundial", "836": "sunglass", "837": "sunglasses, dark glasses, shades", "838": "sunscreen, sunblock, sun blocker", "839": "suspension bridge", "840": "swab, swob, mop", "841": "sweatshirt", "842": "swimming trunks, bathing trunks", "843": "swing", "844": "switch, electric switch, electrical switch", "845": "syringe", "846": "table lamp", "847": "tank, army tank, armored combat vehicle, armoured combat vehicle", "848": "tape player", "849": "teapot", "850": "teddy, teddy bear", "851": "television, television system", "852": "tennis ball", "853": "thatch, thatched roof", "854": "theater curtain, theatre curtain", "855": "thimble", "856": "thresher, thrasher, threshing machine", "857": "throne", "858": "tile roof", "859": "toaster", "860": "tobacco shop, tobacconist shop, tobacconist", "861": "toilet seat", "862": "torch", "863": "totem pole", "864": "tow truck, tow car, wrecker", "865": "toyshop", "866": "tractor", "867": "trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi", "868": "tray", "869": "trench coat", "870": "tricycle, trike, velocipede", "871": "trimaran", "872": "tripod", "873": "triumphal arch", "874": "trolleybus, trolley coach, trackless trolley", "875": "trombone", "876": "tub, vat", "877": "turnstile", "878": "typewriter keyboard", "879": "umbrella", "880": "unicycle, monocycle", "881": "upright, upright piano", "882": "vacuum, vacuum cleaner", "883": "vase", "884": "vault", "885": "velvet", "886": "vending machine", "887": "vestment", "888": "viaduct", "889": "violin, fiddle", "890": "volleyball", "891": "waffle iron", "892": "wall clock", "893": "wallet, billfold, notecase, pocketbook", "894": "wardrobe, closet, press", "895": "warplane, military plane", "896": "washbasin, handbasin, washbowl, lavabo, wash-hand basin", "897": "washer, automatic washer, washing machine", "898": "water bottle", "899": "water jug", "900": "water tower", "901": "whiskey jug", "902": "whistle", "903": "wig", "904": "window screen", "905": "window shade", "906": "Windsor tie", "907": "wine bottle", "908": "wing", "909": "wok", "910": "wooden spoon", "911": "wool, woolen, woollen", "912": "worm fence, snake fence, snake-rail fence, Virginia fence", "913": "wreck", "914": "yawl", "915": "yurt", "916": "web site, website, internet site, site", "917": "comic book", "918": "crossword puzzle, crossword", "919": "street sign", "920": "traffic light, traffic signal, stoplight", "921": "book jacket, dust cover, dust jacket, dust wrapper", "922": "menu", "923": "plate", "924": "guacamole", "925": "consomme", "926": "hot pot, hotpot", "927": "trifle", "928": "ice cream, icecream", "929": "ice lolly, lolly, lollipop, popsicle", "930": "French loaf", "931": "bagel, beigel", "932": "pretzel", "933": "cheeseburger", "934": "hotdog, hot dog, red hot", "935": "mashed potato", "936": "head cabbage", "937": "broccoli", "938": "cauliflower", "939": "zucchini, courgette", "940": "spaghetti squash", "941": "acorn squash", "942": "butternut squash", "943": "cucumber, cuke", "944": "artichoke, globe artichoke", "945": "bell pepper", "946": "cardoon", "947": "mushroom", "948": "Granny Smith", "949": "strawberry", "950": "orange", "951": "lemon", "952": "fig", "953": "pineapple, ananas", "954": "banana", "955": "jackfruit, jak, jack", "956": "custard apple", "957": "pomegranate", "958": "hay", "959": "carbonara", "960": "chocolate sauce, chocolate syrup", "961": "dough", "962": "meat loaf, meatloaf", "963": "pizza, pizza pie", "964": "potpie", "965": "burrito", "966": "red wine", "967": "espresso", "968": "cup", "969": "eggnog", "970": "alp", "971": "bubble", "972": "cliff, drop, drop-off", "973": "coral reef", "974": "geyser", "975": "lakeside, lakeshore", "976": "promontory, headland, head, foreland", "977": "sandbar, sand bar", "978": "seashore, coast, seacoast, sea-coast", "979": "valley, vale", "980": "volcano", "981": "ballplayer, baseball player", "982": "groom, bridegroom", "983": "scuba diver", "984": "rapeseed", "985": "daisy", "986": "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", "987": "corn", "988": "acorn", "989": "hip, rose hip, rosehip", "990": "buckeye, horse chestnut, conker", "991": "coral fungus", "992": "agaric", "993": "gyromitra", "994": "stinkhorn, carrion fungus", "995": "earthstar", "996": "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa", "997": "bolete", "998": "ear, spike, capitulum", "999": "toilet tissue, toilet paper, bathroom tissue"}
predictions.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "class": "sea slug, nudibranch",
4
+ "probability": 0.17416588962078094
5
+ },
6
+ {
7
+ "class": "goldfish, Carassius auratus",
8
+ "probability": 0.17416588962078094
9
+ },
10
+ {
11
+ "class": "flatworm, platyhelminth",
12
+ "probability": 0.10024614632129669
13
+ },
14
+ {
15
+ "class": "conch",
16
+ "probability": 0.041422367095947266
17
+ },
18
+ {
19
+ "class": "hammerhead, hammerhead shark",
20
+ "probability": 0.032009851187467575
21
+ }
22
+ ]
sample_input.jpg ADDED