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
Metadata
Release files for mobius-mpd 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mobius_mpd-0.1.6.tar.gz | 6.2 kB | Without provenance | Details for mobius_mpd-0.1.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mobius_mpd-0.1.6-py3-none-any.whl | Python 3 | none | any | Details for mobius_mpd-0.1.6-py3-none-any.whl |
Total release size: 13.2 kB
Release files / mobius_mpd-0.1.6.tar.gz
| Download URL | mobius_mpd-0.1.6.tar.gz |
|---|---|
| Size | 6.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e5b62aa52170981ddce91090cd8a44ebdbbc483dd077d284d3d456e04093861
|
|
BLAKE2b-256 checksum How to use checksums |
74d73e19eb7b511c15a3bd0c9c8a3a7e16af0ccb6b61b35a87040e6b03ec72d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.4
|
Release files / mobius_mpd-0.1.6-py3-none-any.whl
| Download URL | mobius_mpd-0.1.6-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d64b08be42dcbd7c5ee6f73e3e0b04753b896b6d4d2df68b4876fe03dc12a282
|
|
BLAKE2b-256 checksum How to use checksums |
213e92a719c17afaa9e6a295573693053386ded4ad9b84ecc4d5e5ead920fc84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.4
|
Security for mobius-mpd 0.1.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.