NOTE: The Jupyter Notebook below is included in the Chimera SDK and can be run interactively by running the following CLI command:
$ quadric sdk notebook
From the Jupyter Notebook window in your browser, select the notebook named /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3.ipynb.
YOLOv3 Object Detection on Chimera GPNPU
YOLOv3, from the Ultralytics line, is a single-stage detector with a Darknet-53 backbone and three detection scales. This notebook compiles the yolov3 variant end-to-end: download the pre-built backbone + head ONNX, quantize the backbone to INT8, compile with the Chimera Graph Compiler (CGC), and run ISS + ORT INT8 inferences side-by-side.
Why split the graph?
YOLOv3's head mixes anchor decoding and per-scale detection ops that are cheaper to keep on the host CPU; the backbone is a dense stack of convolutions that compiles to a clean GPNPU graph. The ONNX is pre-split at the three head-boundary edges — we feed the backbone to CGC and run the head through ORT on the host.
Note — split pipeline.
- On the Chimera GPNPU: the backbone
- On the host CPU: the detection head ONNX
The full pipeline can run end-to-end on the GPNPU — see
yolox_e2e_chipy.ipynborretina_net_e2e_chipy.ipynbfor examples that compose CCL custom ops with ChiPy to keep every stage on-chip.
1. Setup
Imports and per-run configuration. The S3 ONNX download, calibration dataset, input loading, and bounding-box visualization all live in yolov3_helpers.py.
import gc
import numpy as np
import onnx
from onnxruntime import InferenceSession
from PIL import Image
from sdk_cli.lib.inference import InferenceEngine, batch_inference
from sdk_cli.lib.quantize import QuantizedONNXModel, quantize_onnx_model
from sdk_cli.node_builtins.classical.yolo_postprocessing import (
boxes_detections,
get_postprocess_handle,
)
from sdk_cli.utils.models.yolo import YOLOModelVariant
from tvm.contrib.epu.chimera_job.chimera_job import ChimeraJob
from tvm.contrib.epu.chimera_job.hw_config import DEFAULT_32_ARRAY_SIZE, HWConfig
from yolov3_helpers import (
DEFAULT_IMAGE_PATHS,
INPUT_SIZE,
build_calibration_dataset,
display_detections,
download_model,
load_images,
)
%matplotlib inline
2. Model Selection
Ultralytics ships three YOLOv3 variants. We use yolov3 (the full, Darknet-53 backbone) below; yolov3_spp adds a Spatial Pyramid Pooling block to the head, and yolov3_tiny is the lightweight version with a smaller backbone and two detection scales instead of three.
| Variant | Size (px) | Params (M) | GFLOPs @640 |
|---|---|---|---|
| YOLOv3-tiny | 640 | 8.8 | 13.2 |
| YOLOv3 | 640 | 61.9 | 156.3 |
| YOLOv3-SPP | 640 | 62.9 | 156.6 |
3. Model Download
download_model() fetches the pre-built YOLOv3 backbone + head ONNX from the public sdk-cli-models S3 bucket. The backbone is the Darknet-53 convolutional stack; the head holds the anchor-decode + per-scale detection ops and runs on the host through ORT.
backbone_onnx_file, head_onnx_file = download_model()
Downloading yolov3-backbone.onnx ...
Backbone: yolov3-backbone.onnx (247.8 MB)
Downloading yolov3-head.onnx ...
Head: yolov3-head.onnx (4.4 MB)
4. Quantization
The backbone is quantized to INT8 with asymmetric activations using the COCO-like subset of QuadricCalibration for tensor-range statistics. The QuantizedONNXModel return value carries both the quantized ONNX and its companion .tranges file.
calibration_dataset = build_calibration_dataset(INPUT_SIZE)
quantized_onnx_model: QuantizedONNXModel = quantize_onnx_model(
backbone_onnx_file,
calibration_dataset,
asymmetric_activation=True,
)
print(f"Quantized ONNX: {quantized_onnx_model.model_path.name}")
print(f"Tensor ranges: {quantized_onnx_model.tensor_ranges_path.name}")
gc.collect()
2026-06-19 03:54 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:54 - DEBUG - sdk - quantize - Forcing node types: []
2026-06-19 03:54 - DEBUG - sdk - quantize - ONNX Node types excluded from quantization: ['Softmax', 'Sigmoid', 'QuadricCustomOp']
2026-06-19 03:54 - DEBUG - sdk - quantize - ONNX Node names excluded from quantization: ['/model/model.6/model.6.0/cv1/act/Mul', '/model/model.6/model.6.0/cv2/act/Mul', '/model/model.6/model.6.5/cv2/act/Mul', '/model/model.13/act/Sigmoid', '/model/model.27/model.27.1/cv1/act/Mul', '/model/model.10/model.10.0/cv1/act/Sigmoid', '/model/model.4/model.4.1/cv1/act/Sigmoid', '/model/model.11/cv2/act/Mul', '/model/model.27/model.27.0/cv2/act/Mul', '/model/model.8/model.8.2/cv1/act/Mul', '/model/model.0/act/Sigmoid', '/model/model.4/model.4.0/cv1/act/Mul', '/model/model.26/cv1/act/Mul', '/model/model.6/model.6.4/cv2/act/Mul', '/model/model.8/model.8.1/cv1/act/Mul', '/model/model.26/cv1/act/Sigmoid', '/model/model.7/act/Sigmoid', '/model/model.2/cv2/act/Mul', '/model/model.10/model.10.1/cv1/act/Sigmoid', '/model/model.20/cv2/act/Sigmoid', '/model/model.0/act/Mul', '/model/model.5/act/Mul', '/model/model.6/model.6.6/cv2/act/Sigmoid', '/model/model.8/model.8.2/cv1/act/Sigmoid', '/model/model.10/model.10.3/cv1/act/Mul', '/model/model.8/model.8.5/cv1/act/Mul', '/model/model.8/model.8.6/cv2/act/Mul', '/model/model.6/model.6.1/cv1/act/Sigmoid', '/model/model.6/model.6.2/cv2/act/Mul', '/model/model.11/cv1/act/Mul', '/model/model.1/act/Mul', '/model/model.6/model.6.1/cv2/act/Sigmoid', '/model/model.10/model.10.2/cv2/act/Mul', '/model/model.4/model.4.0/cv2/act/Mul', '/model/model.8/model.8.5/cv1/act/Sigmoid', '/model/model.9/act/Mul', '/model/model.6/model.6.2/cv2/act/Sigmoid', '/model/model.14/act/Sigmoid', '/model/model.20/cv2/act/Mul', '/model/model.6/model.6.6/cv1/act/Sigmoid', '/model/model.6/model.6.1/cv1/act/Mul', '/model/model.27/model.27.1/cv2/act/Sigmoid', '/model/model.27/model.27.1/cv2/act/Mul', '/model/model.6/model.6.3/cv1/act/Sigmoid', '/model/model.19/cv2/act/Sigmoid', '/model/model.4/model.4.0/cv1/act/Sigmoid', '/model/model.8/model.8.0/cv1/act/Sigmoid', '/model/model.4/model.4.1/cv2/act/Mul', '/model/model.6/model.6.3/cv1/act/Mul', '/model/model.8/model.8.5/cv2/act/Sigmoid', '/model/model.8/model.8.1/cv1/act/Sigmoid', '/model/model.6/model.6.7/cv1/act/Sigmoid', '/model/model.8/model.8.1/cv2/act/Mul', '/model/model.8/model.8.2/cv2/act/Mul', '/model/model.16/act/Mul', '/model/model.3/act/Mul', '/model/model.16/act/Sigmoid', '/model/model.23/act/Sigmoid', '/model/model.1/act/Sigmoid', '/model/model.8/model.8.7/cv2/act/Sigmoid', '/model/model.14/act/Mul', '/model/model.22/act/Sigmoid', '/model/model.2/cv1/act/Mul', '/model/model.7/act/Mul', '/model/model.6/model.6.4/cv2/act/Sigmoid', '/model/model.10/model.10.2/cv1/act/Sigmoid', '/model/model.26/cv2/act/Sigmoid', '/model/model.8/model.8.0/cv1/act/Mul', '/model/model.8/model.8.3/cv1/act/Mul', '/model/model.15/act/Mul', '/model/model.8/model.8.4/cv1/act/Mul', '/model/model.21/act/Mul', '/model/model.27/model.27.0/cv1/act/Mul', '/model/model.12/act/Sigmoid', '/model/model.10/model.10.1/cv1/act/Mul', '/model/model.23/act/Mul', '/model/model.10/model.10.0/cv2/act/Mul', '/model/model.8/model.8.3/cv2/act/Sigmoid', '/model/model.8/model.8.6/cv1/act/Mul', '/model/model.6/model.6.7/cv2/act/Sigmoid', '/model/model.4/model.4.1/cv2/act/Sigmoid', '/model/model.6/model.6.1/cv2/act/Mul', '/model/model.8/model.8.0/cv2/act/Mul', '/model/model.6/model.6.6/cv1/act/Mul', '/model/model.4/model.4.0/cv2/act/Sigmoid', '/model/model.6/model.6.0/cv2/act/Sigmoid', '/model/model.8/model.8.7/cv2/act/Mul', '/model/model.6/model.6.5/cv1/act/Mul', '/model/model.8/model.8.6/cv1/act/Sigmoid', '/model/model.6/model.6.6/cv2/act/Mul', '/model/model.6/model.6.3/cv2/act/Sigmoid', '/model/model.10/model.10.0/cv2/act/Sigmoid', '/model/model.6/model.6.3/cv2/act/Mul', '/model/model.10/model.10.1/cv2/act/Mul', '/model/model.19/cv1/act/Sigmoid', '/model/model.19/cv2/act/Mul', '/model/model.8/model.8.4/cv2/act/Mul', '/model/model.10/model.10.3/cv2/act/Mul', '/model/model.10/model.10.2/cv2/act/Sigmoid', '/model/model.6/model.6.2/cv1/act/Mul', '/model/model.8/model.8.2/cv2/act/Sigmoid', '/model/model.8/model.8.3/cv2/act/Mul', '/model/model.11/cv2/act/Sigmoid', '/model/model.8/model.8.6/cv2/act/Sigmoid', '/model/model.10/model.10.3/cv2/act/Sigmoid', '/model/model.11/cv1/act/Sigmoid', '/model/model.27/model.27.0/cv2/act/Sigmoid', '/model/model.4/model.4.1/cv1/act/Mul', '/model/model.2/cv1/act/Sigmoid', '/model/model.10/model.10.1/cv2/act/Sigmoid', '/model/model.10/model.10.3/cv1/act/Sigmoid', '/model/model.8/model.8.1/cv2/act/Sigmoid', '/model/model.6/model.6.7/cv1/act/Mul', '/model/model.6/model.6.2/cv1/act/Sigmoid', '/model/model.8/model.8.5/cv2/act/Mul', '/model/model.20/cv1/act/Mul', '/model/model.6/model.6.0/cv1/act/Sigmoid', '/model/model.9/act/Sigmoid', '/model/model.22/act/Mul', '/model/model.20/cv1/act/Sigmoid', '/model/model.27/model.27.1/cv1/act/Sigmoid', '/model/model.6/model.6.5/cv2/act/Sigmoid', '/model/model.3/act/Sigmoid', '/model/model.2/cv2/act/Sigmoid', '/model/model.10/model.10.0/cv1/act/Mul', '/model/model.19/cv1/act/Mul', '/model/model.8/model.8.3/cv1/act/Sigmoid', '/model/model.26/cv2/act/Mul', '/model/model.8/model.8.4/cv2/act/Sigmoid', '/model/model.21/act/Sigmoid', '/model/model.8/model.8.7/cv1/act/Sigmoid', '/model/model.15/act/Sigmoid', '/model/model.6/model.6.5/cv1/act/Sigmoid', '/model/model.10/model.10.2/cv1/act/Mul', '/model/model.8/model.8.7/cv1/act/Mul', '/model/model.6/model.6.4/cv1/act/Mul', '/model/model.6/model.6.7/cv2/act/Mul', '/model/model.5/act/Sigmoid', '/model/model.8/model.8.0/cv2/act/Sigmoid', '/model/model.8/model.8.4/cv1/act/Sigmoid', '/model/model.27/model.27.0/cv1/act/Sigmoid', '/model/model.6/model.6.4/cv1/act/Sigmoid', '/model/model.13/act/Mul', '/model/model.12/act/Mul']
2026-06-19 03:54 - INFO - sdk - quantize - Starting quantization...
WARNING:root:Please use QuantFormat.QDQ for activation type QInt8 and weight type QInt8. Or it will lead to bad performance on x64.
2026-06-19 03:54 - INFO - sdk - quantize - Quantization completed! Quantized model saved to /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q.onnx
2026-06-19 03:54 - INFO - sdk - quantize - ONNX full precision model size: 236.29MB
2026-06-19 03:54 - INFO - sdk - quantize - ONNX quantized model size: 59.3MB
2026-06-19 03:54 - INFO - sdk - quantize - ONNX model shapes inferred.
2026-06-19 03:54 - INFO - sdk - quantize - ONNX Model with well-defined shapes has been saved at `/quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx`.
2026-06-19 03:54 - DEBUG - sdk - quantize - Checking for FLOAT/FLOAT16 types...
2026-06-19 03:54 - INFO - sdk - quantize - Checking for remaining FLOAT/FLOAT16 types.
2026-06-19 03:54 - INFO - sdk - quantize - Model still has FLOAT/FLOAT16 types after quantization. Creating ranges for floating point tensors using calibration data...
2026-06-19 03:54 - INFO - sdk - quantize - Saved computed tensor ranges to /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges.
2026-06-19 03:54 - INFO - sdk - quantize -
╒════════════════════════════════════════════════════════════════════════════════════════════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Quantized ONNX Model │ Tensor Ranges File │
╞════════════════════════════════════════════════════════════════════════════════════════════════════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════╡
│ /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx │ /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges │
╘════════════════════════════════════════════════════════════════════════════════════════════════════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════════╛
Quantized ONNX: yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx
Tensor ranges: yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.tranges
1875
5. Compilation
ChimeraJob wraps the full compile pipeline: graph analyze, kernel selection, memory planning, and code generation.
hw_config = DEFAULT_32_ARRAY_SIZE
cgc_job = ChimeraJob(
model_p=str(quantized_onnx_model.model_path),
**hw_config.to_dict(),
)
cgc_job.compile(quiet=True)
/tmp/ipykernel_2673/657128748.py:3: DeprecationWarning: Specifying hardware configuration through individual parameters is deprecated. Please use hw_config parameter instead. Example: hw_cfg = HWConfig(product='QC-U', ocm_size='16MB'); ChimeraJob('model.onnx', hw_config=hw_cfg)
cgc_job = ChimeraJob(
6. Inference
batch_inference runs the compiled backbone against multiple images in parallel — once through ORT INT8 (reference) and once through ISS INT8 (the Chimera GPNPU's cycle-accurate simulator). Both drive the same head ONNX on the host for the classical tail.
all_image_paths, all_images = load_images(INPUT_SIZE, DEFAULT_IMAGE_PATHS)
num_images = len(all_images)
engines = {
InferenceEngine.CHIMERA_ORT_INT8: cgc_job,
InferenceEngine.CHIMERA_ISS_INT8: cgc_job,
}
head_session = InferenceSession(onnx.load(str(head_onnx_file)).SerializeToString())
outputs_per_engine = {}
threads = min(num_images, 6)
for engine, job in engines.items():
outputs_per_engine[engine] = batch_inference(
engine, job, all_images, head_session=head_session, threads=threads
)
2026-06-19 03:58 - WARNING - epu - chimera_job - ORT is not threadsafe -- forcing single threaded batch execution
100%|████████████████████████████████████████████| 3/3 [00:04<00:00, 1.34s/it]
Processing: 100%|███████████████████████████████| 3/3 [06:45<00:00, 135.12s/it]
7. Run Statistics
plot_run_statistics() renders the per-kernel cycle breakdown for the compiled backbone — useful for spotting hot kernels when tuning the target configuration.
print(cgc_job)
cgc_job.plot_run_statistics()
╒═════════════════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════╕
│ Module Name │ yolov3_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1 │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ONNX File │ /quadric/sdk-cli/examples/models/yolo/yolov3/yolov3-backbone_OpSet16_optimized_asym_int8_q_shaped.onnx │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Product Target │ QC-U │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Number of Cores │ 1 │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ISS Clock Frequency │ 1.700 │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ L2M Size │ 16MB │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ LRM Size │ 4kB │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Read BW │ 128GBps │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ External Write BW │ 128GBps │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ MACS per PE │ 16 │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max L2M │ 15.693MB │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max LRM │ 3.000kB │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Max Temp Ext Bytes │ 12.500MB │
├─────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Network GMACs │ 77.946 │
╘═════════════════════╧════════════════════════════════════════════════════════════════════════════════════════════════════════╛
╒════╤════════╤═══════════════════════════════════╤══════════════════╤══════════════════════════╤═══════╕
│ │ Type │ Name │ shape │ type │ mse │
╞════╪════════╪═══════════════════════════════════╪══════════════════╪══════════════════════════╪═══════╡
│ 0 │ Input │ inputs0 │ [1, 3, 640, 640] │ tensor[FixedPoint32<27>] │ n/a │
├────┼────────┼───────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│ 1 │ Output │ /model/model.28/m.0/Conv_output_0 │ [1, 255, 80, 80] │ tensor[FixedPoint32<26>] │ 0.019 │
├────┼────────┼───────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│ 2 │ Output │ /model/model.28/m.1/Conv_output_0 │ [1, 255, 40, 40] │ tensor[FixedPoint32<26>] │ 0.015 │
├────┼────────┼───────────────────────────────────┼──────────────────┼──────────────────────────┼───────┤
│ 3 │ Output │ /model/model.28/m.2/Conv_output_0 │ [1, 255, 20, 20] │ tensor[FixedPoint32<26>] │ 0.010 │
╘════╧════════╧═══════════════════════════════════╧══════════════════╧══════════════════════════╧═══════╛
Post-ISS Report 1.7 GHz ***
Fully placed-and-routed gate simulation:
╒══════════════════════════════════╤═════════╕
│ Latency (ms) │ 7.73 │
├──────────────────────────────────┼─────────┤
│ FPS │ 129.41 │
├──────────────────────────────────┼─────────┤
│ Average Power @ 3nm SSGNP (mW) │ 2034.09 │
├──────────────────────────────────┼─────────┤
│ FPS per Watt @ 3nm SSGNP (FPS/W) │ 63.62 │
├──────────────────────────────────┼─────────┤
│ Ext Rd Bytes (MB) │ 78.59 │
├──────────────────────────────────┼─────────┤
│ Ext Wr Bytes (MB) │ 20.67 │
├──────────────────────────────────┼─────────┤
│ Avg Ext Rd BW (GBps) │ 9.93 │
├──────────────────────────────────┼─────────┤
│ Avg Ext Wr BW (GBps) │ 2.61 │
├──────────────────────────────────┼─────────┤
│ MAC Utilization │ 36.22% │
╘══════════════════════════════════╧═════════╛
*** Data generated using 7nm SSGNP gatesim and scaled to 3nm
[SDK-CLI] : TotalCycles: 13,136,594
[SDK-CLI] : Executions/second: 129.41
compute : ▇▇▇▇▇▇ 1.321M
data_array : ▇▇▇▇▇ 1.033M
mac : ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 10.039M
data_external: ▇ 263.707K
data_ocm : ▇▇ 476.501K
for more information check run directory: /quadric/sdk-cli/examples/models/yolo/yolov3/ccl_build/yolov3_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_035858_2c9557
2026-06-19 04:05 - INFO - epu - chimera_job - Combined plots generated and saved to:
/quadric/sdk-cli/examples/models/yolo/yolov3/ccl_build/yolov3_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_035858_2c9557/data/yolov3_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1.combined.png
'/quadric/sdk-cli/examples/models/yolo/yolov3/ccl_build/yolov3_backbone_OpSet16_optimized_asym_int8_q_shaped_QC_U_1d7_16MB_4kB_128GBps_128GBps_16_OFF_x1_x1/run/20260619_035858_2c9557/data'

Decode the network outputs and overlay the detections on the input image.
postprocess_handle = get_postprocess_handle(YOLOModelVariant.YOLOv5)
detections_per_engine = {}
for engine, all_outputs in outputs_per_engine.items():
detections_per_engine[engine] = [
boxes_detections(
postprocess_handle,
np.array(Image.open(path)),
outputs,
INPUT_SIZE,
)[0]
for outputs, path in zip(all_outputs, all_image_paths)
]
display_detections(all_image_paths, detections_per_engine)



Summary
| Model | YOLOv3 (COCO, 640×640, 61.9M params, 156.3 GFLOPs) |
| Pipeline | ONNX download (pre-split) → quantize (INT8 asymmetric) → CGC compile → ISS + ORT inference → YOLOv3 NMS → bbox overlay |
| Compiled on GPNPU | Darknet-53 backbone |
| On host CPU | YOLOv3 head ONNX, classical NMS, bounding-box visualization |
| Calibration | QuadricCalibration COCO-like subset |
Key takeaways
- Splitting the ONNX at the head boundary keeps CGC focused on GPNPU-friendly convolutional ops while the anchor-decode + NMS tail runs on the host.
- The SDK exposes the same
ChimeraJobhandle to bothCHIMERA_ORT_INT8(ONNX Runtime reference) andCHIMERA_ISS_INT8(ISS), making side-by-side validation a one-dict change. - Asymmetric INT8 quantization on a COCO-like calibration subset preserves detection quality at the default YOLOv3 score threshold.
Citation
@article{redmon2018yolov3,
title = {YOLOv3: An Incremental Improvement},
author = {Redmon, Joseph and Farhadi, Ali},
journal = {arXiv preprint arXiv:1804.02767},
year = {2018}
}