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
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 | |
|---|---|---|---|
| mobius_mpd-0.1.6.tar.gz | 6.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mobius_mpd-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
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
|