Papers › Pixel-level and Semantic-level Adjustable Super-resolution: A Dual-LoRA Approach

Pixel-level and Semantic-level Adjustable Super-resolution: A Dual-LoRA Approach

4 Dec 2024CVPR 2025 1arXiv:2412.03017archive 2025-07-28

Lingchen Sun, Rongyuan Wu, Zhiyuan Ma, Shuaizheng Liu, Qiaosi Yi, Lei Zhang

Diffusion prior-based methods have shown impressive results in real-world image super-resolution (SR). However, most existing methods entangle pixel-level and semantic-level SR objectives in the training process, struggling to balance pixel-wise fidelity and perceptual quality. Meanwhile, users have varying preferences on SR results, thus it is demanded to develop an adjustable SR model that can be tailored to different fidelity-perception preferences during inference without re-training. We present Pixel-level and Semantic-level Adjustable SR (PiSA-SR), which learns two LoRA modules upon the pre-trained stable-diffusion (SD) model to achieve improved and adjustable SR results. We first formulate the SD-based SR problem as learning the residual between the low-quality input and the high-quality output, then show that the learning objective can be decoupled into two distinct LoRA weight spaces: one is characterized by the ℓ₂-loss for pixel-level regression, and another is characterized by the LPIPS and classifier score distillation losses to extract semantic information from pre-trained classification and SD models. In its default setting, PiSA-SR can be performed in a single diffusion step, achieving leading real-world SR results in both quality and efficiency. By introducing two adjustable guidance scales on the two LoRA modules to control the strengths of pixel-wise fidelity and semantic-level details during inference, PiSASR can offer flexible SR results according to user preference without re-training. Codes and models can be found at https://github.com/csslc/PiSA-SR.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2412.03017")

Code

Syntology Ran 9 of 24 code samples harvested from 2 repositories linked to this paper; 15 have no recorded run. Of those that ran: 2 ran · honoured contract; 1 ran · violated contract; 5 ran · our draft was wrong; 1 ran · fixture could not drive it.

By repository: official repository: 11 samples from 1 repository, 4 ran; community (archive-listed): 13 samples from 1 repository, 5 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

csslc/pisa-sr officialmentioned in papermentioned on GitHubpytorch report
cswry/osediff mentioned on GitHubpytorchApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

24 samples harvested; 9 ran; 2 honoured the contract we drafted; 15 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

2ran · honoured contract
1ran · violated contract
5ran · our draft was wrong
1ran · fixture could not drive it
15unverified

Licence: 11 of the 24 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 2 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

window_partition csslc/pisa-sr/ram/models/swin_transformer.py official repository ran · fixture could not drive it fingerprinted no licence file found · pointer only · 144d10b49baeb8a6 · report
is_url csslc/pisa-sr/ram/models/utils.py official repository ran · violated contract no licence file found · pointer only · 4d1d9c47619920ba · report
read_json csslc/pisa-sr/ram/models/utils.py official repository ran · our draft was wrong no licence file found · pointer only · e1cf6464da33ec0c · report
window_reverse csslc/pisa-sr/ram/models/swin_transformer.py official repository ran · our draft was wrong no licence file found · pointer only · 61bf152e6a42a184 · report
create_vit csslc/pisa-sr/ram/models/utils.py official repository unverified no licence file found · pointer only · f837c334ddfa8af4 · report
find_filepath csslc/pisa-sr/pisasr.py official repository unverified no licence file found · pointer only · 6145c0b4a5012336 · report
inference_ram csslc/pisa-sr/ram/inference.py official repository unverified no licence file found · pointer only · 7ea931fd6b54f5cf · report
inference_ram_openset csslc/pisa-sr/ram/inference.py official repository unverified no licence file found · pointer only · cc4cd40ee7f7cce8 · report
inference_tag2text csslc/pisa-sr/ram/inference.py official repository unverified no licence file found · pointer only · 3d89c9c107a089ad · report
interpolate_relative_pos_embed csslc/pisa-sr/ram/models/swin_transformer.py official repository unverified no licence file found · pointer only · 199b2766250bd139 · report
read_yaml csslc/pisa-sr/pisasr.py official repository unverified no licence file found · pointer only · 4fb85a5d5907d6dd · report
parse_float_list cswry/osediff/train_osediff.py community (archive-listed) ran · honoured contract Apache-2.0 (permissive) · 8bc0bbc72282d3f8 · report
parse_int_list cswry/osediff/train_osediff.py community (archive-listed) ran · honoured contract Apache-2.0 (permissive) · b2d5ad9f0fef3e14 · report
calc_mean_std cswry/osediff/my_utils/wavelet_color_fix.py community (archive-listed) ran · our draft was wrong fingerprinted Apache-2.0 (permissive) · 4c8c3d07d7aa35cb · report
inplace_nonlinearity cswry/osediff/my_utils/vaehook.py community (archive-listed) ran · our draft was wrong fingerprinted Apache-2.0 (permissive) · 76a017e88938061d · report
parse_str_list cswry/osediff/train_osediff.py community (archive-listed) ran · our draft was wrong fingerprinted Apache-2.0 (permissive) · fa3b3cc4f07c4a0f · report
adain_color_fix cswry/osediff/my_utils/wavelet_color_fix.py community (archive-listed) unverified Apache-2.0 (permissive) · d9c806cdedc044ef · report
attn_forward cswry/osediff/my_utils/vaehook.py community (archive-listed) unverified Apache-2.0 (permissive) · 174fab602409ffc2 · report
attn_forward_new cswry/osediff/my_utils/vaehook.py community (archive-listed) unverified Apache-2.0 (permissive) · 08822a10826682a0 · report
cond_cast_float cswry/osediff/my_utils/devices.py community (archive-listed) unverified Apache-2.0 (permissive) · a1316b96fc0dc988 · report
cond_cast_unet cswry/osediff/my_utils/devices.py community (archive-listed) unverified Apache-2.0 (permissive) · 6e1abd17fa1ce3b2 · report
get_device_for cswry/osediff/my_utils/devices.py community (archive-listed) unverified Apache-2.0 (permissive) · a861df384ac42eeb · report
opt_parse cswry/osediff/dataloaders/codeformer.py community (archive-listed) unverified Apache-2.0 (permissive) · fce64ea4638101fc · report
wavelet_color_fix cswry/osediff/my_utils/wavelet_color_fix.py community (archive-listed) unverified Apache-2.0 (permissive) · 2353cdd05b03300f · report

Tasks

Image Super-ResolutionSuper-Resolution

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

Diffusion

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections