Skip to main content

Möbius Perspective Distortion (MPD) data‑augmentation transform.

Project description

mobius‑mpd

Möbius Perspective Distortion (MPD) augmentation for PyTorch & Albumentations

Chhipa, Prakash Chandra, et al. "Möbius transform for mitigating perspective distortions in representation learning." European Conference on Computer Vision. Cham: Springer Nature Switzerland, 2024.

Möbius-MPD — Perspective-Distortion Augmentation



1 What is perspective distortion?

A camera viewed from an oblique pose changes the apparent shape, size, orientation and angles of objects in the image plane.:contentReference[oaicite:0]{index=0}


2 Why perspective distortion is troublesome for computer-vision models?

Camera parameters are hard to estimate, so PD can’t be synthesised easily for training.:contentReference[oaicite:1]{index=1}
Existing augmentation methods are affine and lienar in nature are not able to model perspective distortion.:contentReference[oaicite:2]{index=2}
Lack of perspective distortion data leaves models brittle in the wild for real-world applications—crowd counting, fisheye recognition, person re-ID and object detection all degrade when PD is present.:contentReference[oaicite:3]{index=3}


3 What does Möbius-MPD offer?

Möbius-MPD mathmetically models perspective distortion and translate it directly in pixel space with a conformal Möbius mapping

$$ \Phi(z)=\frac{a z + b}{c z + d}, \qquad c!=0 $$

and the real and imaginery compoents of complex parameter c controls the perspectively distorted view generations.

Orientation & intensity control – the signs and magnitudes of (\operatorname{Re}(c)) and (\operatorname{Im}(c)) yield left / right / top / bottom or corner views, scaled continuously.:contentReference[oaicite:4]{index=4}
No camera parameters or real PD images required – the transform alone synthesises realistic PD.:contentReference[oaicite:5]{index=5}
Padding variant – optionally fills black corners with edge pixels.:contentReference[oaicite:6]{index=6}
Proven gains – +10 pp on ImageNet-PD and improvements across crowd counting, fisheye recognition, person re-ID and COCO object detection.:contentReference[oaicite:7]{index=7}


Installation

pip install mobius-mpd

or in editable mode:

git clone https://github.com/prakashchhipa/mobius-mpd
cd mobius-mpd
pip install -e .

Usage

PyTorch / torchvision

from torchvision import transforms
from mobius_mpd import MobiusMPDTransform

train_aug = transforms.Compose([
    MobiusMPDTransform(
        p=0.5,      # apply 50% of the time
        min=0.1,    # minimum |c|
        max=0.3,    # maximum |c|
    ),
    transforms.ToTensor(),
])

Albumentations

import albumentations as A
from mobius_mpd import A_MobiusMPDTransform

aug = A.Compose([
    A_MobiusMPDTransform(p=0.7, min=0.05, max=0.25),
])

Parameters

name default description
p 1.0 probability of applying the transform
min 0.1 lower bound for the sampled coefficient (
max 0.3 upper bound for the sampled coefficient (
background "none" "none" → black corners · "padded" → edge-pixel padding
view_mode "random" "random", "uni-direction", or "bi-direction"
view "random" orientation; for uni: left / right / top / bottom · for bi: left-top / left-bottom / right-top / right-bottom

Examples for different configurations to generate different views. Set view and/or view_mode to random for augmentaiton purpose.

Background setting with and without padding.

Parent project page: https://prakashchhipa.github.io/projects/mpd/

BibTeX

@inproceedings{chhipa2024mobius,
  title     = {Möbius transform for mitigating perspective distortions in representation learning},
  author    = {Chhipa, Prakash Chandra et al.},
  booktitle = {European Conference on Computer Vision (ECCV)},
  year      = {2024},
  publisher = {Springer Nature Switzerland}
}

If this library helps your research, please cite the paper above 🙏.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mobius_mpd-0.1.6.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mobius_mpd-0.1.6-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file mobius_mpd-0.1.6.tar.gz.

File metadata

  • Download URL: mobius_mpd-0.1.6.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for mobius_mpd-0.1.6.tar.gz
Algorithm Hash digest
SHA256 6e5b62aa52170981ddce91090cd8a44ebdbbc483dd077d284d3d456e04093861
MD5 24456f77b42ce6885ea81821c90dca60
BLAKE2b-256 74d73e19eb7b511c15a3bd0c9c8a3a7e16af0ccb6b61b35a87040e6b03ec72d0

See more details on using hashes here.

File details

Details for the file mobius_mpd-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: mobius_mpd-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for mobius_mpd-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d64b08be42dcbd7c5ee6f73e3e0b04753b896b6d4d2df68b4876fe03dc12a282
MD5 135402e2ee3ac51c884d0059cf84b8fd
BLAKE2b-256 213e92a719c17afaa9e6a295573693053386ded4ad9b84ecc4d5e5ead920fc84

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page