Skip to content
/ NIOM Public

[WACV2026] The implementation of Matching Semantically-Similar Non-Identical Objects

License

Notifications You must be signed in to change notification settings

Circ-Leaf/NIOM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Matching Semantically Similar Non-Identical Objects

arXiv Python PyTorch CUDA

Official code release for the WACV 2026 paper: Matching Semantically Similar Non-Identical Objects.
Our method adapts feature matchers to the Non-Identical Object Matching (NIOM) task without any retraining.


image

Abstract

Not identical but similar objects are ubiquitous in our world, ranging from four-legged animals such as dogs and cats to cars of different models and flowers of various colors. This study addresses a novel task of matching such non-identical objects at the pixel level. We propose a weighting scheme of descriptors, Semantic Enhancement Weighting (SEW), that incorporates semantic information from object detectors into existing sparse feature matching methods, extending their targets from identical objects captured from different perspectives to semantically similar objects. The experiments show successful matching between non-identical objects in various cases, including in-class design variations, class discrepancy, and domain shifts (e.g., photo vs. drawing and image corruptions).

Installation

Install this repo using pip:

git clone https://github.com/Circ-Leaf/NIOM.git

Create and activate a conda environment:

conda env create --file environment.yml
conda activate niom

Install PyTorch with CUDA support. Install the specific version of PyTorch along with torchvision and torchaudio for CUDA 11.8:

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio --index-url https://download.pytorch.org/whl/cu118

Download the YOLOv7 weights from the following link and place them in the models directory: yolov7.pt

Demo

Start with this step. Run the notebooks/NIOM.ipynb notebook to execute the workflow, including object detection, heatmap based weighting, and matching.

We can choose whether to use the Non-visual Object Pairing, which compares object similarity in the text embedding space, as follows:

use_text_similarity = False # use full conbined heatmap
use_text_similarity = True  # use Non-visual Object Pairing
image

Use sh/run_triple.sh to compare the results of three experiments.

sh sh/run_triple.sh

Specifically:

  • Matching using SuperPoint + LightGlue: lightglue_original_matching.py
  • add the Weighting Module SEW: heatmap_weighted_matching.py
  • add the Non-visual Object Pairing: heatmap_textsim_matching.py

Licence

The code in this repository depends on several third-party components that follow different licenses:

Our framework adopts the GPL-3.0 license, as it is the strongest license among these dependencies. However, our method provides a flexible framework in which the internal detection or matching models can be freely replaced. By switching these internal components to alternatives with different licenses, the distribution constraints can be adjusted, enabling users to adopt more permissive licensing configurations if desired.

Citation

If you find this useful, please cite:

@inproceedings{marumo2026matching,
  author    = {Yusuke Marumo and Kazuhiko Kawamoto and Satomi Tanaka and Shigenobu Hirano and Hiroshi Kera},
  title     = {Matching Semantically Similar Non-Identical Objects},
  booktitle   = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)},
  year      = {2026}
}

About

[WACV2026] The implementation of Matching Semantically-Similar Non-Identical Objects

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published