Papers › MAXIM: Multi-Axis MLP for Image Processing

MAXIM: Multi-Axis MLP for Image Processing

9 Jan 2022CVPR 2022 1arXiv:2201.02973archive 2025-07-28

Zhengzhong Tu, Hossein Talebi, Han Zhang, Feng Yang, Peyman Milanfar, Alan Bovik, Yinxiao Li

Recent progress on Transformers and multi-layer perceptron (MLP) models provide new network architectural designs for computer vision tasks. Although these models proved to be effective in many vision tasks such as image recognition, there remain challenges in adapting them for low-level vision. The inflexibility to support high-resolution images and limitations of local attention are perhaps the main bottlenecks. In this work, we present a multi-axis MLP based architecture called MAXIM, that can serve as an efficient and flexible general-purpose vision backbone for image processing tasks. MAXIM uses a UNet-shaped hierarchical structure and supports long-range interactions enabled by spatially-gated MLPs. Specifically, MAXIM contains two MLP-based building blocks: a multi-axis gated MLP that allows for efficient and scalable spatial mixing of local and global visual cues, and a cross-gating block, an alternative to cross-attention, which accounts for cross-feature conditioning. Both these modules are exclusively based on MLPs, but also benefit from being both global and `fully-convolutional', two properties that are desirable for image processing. Our extensive experimental results show that the proposed MAXIM model achieves state-of-the-art performance on more than ten benchmarks across a range of image processing tasks, including denoising, deblurring, deraining, dehazing, and enhancement while requiring fewer or comparable numbers of parameters and FLOPs than competitive models. The source code and trained models will be available at \url{https://github.com/google-research/maxim}.

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="2201.02973")

Code

Syntology Ran 27 of 46 code samples harvested from 3 repositories linked to this paper; 19 have no recorded run. Of those that ran: 11 ran · our draft was wrong; 2 ran · fixture could not drive it; 14 ran with no contract checked.

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

google-research/maxim officialmentioned in papermentioned on GitHubjax report
sayakpaul/maxim-tf mentioned on GitHubtf report
vztu/maxim-pytorch 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

46 samples harvested; 27 ran; 0 honoured the contract we drafted; 19 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.

11ran · our draft was wrong
2ran · fixture could not drive it
14ran
19unverified

Licence: 0 of the 46 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 3 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.

CALayer google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · 19b896e6c80f7746 · report
CrossGatingBlock google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · 766dd58d53750085 · report
GetSpatialGatingWeights google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · 084dcbcab94aaf9e · report
MlpBlock google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · e60caa8706cbaa5e · report
RCAB google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · a848dc175add161e · report
RDCAB google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · 1fdc0576592cc66d · report
UpSampleRatio google-research/maxim/maxim/models/maxim.py official repository ran Apache-2.0 (permissive) · 42206e2f2fad7d53 · report
BottleneckBlock google-research/maxim/maxim/models/maxim.py official repository unverified Apache-2.0 (permissive) · 1f82af068fbcb99b · report
MAXIM google-research/maxim/maxim/models/maxim.py official repository unverified Apache-2.0 (permissive) · cf9ff379ec874bea · report
SAM google-research/maxim/maxim/models/maxim.py official repository unverified Apache-2.0 (permissive) · 5677718f64cf57a1 · report
UNetDecoderBlock google-research/maxim/maxim/models/maxim.py official repository unverified Apache-2.0 (permissive) · 368f5be0ac386cea · report
UNetEncoderBlock google-research/maxim/maxim/models/maxim.py official repository unverified Apache-2.0 (permissive) · 65880b9a096f0b2e · report
BlockGatingUnit sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 7ed1b7f6a7fca542 · report
BlockGmlpLayer sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 9f6816f577e4daf7 · report
CALayer sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 324d6a11c6374570 · report
GetSpatialGatingWeights sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 258edcba99050dce · report
GridGatingUnit sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 9ec31f74d265cc86 · report
GridGmlpLayer sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 05dca5627244f135 · report
MlpBlock sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 4cbc099a6c833993 · report
RCAB sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 5333727b65d8f4e5 · report
RDCAB sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · d3804c01fc7b2d0b · report
Resizing sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran fingerprinted Apache-2.0 (permissive) · 03c67e5e165e1da6 · report
SAM sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · e1002ec72887a8e7 · report
SwapAxes sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran Apache-2.0 (permissive) · cc569d6b5f02b960 · report
TFBlockImages sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran Apache-2.0 (permissive) · 61cbfaf1cb7f570e · report
UpSampleRatio sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · 612b66e64a594d39 · report
block_images_einops vztu/maxim-pytorch/maxim_pytorch/maxim_torch.py community (archive-listed) ran · fixture could not drive it Apache-2.0 (permissive) · 8a67f23552a44d61 · report
calculate_psnr vztu/maxim-pytorch/Deblurring/utils.py community (archive-listed) ran Apache-2.0 (permissive) · d292dd965ab59629 · report
calculate_ssim vztu/maxim-pytorch/Deblurring/utils.py community (archive-listed) ran Apache-2.0 (permissive) · a05b184dc6c264a0 · report
compute_psnr vztu/maxim-pytorch/Deblurring/evaluate_realblur.py community (archive-listed) ran Apache-2.0 (permissive) · 91fa50e293bf2fde · report
ssim vztu/maxim-pytorch/Deblurring/utils.py community (archive-listed) ran fingerprinted Apache-2.0 (permissive) · ba721aeacc165234 · report
unblock_images_einops vztu/maxim-pytorch/maxim_pytorch/maxim_torch.py community (archive-listed) ran · fixture could not drive it Apache-2.0 (permissive) · 627ea4c76565d927 · report
BottleneckBlock sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · 8f3bf5e1e1ab7a8a · report
CrossGatingBlock sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · ccc6692913775565 · report
MAXIM sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · fa1baf06efa9af1a · report
ResidualSplitHeadMultiAxisGmlpLayer sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · 2a2c1a868e2dcde6 · report
TFBlockImagesByGrid sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · bfc4a56270266181 · report
TFUnblockImages sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · bbe59c0f7d80a435 · report
UNetDecoderBlock sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · 388ba9abc6d6edcf · report
UNetEncoderBlock sayakpaul/maxim-tf/maxim/maxim.py community (archive-listed) unverified Apache-2.0 (permissive) · 8cae04426d07cd86 · report
compute_ssim vztu/maxim-pytorch/Deblurring/evaluate_realblur.py community (archive-listed) unverified Apache-2.0 (permissive) · 464c3d3b7a1eb4b3 · report
get_params vztu/maxim-pytorch/maxim_pytorch/jax2torch.py community (archive-listed) unverified Apache-2.0 (permissive) · 1b0d800507b48241 · report
image_align vztu/maxim-pytorch/Deblurring/evaluate_realblur.py community (archive-listed) unverified Apache-2.0 (permissive) · 5aad1c1e328fd4ec · report
modify_jax_params vztu/maxim-pytorch/maxim_pytorch/jax2torch.py community (archive-listed) unverified Apache-2.0 (permissive) · 24049a3abbb124a4 · report
nearest_downsample vztu/maxim-pytorch/maxim_pytorch/maxim_torch.py community (archive-listed) unverified Apache-2.0 (permissive) · ecee36a6f46993db · report
recover_tree vztu/maxim-pytorch/maxim_pytorch/jax2torch.py community (archive-listed) unverified Apache-2.0 (permissive) · 2a480b42a952d169 · report

Tasks

DeblurringDenoisingImage DeblurringImage DehazingImage DenoisingImage RestorationLow-Light Image EnhancementPhoto RetouchingRain RemovalSingle Image Deraining

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Deblurring BASED MAXIM (REDS) PSNR 30.65728 #4 of 4 Archive leaderboard report
Deblurring GoPro MAXIM-3S PSNR 32.86 #30 of 56 Archive leaderboard report
Deblurring HIDE MAXIM-3S PSNR 32.83 #1 of 1 Archive leaderboard report
Deblurring HIDE (trained on GOPRO) MAXIM PSNR (sRGB) 32.83 #1 of 26 Archive leaderboard report
Deblurring HIDE (trained on GOPRO) MAXIM Params (M) 22.2 #1 of 26 Archive leaderboard report
Deblurring HIDE (trained on GOPRO) MAXIM SSIM (sRGB) 0.956 #1 of 26 Archive leaderboard report
Deblurring MSU BASED MAXIM (REDS) ERQAv2.0 0.74277 #5 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (REDS) LPIPS 0.07836 #5 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (REDS) SSIM 0.94959 #5 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (REDS) Subjective 1.0081 #5 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (REDS) VMAF 67.3502 #5 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (GoPro) LPIPS 0.09188 #9 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (GoPro) PSNR 31.36344 #9 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (GoPro) SSIM 0.94386 #9 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (GoPro) Subjective 0.2070 #9 of 11 Archive leaderboard report
Deblurring MSU BASED MAXIM (GoPro) VMAF 67.7557 #9 of 11 Archive leaderboard report
Deblurring RealBlur-J MAXIM PSNR (sRGB) 32.84 #8 of 17 Archive leaderboard report
Deblurring RealBlur-J MAXIM Params(M) 22.2 #8 of 17 Archive leaderboard report
Deblurring RealBlur-J MAXIM SSIM (sRGB) 0.935 #8 of 17 Archive leaderboard report
Deblurring RealBlur-J (trained on GoPro) MAXIM PSNR (sRGB) 28.83 #8 of 15 Archive leaderboard report
Deblurring RealBlur-J (trained on GoPro) MAXIM SSIM (sRGB) 0.875 #8 of 15 Archive leaderboard report
Deblurring RealBlur-R MAXIM PSNR (sRGB) 39.45 #13 of 17 Archive leaderboard report
Deblurring RealBlur-R MAXIM-3S SSIM (sRGB) 0.961 #17 of 17 Archive leaderboard report
Deblurring RealBlur-R (trained on GoPro) MAXIM PSNR (sRGB) 35.78 #10 of 19 Archive leaderboard report
Image Deblurring GoPro MAXIM-3S PSNR 32.86 #32 of 55 Archive leaderboard report
Image Deblurring HIDE MAXIM-3S SSIM 0.956 #5 of 5 Archive leaderboard report
Image Dehazing SOTS Indoor MAXIM-2S PSNR 38.11 #19 of 34 Archive leaderboard report
Image Dehazing SOTS Outdoor MAXIM-2S PSNR 34.19 #20 of 31 Archive leaderboard report
Image Denoising DND MAXIM-3S PSNR (sRGB) 39.84 #8 of 16 Archive leaderboard report
Image Denoising DND MAXIM-3S SSIM (sRGB) 0.954 #8 of 16 Archive leaderboard report
Image Denoising SIDD MAXIM-3S PSNR (sRGB) 39.96 #8 of 22 Archive leaderboard report
Image Denoising SIDD MAXIM-3S SSIM (sRGB) 0.960 #8 of 22 Archive leaderboard report
Low-Light Image Enhancement LOL MAXIM Average PSNR 23.43 #30 of 40 Archive leaderboard report
Low-Light Image Enhancement LOL MAXIM SSIM 0.863 #30 of 40 Archive leaderboard report
Photo Retouching MIT-Adobe 5k MAXIM PSNR 26.15 #1 of 5 Archive leaderboard report
Photo Retouching MIT-Adobe 5k MAXIM SSIM 0.945 #1 of 5 Archive leaderboard report
Single Image Deraining Rain100H MAXIM SSIM 0.903 #16 of 19 Archive leaderboard report
Single Image Deraining Rain100L MAXIM SSIM 0.977 #15 of 19 Archive leaderboard report
Single Image Deraining Test100 MAXIM PSNR 31.17 #4 of 12 Archive leaderboard report
Single Image Deraining Test100 MAXIM SSIM 0.922 #4 of 12 Archive leaderboard report
Single Image Deraining Test1200 MAXIM SSIM 0.922 #10 of 14 Archive leaderboard report
Single Image Deraining Test2800 MAXIM PSNR 33.80 #4 of 12 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

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