Home

Awesome

SPANPlus

This repository is not an official modernization of span. The main idea of ​​which is to clean the code from unused pieces of code, increase stability by removing rgb_mean and adding a more stable upsampler. Also, the number of spab blocks can now be changed

Training code from NeoSR

NameUpscalerblocksfeature_channels
spanplusDysample[4]48
spanplus-sDySample[2]32
spanplus-stsPixelShuffle[2]32
spanplus-stPixelShuffle[4]48

Detect:

def detect(state):
    n_feats = get_seq_len(state, "feats")-1
    blocks = [
        get_seq_len(state,f"feats.{n_feat+1}.block_n")
        for n_feat in range(n_feats)
    ]
    num_in_ch = state["feats.0.eval_conv.weight"].shape[1]
    feature_channels = state["feats.0.eval_conv.weight"].shape[0]
    if "upsampler.0.weight" in state:
        upsampler = "ps"
        num_out_ch = num_in_ch
        upscale = int((state["upsampler.0.weight"].shape[0] / num_in_ch) ** 0.5)
    else:
        upsampler = "dys"
        num_out_ch = state["upsampler.end_conv.weight"].shape[0]
        upscale = int((state["upsampler.offset.weight"].shape[0] // 8) ** 0.5)
    print(num_in_ch,
          num_out_ch,
          blocks,
          feature_channels,
          upscale,
          upsampler)

TODO: