StarNet Software

AI-powered software for star removal and noise reduction in astrophotography.

Documentation

This section collects technical notes and usage guides for StarNet and DeepSNR: command-line references, input behavior, data-quality guidance, and workflow examples.

This section currently contains basic documentation. More usage notes, examples, and workflow details will be added as the site grows.

CUDA acceleration setup instructions

StarNet2 and DeepSNR on Windows can use NVIDIA GPU acceleration through ONNX Runtime's CUDA execution provider. This is optional. The standard Windows packages work on CPU without CUDA, and fall back to CPU if CUDA is missing, incomplete, or incompatible.

GPU acceleration is not officially supported. This page only describes how manual CUDA acceleration can be enabled. If you replace runtime files or install CUDA/cuDNN components, you are responsible for that setup. These instructions will not work on every system and may break other applications.

GPU acceleration requires ORT-based StarNet2 and DeepSNR packages version 2.5.1 / 1.2.1 or newer. Earlier packages do not support this CUDA setup path.

What was confirmed

The setup below was confirmed with this Windows PixInsight environment:

Operating system
Windows 11.
GPU and driver
NVIDIA GeForce RTX 5090 with NVIDIA driver 591.86.
CUDA capability reported by nvidia-smi
13.1. This is driver capability, not the runtime version to install.
CUDA Toolkit
CUDA Toolkit 12.9.1; nvcc --version reported CUDA 12.9 / V12.9.86.
cuDNN
cuDNN 9.23.0 for CUDA 12.9.
ONNX Runtime GPU
ONNX Runtime GPU 1.26.0 for Windows x64.

Use CUDA 12.x for the current ONNX Runtime 1.26.0 GPU path. Do not use CUDA 13.x runtime DLLs with the current CUDA-12 ONNX Runtime GPU DLLs.

Confirmed successful PixInsight console output:

Backend: ONNX Runtime (CUDA execution provider)

Method 1: System-wide NVIDIA installer setup

This setup installs the NVIDIA driver, CUDA Toolkit, and cuDNN through normal system installers, then makes those runtime libraries visible to PixInsight through the Windows $PATH variable. The only files replaced inside PixInsight are the bundled ONNX Runtime DLLs.

1. Install NVIDIA driver

Install a current NVIDIA driver, then open a new PowerShell window and verify that the GPU is visible:

nvidia-smi

Expected: your NVIDIA GPU is listed. Example output:

NVIDIA-SMI 591.86
Driver Version: 591.86
CUDA Version: 13.1
GPU: NVIDIA GeForce RTX 5090

The CUDA Version printed by nvidia-smi is the maximum CUDA version supported by the installed driver. It does not mean the PixInsight module must use CUDA 13.x runtime DLLs.

2. Install CUDA Toolkit 12.9.1

Open the CUDA Toolkit archive and choose:

CUDA Toolkit 12.9.1 (June 2025)
Windows
x86_64
Windows 11
exe (local or network)

Install through the NVIDIA installer GUI. Then open a new PowerShell window and verify the toolkit:

nvcc --version

Expected output includes:

Cuda compilation tools, release 12.9, V12.9.86

Also verify Windows can find nvcc:

where.exe nvcc

Expected path:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\bin\nvcc.exe

3. Install cuDNN 9.23.0

From the cuDNN downloads page, install the Windows x86_64 build for CUDA 12.x:

cuDNN 9.x
CUDA 12.x
Windows
x86_64

These instructions were tested with cuDNN 9.23.0. After installation, add the CUDA 12.9 cuDNN folder to the Windows $PATH variable through the Windows environment-variable GUI:

C:\Program Files\NVIDIA\CUDNN\v9.23\bin\12.9\x64

Use the CUDA 12.9 cuDNN folder, not the CUDA 13.x folder. The cuDNN installer may also create this CUDA 13.3 folder, which should not be used for this ONNX Runtime 1.26.0 CUDA-12 setup:

C:\Program Files\NVIDIA\CUDNN\v9.23\bin\13.3\x64

Verify cuDNN in a new PowerShell window:

where.exe cudnn64_9.dllwhere.exe cudnn_ops64_9.dll

Expected output:

C:\Program Files\NVIDIA\CUDNN\v9.23\bin\12.9\x64\cudnn64_9.dll
C:\Program Files\NVIDIA\CUDNN\v9.23\bin\12.9\x64\cudnn_ops64_9.dll

Use where.exe, not where, in PowerShell. If the checks fail, confirm the current PowerShell process sees the CUDA and cuDNN paths:

$env:Path -split ';' | Select-String 'CUDNN|CUDA'

Expected entries include:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\bin
C:\Program Files\NVIDIA\CUDNN\v9.23\bin\12.9\x64

If the entries are missing, close PowerShell and open a new window. If they are still missing, re-check the Windows environment variable GUI.

4. Replace ONNX Runtime DLLs in PixInsight

Close PixInsight, then download and extract ONNX Runtime GPU 1.26.0 for Windows x64 from GitHub.

Back up the original ONNX Runtime libraries in the PixInsight bin folder before replacing them. The exact backup method is up to you.

From the extracted ONNX Runtime GPU lib folder, copy these files:

onnxruntime.dll
onnxruntime_providers_shared.dll
onnxruntime_providers_cuda.dll

