Papers › SOLOv2: Dynamic and Fast Instance Segmentation

SOLOv2: Dynamic and Fast Instance Segmentation

23 Mar 2020NeurIPS 2020 12arXiv:2003.10152archive 2025-07-28

Xinlong Wang, Rufeng Zhang, Tao Kong, Lei LI, Chunhua Shen

In this work, we aim at building a simple, direct, and fast instance segmentation framework with strong performance. We follow the principle of the SOLO method of Wang et al. "SOLO: segmenting objects by locations". Importantly, we take one step further by dynamically learning the mask head of the object segmenter such that the mask head is conditioned on the location. Specifically, the mask branch is decoupled into a mask kernel branch and mask feature branch, which are responsible for learning the convolution kernel and the convolved features respectively. Moreover, we propose Matrix NMS (non maximum suppression) to significantly reduce the inference time overhead due to NMS of masks. Our Matrix NMS performs NMS with parallel matrix operations in one shot, and yields better results. We demonstrate a simple direct instance segmentation system, outperforming a few state-of-the-art methods in both speed and accuracy. A light-weight version of SOLOv2 executes at 31.3 FPS and yields 37.1% AP. Moreover, our state-of-the-art results in object detection (from our mask byproduct) and panoptic segmentation show the potential to serve as a new strong baseline for many instance-level recognition tasks besides instance segmentation. Code is available at: https://git.io/AdelaiDet

PaperPDFConference PDFCodeCode Syntology ran

In Syntology View this paper on Syntology: its repositories, every harvested function with whether it ran, its licence and the call to fetch it.

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

Code

Syntology Ran 20 of 38 code samples harvested from 4 repositories linked to this paper; 18 have no recorded run. Of those that ran: 1 ran · honoured contract; 3 ran · our draft was wrong; 7 ran · fixture could not drive it; 9 ran with no contract checked.

By repository: community (archive-listed): 38 samples from 4 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.

18 repositories listed; official and paper-mentioned ones first.

WXinlong/SOLO officialmentioned on GitHubpaddleNOASSERTION report
Fei-dong/SOLO_SORT mentioned on GitHubpytorchNOASSERTION report
MY-Swich/SOLO mentioned on GitHubpytorchNOASSERTION report
MY-Swich/SOLO_my mentioned on GitHubpytorchNOASSERTION report
MY-Swich/solo-len mentioned on GitHubpytorchNOASSERTION report
OpenFirework/pytorch_solov2 mentioned on GitHubpytorch report
XXXVincent/SOLO mentioned on GitHubpytorchApache-2.0 report
divyachandana/solo-semantic-segmentation mentioned on GitHubpytorchNOASSERTION report
hades12580/solov2_mmdet mentioned on GitHubpytorchNOASSERTION report
hukefei/SOLO-master mentioned on GitHubpytorch report
lifuguan/SOLOv2-mmdet mentioned on GitHubpytorch report
mvpzhangqiu/SOLOV2 mentioned on GitHubpytorchNOASSERTION report
trhieu310/customDataset mentioned on GitHubpytorchNOASSERTION report
universea/SOLOv2 mentioned on GitHubpytorchApache-2.0 report
zymk9/Yet-Another-Anime-Segmenter mentioned on GitHubMIT report
open-mmlab/mmdetection pytorchApache-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

38 samples harvested; 20 ran; 1 honoured the contract we drafted; 18 have no recorded run. Read from Syntology's graph 2026-09-25; that is when this build read the record, not when the samples ran.

1ran · honoured contract
3ran · our draft was wrong
7ran · fixture could not drive it
9ran
18unverified

Licence: 24 of the 38 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 4 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.

