Models · Semantic segmentation

mmseg CNN classics

The MMSegmentation authors' ADE20K checkpoints of FCN, PSPNet, DeepLabV3, DeepLabV3+ and HRNet, convolutional scene segmentation. Commercially usable.

Commercial use: yes.

variantinputbackendtime (ms)peak memory (MiB, allocated / reserved)
fcn-r101-d8-ade20ksynthetic (1024x2048)original (fp32)
original
portable
kernels
94.2
47.0
40.7
16.6
1799 / 2074
1925 / 2102
417 / 492
294 / 478
pspnet-r101-d8-ade20ksynthetic (1024x2048)original (fp32)
original
portable
kernels
92.5
47.2
48.8
25.0
1797 / 2074
1922 / 2222
417 / 492
341 / 494
deeplabv3-r101-d8-ade20ksynthetic (1024x2048)original (fp32)
original
portable
kernels
108
54.8
47.9
20.1
1870 / 2134
2031 / 2162
453 / 532
362 / 518
deeplabv3plus-r101-d8-ade20ksynthetic (1024x2048)original (fp32)
original
portable
kernels
104
53.4
47.1
18.0
1776 / 2036
1891 / 2024
413 / 492
365 / 560
hrnet-w48-fcn-ade20ksynthetic (1024x2048)original (fp32)
original
portable
kernels
portable + torch.compile
TensorRT fp16
48.1
54.8
26.9
11.9
23.9
20.9
1789 / 1870
1915 / 2010
424 / 490
274 / 430
421 / 448
888 (engine)
Details
  • Original code: https://github.com/open-mmlab/mmsegmentation at c685fe6767c4
  • Code licence: Apache-2.0 (permissive); files: LICENSE
  • Weights licence: Apache-2.0
  • Licence evidence: https://github.com/open-mmlab/mmsegmentation/blob/c685fe6767c4cadf6b051983ca6208f1b9d1ccb8/README.md#license
  • Training data: ImageNet-1k (ILSVRC 2012 classification), ADE20K (SceneParsing, 150 classes)
  • Kernel libraries: igev, cutlass_conv, cudnn_hacc, seg_conv, seg_up
  • Variants: fcn-r101-d8-ade20k, pspnet-r101-d8-ade20k, deeplabv3-r101-d8-ade20k, deeplabv3plus-r101-d8-ade20k, hrnet-w48-fcn-ade20k
  • Outputs: logits; label_set: ade20k-150
  • Input size: any H x W >= 1, resized or padded inside the model
  • Tested up to (portable, fp16, RTX 5060 Ti 16 GB): fcn-r101-d8-ade20k 3000x4000 (7.2 GiB peak allocated, 7.5 reserved); pspnet-r101-d8-ade20k 3000x4000 (7.2 GiB peak allocated, 7.5 reserved); deeplabv3-r101-d8-ade20k 3000x4000 (7.3 GiB peak allocated, 7.5 reserved); deeplabv3plus-r101-d8-ade20k 3000x4000 (7.2 GiB peak allocated, 7.5 reserved); hrnet-w48-fcn-ade20k 3000x4000 (7.2 GiB peak allocated, 7.5 reserved)
  • hrnet-w48-fcn-ade20k 1024x2048, first call: portable + torch.compile 36 s (cold Inductor cache), TensorRT fp16 30 s (ONNX + engine).
  • fcn-r101-d8-ade20k original 1024x2048: torch.autocast(fp16) around the forward
  • pspnet-r101-d8-ade20k original 1024x2048: torch.autocast(fp16) around the forward
  • deeplabv3-r101-d8-ade20k original 1024x2048: torch.autocast(fp16) around the forward
  • deeplabv3plus-r101-d8-ade20k original 1024x2048: torch.autocast(fp16) around the forward
  • hrnet-w48-fcn-ade20k original 1024x2048: torch.autocast(fp16) around the forward
  • fcn-r101-d8-ade20k load / first call: original 4.72 s / 0.393 s (512x512), portable 0.53 s / 0.073 s, kernels 0.91† s / 0.018† s
  • pspnet-r101-d8-ade20k load / first call: original 1.35 s / 0.092 s (512x512), portable 0.47 s / 0.082 s, kernels 0.77† s / 0.026† s
  • deeplabv3-r101-d8-ade20k load / first call: original 1.64 s / 0.031 s (512x512), portable 0.73 s / 0.081 s, kernels 0.91† s / 0.021† s
  • deeplabv3plus-r101-d8-ade20k load / first call: original 4.72 s / 0.662 s (512x512), portable 0.62 s / 0.095 s, kernels 0.75† s / 0.019† s
  • hrnet-w48-fcn-ade20k load / first call: original 1.48 s / 0.079 s (512x512), portable 0.62 s / 0.071 s, kernels 0.85† s / 0.014† s
  • † measured in the speed sweep after the portable load (or an earlier size) in the same process: file cache and kernels are warm, so the time is lower than a fresh start.
  • Protocol, first call, 3 warm-up, peak reset, median of 3 rounds x median of 5 (tools/speed_check.py), synthetic CUDA input (bench_inputs); peak = max over the first call and the timed calls

Measured

Each image at its own size, argmax of the logits. Original = the original code named under Details, same checkpoint and protocol.

variantdatasetoriginal fp32original fp16portablekernelsnote
fcn-r101-d8-ade20kADE20K val, every 4th image, mIoU / aAcc %39.40 / 79.0939.40 / 79.1039.39 / 79.1039.39 / 79.09
pspnet-r101-d8-ade20kADE20K val, every 4th image, mIoU / aAcc %44.44 / 80.9744.44 / 80.9744.43 / 80.9744.44 / 80.97
deeplabv3-r101-d8-ade20kADE20K val, every 4th image, mIoU / aAcc %43.62 / 80.8043.62 / 80.8043.61 / 80.8043.62 / 80.80
deeplabv3plus-r101-d8-ade20kADE20K val, every 4th image, mIoU / aAcc %44.36 / 81.0144.36 / 81.0144.35 / 81.0144.36 / 81.01
hrnet-w48-fcn-ade20kADE20K val, every 4th image, mIoU / aAcc %40.11 / 79.3440.11 / 79.3540.10 / 79.3540.11 / 79.34

Measured on NVIDIA GeForce RTX 5060 Ti, torch 2.14.1+cu130, fastforks 939adfe8, 2026-11-06.

Parity

CPU, float32: max |diff| <= 0.002 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 0.04 and p99 <= 0.15 (absolute error of the output logits).

variantkernels error vs original, mean / p99GPU, torchkernels used
fcn-r101-d8-ade20k0.00228 / 0.00975RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120, seg_conv@8eec95783e28:sm_120, seg_up@3e44e71200cd:sm_120
pspnet-r101-d8-ade20k0.00713 / 0.02575RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120, seg_conv@8eec95783e28:sm_120, seg_up@3e44e71200cd:sm_120
deeplabv3-r101-d8-ade20k0.00223 / 0.00945RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120, seg_conv@8eec95783e28:sm_120, seg_up@3e44e71200cd:sm_120
deeplabv3plus-r101-d8-ade20k0.00313 / 0.01297RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120, seg_conv@8eec95783e28:sm_120, seg_up@3e44e71200cd:sm_120
hrnet-w48-fcn-ade20k0.00175 / 0.00723RTX 5060 Ti, torch 2.14.1+cu130cudnn_hacc@cudnn92400, cutlass_conv@988138e042cb:sm_120, igev@f075827d68c6:sm_120, seg_conv@8eec95783e28:sm_120, seg_up@3e44e71200cd:sm_120