anan19990108/yolov10n-tflite
YOLOv10n TFLite quantized variants
Three 640×640 TensorFlow Lite exports for edge object-detection experiments. The files use different boundary dtypes even though all contain quantized tensors.
Only yolov10n_full_integer_quant.tflite uses INT8 input and output tensors. The other two artifacts expose FP32 input and output boundaries. Applications must select preprocessing and post-processing according to the tensor metadata of the chosen artifact.
Authorship and Scope
Andrew Chiao prepared the TensorFlow Lite conversion and quantization variants, deployment packaging, tensor-level verification, and Qualcomm deployment guidance. The original checkpoint provenance has not yet been recovered, so the base-model metadata is intentionally omitted rather than inferred.
Files verified on 2026-08-18
Each output contains up to 300 rows with 6 values. Consumers must verify the exact coordinate, score, and class-id convention used by the originating export pipeline.
Python Usage: Full-Integer Model
import numpy as np
from PIL import Image
import tensorflow as tf
interpreter = tf.lite.Interpreter("yolov10n_full_integer_quant.tflite")
interpreter.allocate_tensors()
inp = interpreter.get_input_details()[0]
out = interpreter.get_output_details()[0]
rgb = Image.open("image.jpg").convert("RGB").resize((640, 640))
real = np.asarray(rgb, dtype=np.float32)[None] / 255.0
in_scale, in_zero = inp["quantization"]
input_int8 = np.clip(np.rint(real / in_scale + in_zero), -128, 127).astype(np.int8)
interpreter.set_tensor(inp["index"], input_int8)
interpreter.invoke()
raw = interpreter.get_tensor(out["index"])
out_scale, out_zero = out["quantization"]
detections = (raw.astype(np.float32) - out_zero) * out_scale
print(detections.shape) # (1, 300, 6)The expected row layout is typically [x1, y1, x2, y2, score, class_id], but the missing original export manifest means this convention must be confirmed with a known test image before production use.
Android + Qualcomm QNN HTP
QnnDelegate.Options qnn = new QnnDelegate.Options();
qnn.setSkelLibraryDir(context.getApplicationInfo().nativeLibraryDir);
qnn.setCacheDir(context.getCacheDir().getAbsolutePath());
qnn.setModelToken("yolov10n_full_integer_quant");
qnn.setBackendType(QnnDelegate.Options.BackendType.HTP_BACKEND);
qnn.setHtpPerformanceMode(
QnnDelegate.Options.HtpPerformanceMode.HTP_PERFORMANCE_BURST);
qnn.setHtpPrecision(QnnDelegate.Options.HtpPrecision.HTP_PRECISION_QUANTIZED);
QnnDelegate delegate = new QnnDelegate(qnn);
Interpreter.Options options = new Interpreter.Options();
options.setUseNNAPI(false);
options.setUseXNNPACK(false);
options.addDelegate(delegate);
Interpreter interpreter = new Interpreter(modelBuffer, options);Use matching QNN delegate/runtime versions from an authorized Qualcomm SDK, check HTP_RUNTIME_QUANTIZED, and verify there is no unintended CPU fallback.
Provenance note
The previous model card tagged Ultralytics/YOLO11 as the base model while the repository and files are named YOLOv10n. The TFLite binaries do not contain enough embedded text metadata to resolve that discrepancy. The base-model tag is therefore intentionally omitted until the original checkpoint and export command are recovered.
Verification status
Tensor shapes, dtypes, quantization parameters, sizes, and hashes were checked with TensorFlow Lite. No accuracy or device-latency benchmark is included, so the card does not claim validation on a specific Qualcomm target.
License
The official THU-MIG YOLOv10 repository uses AGPL-3.0. Confirm the original checkpoint provenance before relying on this license statement for these specific binaries.