BasicBlock OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 9fb0fedee7b3f2ee · report
FPN OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · c810dc154d59524b · report
FocalLoss OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · fe8dcf6c4b9800bc · report
MaskFeatHead OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 894a0043ad791fa1 · report
_scale_size OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it fingerprinted no licence file found · pointer only · 97884f1e0e17c1e1 · report
bias_init_with_prob OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · honoured contract fingerprinted no licence file found · pointer only · 408462d59776310c · report
dice_loss OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · our draft was wrong fingerprinted no licence file found · pointer only · aaf96efc755ee384 · report
imrescale OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · 49b2f3540a1063c2 · report
imresize OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · ad19e0bbc6e19afc · report
matrix_nms OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · 8c2fd49bbe43cd0e · report
matrix_nms hukefei/SOLO-master/mmdet/core/post_processing/matrix_nms.py community (archive-listed) ran · fixture could not drive it licence not identified · pointer only · 3ade0aa8ecdcd846 · report
pickle_mirroredstrategy fastestimator/fastestimator/fastestimator/backend/_save_model.py community (archive-listed) ran Apache-2.0 (permissive) · 0d3b1e92d0235897 · report
points_nms OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · our draft was wrong fingerprinted no licence file found · pointer only · 187f58e73add440a · report
preprocess_torch_weights fastestimator/fastestimator/fastestimator/backend/_load_model.py community (archive-listed) ran Apache-2.0 (permissive) · 9a069eaedf64e9ca · report
pytorch_focal_loss fastestimator/fastestimator/fastestimator/backend/_focal_loss.py community (archive-listed) ran Apache-2.0 (permissive) · d25b5c833089bbfa · report
reduce_loss OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · b2b9a1966482ef96 · report
rescale_size OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it fingerprinted no licence file found · pointer only · 7fd279b20e022496 · report
tf_focal_loss fastestimator/fastestimator/fastestimator/backend/_focal_loss.py community (archive-listed) ran Apache-2.0 (permissive) · d252aef57cfb3c28 · report
weight_reduce_loss OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) ran · fixture could not drive it no licence file found · pointer only · d5b31a76e797a5de · report
zscore fastestimator/fastestimator/fastestimator/backend/_zscore.py community (archive-listed) ran fingerprinted Apache-2.0 (permissive) · bff4b3ee14055346 · report
ResNet OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · f97c741a7531ed92 · report
SOLOV2 OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · fded4b7834efc5bc · report
SOLOv2Head OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · 46940354b75e81f0 · report
_resnet OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · a0d7bc98918d1bc0 · report
anchor_target universea/SOLOv2/mmdet/core/anchor/anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 94d77124832ebf0b · report
anchor_target_single universea/SOLOv2/mmdet/core/anchor/anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 73823f326d7922ae · report
calc_region universea/SOLOv2/mmdet/core/anchor/guided_anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 736c7ce8a0faa02a · report
ga_loc_target universea/SOLOv2/mmdet/core/anchor/guided_anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 2440313353f0c835 · report
ga_shape_target universea/SOLOv2/mmdet/core/anchor/guided_anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · e3463fa8772a18a9 · report
images_to_levels universea/SOLOv2/mmdet/core/anchor/anchor_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 8fa249eba3a0ce57 · report
images_to_levels universea/SOLOv2/mmdet/core/anchor/point_target.py community (archive-listed) unverified Apache-2.0 (permissive) · 99bbbfc95abdc86a · report
multi_apply OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · 32a7e838eb5da1a7 · report
normal_init OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · 83bf75829d256b70 · report
point_target universea/SOLOv2/mmdet/core/anchor/point_target.py community (archive-listed) unverified Apache-2.0 (permissive) · a08ee98e88ad24e7 · report
point_target_single universea/SOLOv2/mmdet/core/anchor/point_target.py community (archive-listed) unverified Apache-2.0 (permissive) · b660461f38b4382b · report
resnet18 OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · 5df4dd24d2cb7b62 · report
resnet34 OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · c9554157563486de · report
xavier_init OpenFirework/pytorch_solov2/modules/solov2.py community (archive-listed) unverified no licence file found · pointer only · 0adc33be4bb1dac3 · report

Tasks

Instance SegmentationObject DetectionPanoptic SegmentationReal-Time Semantic SegmentationReal-time Instance SegmentationSegmentationSemantic Segmentationobject-detection

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) AP50 63.2 #58 of 112 Archive leaderboard report
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) AP75 45.1 #58 of 112 Archive leaderboard report
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) APL 61.6 #58 of 112 Archive leaderboard report
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) APM 45.0 #58 of 112 Archive leaderboard report
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) APS 18.0 #58 of 112 Archive leaderboard report
Instance Segmentation COCO test-dev SOLOv2(Res-DCN-101-FPN) mask AP 41.7 #58 of 112 Archive leaderboard report
Real-time Instance Segmentation MSCOCO SOLO-512 AP50 57.7 #9 of 22 Archive leaderboard report
Real-time Instance Segmentation MSCOCO SOLO-512 AP75 39.7 #9 of 22 Archive leaderboard report
Real-time Instance Segmentation MSCOCO SOLO-512 Frame (fps) 31.3 #9 of 22 Archive leaderboard report
Real-time Instance Segmentation MSCOCO SOLO-512 mask AP 37.1 #9 of 22 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.

Methods

Introduced by this paper: Matrix NMS

ConvolutionMatrix NMSSPEED

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