# EvlBackboneOutput { #aria_nbv.vin.types.EvlBackboneOutput }
```python
vin.types.EvlBackboneOutput(
t_world_voxel,
voxel_extent,
voxel_feat=None,
occ_feat=None,
obb_feat=None,
occ_pr=None,
occ_input=None,
free_input=None,
counts=None,
counts_m=None,
voxel_select_t=None,
cent_pr=None,
bbox_pr=None,
clas_pr=None,
cent_pr_nms=None,
obbs_pr_nms=None,
obb_pred=None,
obb_pred_viz=None,
obb_pred_sem_id_to_name=None,
obb_pred_probs_full=None,
obb_pred_probs_full_viz=None,
pts_world=None,
feat2d_upsampled=dict(),
token2d=dict(),
)
```
EVL backbone features used by VIN.
## Attributes {.doc-section .doc-section-attributes}
| Name | Type | Description |
|-------------------------|--------------------------|---------------------------------------------------------------------------------------------------------------|
| t_world_voxel | PoseTW | ``PoseTW["B 12"]`` world←voxel pose for the voxel grid. |
| voxel_extent | Tensor | ``Tensor["6", float32]`` voxel grid extent in voxel frame ``[x_min,x_max,y_min,y_max,z_min,z_max]`` (meters). |
| voxel_feat | Tensor \| None | Optional ``Tensor["B F D H W", float32]`` raw voxel features from the 3D backbone. |
| occ_feat | Tensor \| None | Optional ``Tensor["B C D H W", float32]`` neck features for occupancy. |
| obb_feat | Tensor \| None | Optional ``Tensor["B C D H W", float32]`` neck features for OBB detection. |
| occ_pr | Tensor \| None | Optional ``Tensor["B 1 D H W", float32]`` EVL occupancy probability. |
| occ_input | Tensor \| None | Optional ``Tensor["B 1 D H W", float32]`` voxelized occupied evidence from input points. |
| free_input | Tensor \| None | Optional ``Tensor["B 1 D H W", float32]`` voxelized free-space evidence if provided by EVL. |
| counts | Tensor \| None | Optional ``Tensor["B D H W", int64]`` per-voxel observation counts. |
| counts_m | Tensor \| None | Optional ``Tensor["B D H W", int64]`` masked/debug variant of counts. |
| voxel_select_t | Tensor \| None | Optional ``Tensor["B 1", int64]`` frame index anchoring the voxel grid. |
| cent_pr | Tensor \| None | Optional ``Tensor["B 1 D H W", float32]`` centerness probabilities. |
| bbox_pr | Tensor \| None | Optional ``Tensor["B 7 D H W", float32]`` bounding box regressions. |
| clas_pr | Tensor \| None | Optional ``Tensor["B K D H W", float32]`` class probabilities. |
| cent_pr_nms | Tensor \| None | Optional ``Tensor["B 1 D H W", float32]`` centerness after NMS. |
| obbs_pr_nms | ObbTW \| None | Optional ``ObbTW["B M 34"]`` OBB predictions after NMS (voxel frame). |
| obb_pred | ObbTW \| None | Optional ``ObbTW["B M 34"]`` OBB predictions in snippet coordinates. |
| obb_pred_viz | ObbTW \| None | Optional ``ObbTW["B M 34"]`` visualization OBB predictions in snippet coordinates. |
| obb_pred_sem_id_to_name | dict\[int, str\] \| None | Optional sparse semantic id to class-name map aligned with EVL taxonomy. |
| obb_pred_probs_full | list\[Tensor\] \| None | Optional list of per-OBB class probability tensors. |
| obb_pred_probs_full_viz | list\[Tensor\] \| None | Optional list of per-OBB class probability tensors for visualization. |
| pts_world | Tensor \| None | Optional ``Tensor["B (D·H·W) 3", float32]`` world-space voxel centers. |
| feat2d_upsampled | dict\[str, Tensor\] | Per-stream 2D feature maps keyed by stream name. |
| token2d | dict\[str, Tensor\] | Per-stream 2D tokens keyed by stream name. |
## Methods
| Name | Description |
| --- | --- |
| [to_serializable](#aria_nbv.vin.types.EvlBackboneOutput.to_serializable) | Serialize this backbone output into a cache-friendly CPU payload. |
| [from_serializable](#aria_nbv.vin.types.EvlBackboneOutput.from_serializable) | Reconstruct one backbone output from a serialized payload. |
| [to](#aria_nbv.vin.types.EvlBackboneOutput.to) | Move all tensors to the specified device. |
### to_serializable { #aria_nbv.vin.types.EvlBackboneOutput.to_serializable }
```python
vin.types.EvlBackboneOutput.to_serializable(include_fields=None)
```
Serialize this backbone output into a cache-friendly CPU payload.
#### Parameters {.doc-section .doc-section-parameters}
| Name | Type | Description | Default |
|----------------|--------------------|-------------------------------------------------------------------------------------|-----------|
| include_fields | set\[str\] \| None | Optional dataclass field names to include. When omitted, all fields are serialized. | `None` |
#### Returns {.doc-section .doc-section-returns}
| Name | Type | Description |
|--------|---------------------|----------------------------------------------------------------|
| | dict\[str, object\] | CPU-only payload suitable for immutable offline-store records. |
### from_serializable { #aria_nbv.vin.types.EvlBackboneOutput.from_serializable }
```python
vin.types.EvlBackboneOutput.from_serializable(
payload,
*,
device,
include_fields=None,
)
```
Reconstruct one backbone output from a serialized payload.
#### Parameters {.doc-section .doc-section-parameters}
| Name | Type | Description | Default |
|----------------|---------------------|---------------------------------------------------|------------|
| payload | dict\[str, object\] | Serialized payload produced by `to_serializable`. | _required_ |
| device | torch.device | Destination device for tensors and wrappers. | _required_ |
| include_fields | set\[str\] \| None | Optional subset of fields to decode. | `None` |
#### Returns {.doc-section .doc-section-returns}
| Name | Type | Description |
|--------|-----------------------|--------------------------------|
| | \'EvlBackboneOutput\' | Reconstructed backbone output. |
### to { #aria_nbv.vin.types.EvlBackboneOutput.to }
```python
vin.types.EvlBackboneOutput.to(device)
```
Move all tensors to the specified device.