Stop taking turns
The usual way to share a channel is to take turns. With time division (TDMA), each user gets its own time slot, so the signals never overlap. DeepJSCC (deep joint source-channel coding) is a neural network that maps an image directly to channel symbols. With two users, each one gets half of the channel.
DeepJSCC-PNOMA lets every user transmit at the same time over the whole band. Their signals add up in the air and interfere. Instead of avoiding this interference, the model learns to use it.
Abstract
We consider multiple transmitters aiming to communicate their source signals (e.g., images) over a multiple access channel (MAC). Conventional communication systems minimize interference by orthogonally allocating resources (time and/or bandwidth) among users, which limits their capacity. We introduce a machine learning (ML)-aided wireless image transmission method that merges compression and channel coding using a multi-view autoencoder, which allows the transmitters to use all the available channel resources simultaneously, resulting in a non-orthogonal multiple access (NOMA) scheme. The receiver must recover all the images from the received superposed signal, while also associating each image with its transmitter. Traditional ML models deal with individual samples, whereas our model allows signals from different users to interfere in order to leverage gains from NOMA under limited bandwidth and power constraints. We introduce a progressive fine-tuning algorithm that doubles the number of users at each iteration, maintaining initial performance with orthogonalized user-specific projections, which is then improved through fine-tuning steps. Remarkably, our method supports up to 64 users with potential for further scaling, with only a 2.4% increase in the number of trainable parameters compared to a single-user model, significantly enhancing recovered image quality and outperforming existing NOMA-based methods over a wide range of datasets, metrics, and channel conditions. Our approach paves the way for more efficient and robust multi-user communication systems, leveraging innovative ML components and strategies.
One encoder, one decoder, one projection per user
All users run the same encoder. Each user multiplies its encoded signal by its own projection matrix Pi before it transmits. The receiver gets the sum of all signals plus noise. For each user, it applies a matching projection P′i and runs the shared decoder. Thus it recovers every image and knows which user sent it.
The idea comes from code division (CDMA), where each user spreads its signal with its own code. Here the codes are not fixed chip sequences. They are learned together with the encoder and the decoder.
Double the users, one stage at a time
Many users that interfere from the first step are hard to train. So training starts from a single-user model and doubles the number of users at each stage. Every user's projection splits into two orthogonal projections, made with a QR factorization. At the start of a stage the new users do not interfere, so the model performs as well as before. Fine-tuning then teaches it to use the interference.
Pick a training stage to see how many users share the band:
- Users
- 64
- Trainable parameters
- 22,673,299
- Extra parameters vs. 1 user
- +2.37%
Parameter counts at ρ = 1/12 from Table III of the paper. A separate encoder and decoder for each user would grow linearly instead: 16 users would need 354,416,944 parameters.
Better images for everyone on the band
Every method gets the same power and the same bandwidth per user, written as the bandwidth ratio ρ. Image quality is measured in PSNR (peak signal-to-noise ratio, higher is better) at each channel SNR.
DeepJSCC-PNOMA beats DeepJSCC with time division and the digital schemes that pair an image codec with an LDPC channel code. This holds on CIFAR-10 and TinyImageNet, over AWGN and Rayleigh fading channels.
More users on the band means better images for each of them, at the same per-user power and bandwidth.
Up to 64 users
PSNR in dB on CIFAR-10 over an AWGN channel. Quality holds from 16 to 64 users.
| ρ | Users | 0 dB | 3 dB | 7 dB | 10 dB |
|---|---|---|---|---|---|
| 1/6 | 16 | 25.96 | 28.37 | 31.28 | 33.27 |
| 32 | 26.03 | 28.42 | 31.33 | 33.32 | |
| 64 | 26.05 | 28.46 | 31.34 | 33.29 | |
| 1/12 | 16 | 23.04 | 25.07 | 27.49 | 29.03 |
| 32 | 23.18 | 25.18 | 27.57 | 29.08 | |
| 64 | 23.20 | 25.19 | 27.53 | 28.98 |
Table IVScalability on CIFAR-10, AWGN channel. Bold: best value in each bandwidth group.
What the images look like
Crops from two Kodak images (512×768). The number is the PSNR of the full image.










Train it yourself
The repository has the training and evaluation code, the configurations, the commands we used for the experiments in the paper, and the notebooks for the figures.
git clone https://github.com/ipc-lab/deepjscc-pnoma.git
cd deepjscc-pnoma
pip install -r requirements.txt
cd src
python train.py data.name=CIFAR10 model=deepjscc_q2 model.bw_factor=6 \
model.csi.min=0 model.csi.max=20 model.snr=undefined
Cite this paper
@article{yilmaz2026learning,
title = {Learning to Interfere in Non-Orthogonal Multiple-Access Joint Source-Channel Coding},
author = {Yilmaz, Selim F. and Karamanl{\i}, Can and G{\"u}nd{\"u}z, Deniz},
journal = {IEEE Transactions on Wireless Communications},
volume = {25},
pages = {16859--16873},
year = {2026},
doi = {10.1109/TWC.2026.3688951}
}

