Skip to main content

A unified framework for indoor localization

Project description

室内定位工具库 | Multi-dataset, multi-model indoor localization toolkit

PyPI Python License Stars

English | 中文


For Beginners: 3 Lines = Complete Workflow

Skip the boilerplate. Focus on algorithms, not data formats.

import indoorloc as iloc

train, test = iloc.load_dataset('ujindoorloc')           # Load any of 36+ datasets
model = iloc.create_model('resnet18', dataset=train)     # Auto-configure model
results = model.fit(train).evaluate(test)                # Train & evaluate

Auto-download datasets · Auto-adapt dimensions · Auto-configure model

For Experts: YAML Config + CLI

Full control via OpenMMLab-style configuration system.

python tools/train.py configs/wifi/resnet18_ujindoorloc.yaml

# Override any parameter
python tools/train.py configs/wifi/resnet18_ujindoorloc.yaml \
    --model.backbone.model_name efficientnet_b0 \
    --train.lr 5e-4 --train.epochs 200
# configs/wifi/resnet18_ujindoorloc.yaml
_base_:
  - ../_base_/models/resnet.yaml

model:
  backbone:
    model_name: resnet18
    pretrained: true
  head:
    num_floors: 5
    num_buildings: 3

train:
  epochs: 100
  lr: 0.001

Supported Datasets

WiFi, BLE, CSI, UWB, Magnetic, and more — all with iloc.load_dataset(). View Details →

RSSI CSI Other

WiFi

BLE

WiFi CSI

Massive MIMO

UWB

Magnetic

Fusion

VLC / RFID / Ultrasound


Supported Algorithms

Traditional ML + 700+ Deep Learning backbones via timm. View Details →

Traditional Deep Learning Backbones Prediction Heads
  • k-NN
  • Weighted k-NN
  • SVM
  • Random Forest
  • Gaussian Process

CNN: ResNet, EfficientNet, ConvNeXt, MobileNet, RegNet, DenseNet...

ViT: ViT, Swin, DeiT, BEiT, EVA...

Hybrid: CoAtNet, MaxViT, EfficientFormer...

  • RegressionHead
  • ClassificationHead
  • FloorHead
  • BuildingHead
  • HybridHead
  • HierarchicalHead

Installation

pip install indoorloc
More options
pip install indoorloc[vision]   # With vision support
pip install indoorloc[full]     # All features
pip install -e ".[dev]"         # Development

Advanced Usage

YAML Configuration

# configs/wifi/resnet18_ujindoorloc.yaml
_base_:
  - ../_base_/models/resnet.yaml

model:
  backbone:
    model_name: resnet18
    pretrained: true
  head:
    num_floors: 5
    num_buildings: 3

train:
  epochs: 100
  lr: 0.001
python tools/train.py configs/wifi/resnet18_ujindoorloc.yaml

Custom Model Registration

from indoorloc.registry import LOCALIZERS
from indoorloc.localizers.base import BaseLocalizer

@LOCALIZERS.register_module()
class MyLocalizer(BaseLocalizer):
    def fit(self, signals, locations, **kwargs):
        self._is_trained = True
        return self

    def predict(self, signal):
        pass

model = iloc.create_model('MyLocalizer')

Project Structure

indoorloc/
├── signals/          # WiFi, BLE, IMU, etc.
├── locations/        # Location classes
├── datasets/         # 36+ datasets
├── localizers/       # ML & DL algorithms
├── evaluation/       # Metrics
└── configs/          # YAML configs

Evaluation Metrics

Metric Description
Mean Position Error Average error (m)
Median Position Error Median error (m)
Floor Accuracy Floor classification
Building Accuracy Building classification

License

Apache License 2.0

Citation

@software{indoorloc,
  title = {IndoorLoc: A Unified Framework for Indoor Localization},
  year = {2024},
  url = {https://github.com/qdtiger/indoorloc}
}

Acknowledgements

  • OpenMMLab — Registry and config system
  • timm — 700+ pretrained models

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

indoorloc-0.1.3.tar.gz (173.6 kB view details)

Uploaded Source

Built Distribution

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

indoorloc-0.1.3-py3-none-any.whl (255.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: indoorloc-0.1.3.tar.gz
  • Upload date:
  • Size: 173.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for indoorloc-0.1.3.tar.gz
Algorithm Hash digest
SHA256 64bebca5389dc1406b1105294790405084dca9e482fdd3778e499e3c82a8913e
MD5 3e447ed0fa5f472e632a2b36394927a4
BLAKE2b-256 9d4bb2a0af4fba040b61b4b39fcca281865b1a0694fb4d9532d1c02d32e22572

See more details on using hashes here.

File details

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

File metadata

  • Download URL: indoorloc-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 255.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.11

File hashes

Hashes for indoorloc-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bb42749fa0248cda1d8c2acf75e5b2505436119125453cf5768fdb946c85382e
MD5 4d05a6a03f9c733613c9e1c8912ba6ea
BLAKE2b-256 f6a3d4bc46b320c22006adbd22e5d3982ddcfa6aa4cbd96083c794c69cab8469

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