Model Card for YOLOX-X 640 (IB-Robot)

YOLOX-X (COCO, 640Γ—640) packaged for the IB-Robot framework. It is the person-detection front end of the HRI perception chain: it produces human bounding boxes that are handed to openEuler/pear_parameter_network for expressive 3D human parameter regression.

Repository Structure

  • inference_manifest.json β€” deployment routing (schema v3)
  • assets/adapter.json β€” adapter identity (yolox_person / detect)
  • assets/yolox_x.pth β€” original PyTorch checkpoint the OM was converted from
  • artifacts/ascend_310p/yolox_x_640_bs1.om β€” Ascend 310P1 OM (batch 1)

Deployment Backends

Target Backend Runtime Hardware
ascend_310p ascend ACL Ascend 310P1

Input: observation.image float32 [1,3,640,640] NCHW (images) Output: yolox.raw float32 [1,8400,85] (PartitionedCall_/head/Transpose_Transpose_29:0:output)

Output is undecoded head output

The exported graph ends at the head Transpose; it contains no grid/stride decode (no Exp/grid-add nodes). The 85 channels are:

0:4   cx, cy, w, h   (grid units, undecoded)
4     objectness
5:85  80 COCO class scores

Consumers must apply the decode themselves, per anchor level with stride 8/16/32:

cx = (raw_cx + grid_x) * stride
cy = (raw_cy + grid_y) * stride
w  = exp(raw_w) * stride
h  = exp(raw_h) * stride

then cxcywh β†’ xyxy, score = objectness Γ— class_conf, class-agnostic NMS (conf_thre=0.01, nms_thre=0.65), keep COCO person (class_id=0).

This differs from the PyTorch path, where YOLOXHead.decode_outputs runs inside model(x) because decode_in_inference=True; do not decode twice.

Preprocessing contract (yolox-rgb-letterbox640-v1)

ratio  = min(640/H, 640/W)
resize the source frame by ratio
paste it at the top-left of a 640Γ—640 canvas
pad value 114

Boxes are mapped back to source-image coordinates by dividing by ratio only β€” the letterbox has no centring offset β€” then clipped to the frame.

Source Model

This bundle's torch weights (assets/yolox_x.pth) are the upstream Megvii YOLOX-X COCO checkpoint, unmodified:

  • Weights: yolox_x.pth (release 0.1.1rc0)
  • yolox_x.pth β€” 793,463,373 bytes, sha256 5652330b6ae860043f091b8f550a60c10e1129f416edfdb65c259be6caf355cf

Source code

git clone https://github.com/Megvii-BaseDetection/YOLOX.git
git -C YOLOX checkout 6880e3999eb5cf83037e1818ee63d589384587bd

The export/validation environment used the inference-relevant subset of that commit (yolox/, exps/ and the root packaging files); the demo/, docs/, tools/, assets/ trees and the seven yolox/data/datasets/* training loaders were not copied. All 62 copied files were re-checked against the upstream tree at that commit and are byte-identical (git blob hashes match; no local patches).

The Ascend OM was converted from those weights via ONNX (yolox_x_640_bs1.onnx, sha256 8fc5c0159baea42463ea86d761754cd79605cb4ae95a3556beb3d59bb3aac390), with ATC --soc_version=Ascend310P1. The OM (yolox_x_640_bs1.om, sha256 8ac9a041e2eacb1a10a18098307d6bacefb74264d20cce91ac3e6cb6ebe77e4f) is not a re-trained model; upstream COCO accuracy (51.1 mAP val, 51.5 mAP test) applies to the source weights.

Validation

Board evidence recorded on a real Ascend 310P1 (npu-smi info SoC = Ascend310P1; Ascend310P3 is not a valid target for this device):

PyTorch / ONNX Runtime / ACL final detection count: 4 persons, identical
minimum IoU vs. reference:      0.998113
max final detection score diff: 0.001894
max final bbox diff:            0.225 px
model-stage latency:            mean ~19.000 ms, P95 ~19.667 ms, max ~20.064 ms

Latency is the model stage only; letterbox preprocessing, decode and NMS are additional host-side cost and must be budgeted separately.

In the validated HRI pipeline YOLOX runs every 5th frame (74 invocations over a 368-frame, 30 FPS clip) and the previous box is held on non-detection frames. Kalman/optical-flow box propagation, re-identification and quality-triggered re-detection are runtime work that is not part of this bundle.

Usage

Select the ascend_310p deployment through the IB-Robot unified inference runtime; the bundle is consumed as an external model bundle (it is not stored in the IB-Robot Git repository).

from inference_manifest import load_inference_manifest

validated = load_inference_manifest("models/yolox_x_640", "ascend_310p")

License

Code and packaging: Apache-2.0. The YOLOX weights are redistributed under the upstream Megvii YOLOX Apache-2.0 license.

Citation

@article{yolox2021,
  title   = {YOLOX: Exceeding YOLO Series in 2021},
  author  = {Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
  journal = {arXiv preprint arXiv:2107.08430},
  year    = {2021}
}
@software{ib_robot,
  title   = {IB-Robot: Intelligence Boom Robot},
  url     = {https://atomgit.com/openeuler/IB_Robot},
  license = {Apache-2.0}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for openEuler/yolox_x_640