into the PixInsight binary folder:

C:\Program Files\PixInsight\bin

Accept Windows administrator prompts if shown and replace the existing files. The important file that proves the GPU provider is available is onnxruntime_providers_cuda.dll.

5. Confirm in PixInsight

Start PixInsight normally and run StarNet2 or DeepSNR. Successful CUDA setup prints:

Backend: ONNX Runtime (CUDA execution provider)

If CUDA cannot initialize, the module continues on CPU and prints:

ONNX Runtime CUDA execution provider unavailable; using CPU.
Backend: ONNX Runtime (CPU execution provider)

The first run after installing the GPU runtime may take longer while ONNX Runtime and CUDA initialize. Subsequent runs should start normally.

Optional check: open Task Manager, switch to the Performance tab, select the NVIDIA GPU, and watch GPU activity during processing.

GPU utilization is not expected to stay near 100%, especially on powerful GPUs such as an RTX 5090, because image tiling and merge work still happen on CPU. The PixInsight console backend line is the primary confirmation.

Method 2: Self-contained DLL Overlay

This fallback setup avoids relying on the system $PATH variable by copying every required GPU runtime DLL directly into PixInsight's bin folder. This is not as clean because it puts many library files into the PixInsight installation directory, but it avoids global runtime-path changes and should not affect software outside PixInsight.

1. Install NVIDIA driver

Install a current NVIDIA driver, then open a new PowerShell window and verify that the GPU is visible:

nvidia-smi

Expected: your NVIDIA GPU is listed. Example output:

NVIDIA-SMI 591.86
Driver Version: 591.86
CUDA Version: 13.1
GPU: NVIDIA GeForce RTX 5090

The CUDA Version printed by nvidia-smi is the maximum CUDA version supported by the installed driver. It does not mean the PixInsight module must use CUDA 13.x runtime DLLs.

2. Replace ONNX Runtime DLLs in PixInsight

Close PixInsight, then download and extract ONNX Runtime GPU 1.26.0 for Windows x64 from GitHub.

Back up the original ONNX Runtime libraries in the PixInsight bin folder before replacing them. The exact backup method is up to you.

From the extracted ONNX Runtime GPU lib folder, copy these files:

onnxruntime.dll
onnxruntime_providers_shared.dll
onnxruntime_providers_cuda.dll

into the PixInsight binary folder:

C:\Program Files\PixInsight\bin

3. Copy CUDA and cuDNN runtime DLLs into PixInsight bin folder

Use the ONNX Runtime Python GPU package as a source for the CUDA 12.x and cuDNN 9.x runtime DLLs:

onnxruntime-gpu[cuda,cudnn]==1.26.0

Run this command in PowerShell to install the package into a temporary folder:

py -3 -m pip install --target "$env:TEMP\project-cosm-ortgpu-python" "onnxruntime-gpu[cuda,cudnn]==1.26.0"

Find the required DLLs under these directories:

%TEMP%\project-cosm-ortgpu-python\nvidia\cublas\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\cuda_nvrtc\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\cuda_runtime\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\cudnn\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\cufft\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\curand\bin
%TEMP%\project-cosm-ortgpu-python\nvidia\nvjitlink\bin

The tested dependency versions were:

nvidia-cublas-cu12       12.9.2.10
nvidia-cuda-nvrtc-cu12   12.9.86
nvidia-cuda-runtime-cu12 12.9.79
nvidia-cudnn-cu12        9.23.0.39
nvidia-cufft-cu12        11.4.1.4
nvidia-curand-cu12       10.3.10.19
nvidia-nvjitlink-cu12    12.9.86
onnxruntime-gpu          1.26.0

Copy these runtime DLLs into the same PixInsight binary folder:

cublas64_12.dll
cublasLt64_12.dll
cudart64_12.dll
cudnn64_9.dll
cudnn_adv64_9.dll
cudnn_cnn64_9.dll
cudnn_engines_precompiled64_9.dll
cudnn_engines_runtime_compiled64_9.dll
cudnn_engines_tensor_ir64_9.dll
cudnn_ext64_9.dll
cudnn_graph64_9.dll
cudnn_heuristic64_9.dll
cudnn_ops64_9.dll
cufft64_11.dll
cufftw64_11.dll
curand64_10.dll
nvJitLink_120_0.dll
nvrtc64_120_0.dll
nvrtc64_120_0.alt.dll
nvrtc-builtins64_129.dll

4. Confirm in PixInsight

Start PixInsight normally and run StarNet2 or DeepSNR. Successful CUDA setup prints:

Backend: ONNX Runtime (CUDA execution provider)

If CUDA cannot initialize, the module continues on CPU and prints:

ONNX Runtime CUDA execution provider unavailable; using CPU.
Backend: ONNX Runtime (CPU execution provider)

The first run after installing the GPU runtime may take longer while ONNX Runtime and CUDA initialize. Subsequent runs should start normally.

Optional check: open Task Manager, switch to the Performance tab, select the NVIDIA GPU, and watch GPU activity during processing.

GPU utilization is not expected to stay near 100%, especially on powerful GPUs such as an RTX 5090, because image tiling and merge work still happen on CPU. The PixInsight console backend line is the primary confirmation.