# Is it impractical for me to run a YOLO11n quantization model on an ESP32S3?

**URL:** <https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628>\
**Category:** Discussion\
**Tags:** discussion, question, yolo11\
**Created:** [November 8, 2025, 4:06pm UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628 "2025-11-08T16:06:13Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Z.Y\_W](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/z.y_w/32/1047_2.png) [@Z.Y\_W](https://community.ultralytics.com/u/Z.Y_W)\
**Post date:** [November 8, 2025, 4:06pm UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/1 "2025-11-08T16:06:13Z")

</div>

Using ESP-IDF 5.3, `espressif/esp-tflite-micro: "^1.3.4", ESP32S3 (16MB FLASH/8MB PSRAM)`, without a file system, I directly burned the `tflite` file exported from YOLO11N training and quantization to the model partition of the partition table. I then used `esp_partition_read` to read the model and simulate the generation of a static image for inference. Model information: Number of subgraphs: 1

ESP-IDF5.3, espressif/esp-tflite-micro: “^1.3.4”，ESP32S3(16MB FLASH/8MB PSRAM)，无文件系统，我把YOLO11N训练并量化导出的tflite文件直接烧录到分区表model分区，通过esp\_partition\_read读取模型并模拟生成一张静态图像做推断，模型信息：Number of subgraphs: 1  
Number of tensors: 817  
Number of operators: 413，结果基本正确，然而非常耗时，TENSORFLOW计算耗时： 13365554 us，是我的思路问题，还是说这个模型过于复杂无法运行在ESP32S3呢

---

<div class="post-metadata">

**Author:** ![Toxite](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/toxite/32/123_2.png) [@Toxite](https://community.ultralytics.com/u/Toxite)\
**Post date:** [November 8, 2025, 4:14pm UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/2 "2025-11-08T16:14:53Z")

</div>

Which file did you use aftwr quantization? Did you use `full_integer_quant` file?

---

<div class="post-metadata">

**Author:** ![Z.Y\_W](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/z.y_w/32/1047_2.png) [@Z.Y\_W](https://community.ultralytics.com/u/Z.Y_W)\
**Post date:** [November 8, 2025, 11:58pm UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/3 "2025-11-08T23:58:10Z")

</div>

没有用full\_integer\_quant，我是把saved\_model.pb用tf.lite.TFLiteConverter.from\_saved\_model(model\_path)量化并转换uint8格式

---

<div class="post-metadata">

**Author:** ![Toxite](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/toxite/32/123_2.png) [@Toxite](https://community.ultralytics.com/u/Toxite)\
**Post date:** [November 9, 2025, 3:58am UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/4 "2025-11-09T03:58:11Z")

</div>

Use `full_integer_quant` generated by Ultralytics

---

<div class="post-metadata">

**Author:** ![Z.Y\_W](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/z.y_w/32/1047_2.png) [@Z.Y\_W](https://community.ultralytics.com/u/Z.Y_W)\
**Post date:** [November 9, 2025, 8:10am UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/5 "2025-11-09T08:10:04Z")

</div>

thinks! I’ll give it a try. The main reason I didn’t use the `full_integer_quant.tflite` at first was that it couldn’t be exported in the uint format.

---

<div class="post-metadata">

**Author:** ![pderrenger](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/pderrenger/32/73_2.png) [@pderrenger](https://community.ultralytics.com/u/pderrenger)\
**Post date:** [November 10, 2025, 12:45am UTC](https://community.ultralytics.com/t/is-it-impractical-for-me-to-run-a-yolo11n-quantization-model-on-an-esp32s3/1628/6 "2025-11-10T00:45:49Z")

</div>

Great question. Two key points:

1. TFLite Micro prefers int8, not uint8. Ultralytics `full_integer_quant` is int8 by design (weights, activations, and I/O). You can feed your uint8 image by applying the tensor’s quant params (scale/zero\_point, typically zero\_point≈128) and casting to int8 on-device.

2. Export the MCU-friendly model directly from Ultralytics with INT8 calibration and a much smaller, fixed input size:

```python
from ultralytics import YOLO
YOLO("yolo11n.pt").export(format="tflite", int8=True, imgsz=160, nms=False, data="your_dataset.yaml")

```

This produces `yolo11n_full_integer_quant.tflite`. Details are in the TFLite export guide at the Ultralytics docs.

That said, YOLO11n is still heavy for ESP32S3; ~13 s/inference is expected. To squeeze more speed: keep imgsz at 128–160, build `esp-tflite-micro` with esp-nn optimized kernels enabled, and use a Release/O3 build. Real-time typically requires an accelerator or a stronger edge device; for example, see our Coral Edge TPU on Raspberry Pi guide for a practical path to realtime.
