kaira.models.image.Yilmaz2023DeepJSCCNOMAModel

Inheritance diagram of Yilmaz2023DeepJSCCNOMAModel

Inheritance diagram for Yilmaz2023DeepJSCCNOMAModel

class kaira.models.image.Yilmaz2023DeepJSCCNOMAModel(channel: BaseChannel, power_constraint: BaseConstraint, encoder: Type[BaseModel] | BaseModel | None = None, decoder: Type[BaseModel] | BaseModel | None = None, num_devices: int = 2, M: float = 1.0, latent_dim: int = 16, shared_encoder: bool = False, shared_decoder: bool = False, use_perfect_sic: bool = False, use_device_embedding: bool | None = None, image_shape: Tuple[int, int] = (32, 32), csi_length: int = 1, ckpt_path: str | None = None, *args: Any, **kwargs: Any)[source]

Bases: MultipleAccessChannelModel

Distributed Deep Joint Source-Channel Coding over a Multiple Access Channel [Yilmaz et al., 2023].

This model implements the DeepJSCC-NOMA system from the paper by Yilmaz et al. (2023), which enables multiple devices to transmit jointly encoded data over a shared wireless channel using Non-Orthogonal Multiple Access (NOMA).

M

Channel bandwidth expansion/compression factor

latent_dim

Dimension of latent representation

use_perfect_sic

Whether to use perfect successive interference cancellation

use_device_embedding

Whether to use device embeddings

image_shape

Shape of the input images used for embedding

device_images

Embedding table for device-specific embeddings

Methods

__init__

Initialize the DeepJSCC-NOMA model.

forward

Forward pass through the DeepJSCC-NOMA model.

__init__(channel: BaseChannel, power_constraint: BaseConstraint, encoder: Type[BaseModel] | BaseModel | None = None, decoder: Type[BaseModel] | BaseModel | None = None, num_devices: int = 2, M: float = 1.0, latent_dim: int = 16, shared_encoder: bool = False, shared_decoder: bool = False, use_perfect_sic: bool = False, use_device_embedding: bool | None = None, image_shape: Tuple[int, int] = (32, 32), csi_length: int = 1, ckpt_path: str | None = None, *args: Any, **kwargs: Any)[source]

Initialize the DeepJSCC-NOMA model.

Parameters:
  • channel – Channel model for transmission

  • power_constraint – Power constraint to apply to transmitted signals

  • encoder – Encoder network class or constructor (default: Tung2022DeepJSCCQ2Encoder)

  • decoder – Decoder network class or constructor (default: Tung2022DeepJSCCQ2Decoder)

  • num_devices – Number of transmitting devices

  • M – Channel bandwidth expansion/compression factor

  • latent_dim – Dimension of latent representation

  • shared_encoder – Whether to use a shared encoder across devices

  • shared_decoder – Whether to use a shared decoder across devices

  • use_perfect_sic – Whether to use perfect successive interference cancellation

  • use_device_embedding – Whether to use device embeddings

  • image_shape – Shape of input images (height, width) for determining embedding dimensions

  • csi_length – The length of CSI (Channel State Information) vector

  • ckpt_path – Path to checkpoint file for loading pre-trained weights

  • *args – Variable positional arguments passed to the base class.

  • **kwargs – Variable keyword arguments passed to the base class.

forward(x: List[Tensor] | Tensor, *args: Any, **kwargs: Any) Tensor[source]

Forward pass through the DeepJSCC-NOMA model.

Parameters:
  • x – Input data. - If use_perfect_sic=True: A single tensor [batch_size, num_devices, channels, height, width]. - If use_perfect_sic=False: A list of tensors [batch_size, channels, height, width] for each device.

  • *args – Additional positional arguments passed to internal components.

  • **kwargs – Additional keyword arguments passed to internal components (e.g., csi).

Returns:

Reconstructed signals with shape [batch_size, num_devices, channels, height, width]