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.3.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.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mobius_mpd-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 1ae4925b996ede687c329d381bdb44fb4353ed75003df7a3c3ef105be51e23f1
MD5 00da4b1df7344a1dbae1b5bd0f42a872
BLAKE2b-256 9d72de2c17556beda8154afffd929269341819a181f455fa72834427c60c1fec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mobius_mpd-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cfb71e41556d1f6913bc50c89e66c0332450b63f1e5cf2b205a8b06d5956336c
MD5 a11154de8cf5503d5e63ff88fd0f3753
BLAKE2b-256 a2345f381ba88053d55e267d6f313e3af5333c2facd38ee0e8ce35bd7d88769e

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