A unified framework for indoor localization
Project description
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 |
|---|---|---|
|
CNN: ResNet, EfficientNet, ConvNeXt, MobileNet, RegNet, DenseNet... ViT: ViT, Swin, DeiT, BEiT, EVA... Hybrid: CoAtNet, MaxViT, EfficientFormer... |
|
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64bebca5389dc1406b1105294790405084dca9e482fdd3778e499e3c82a8913e
|
|
| MD5 |
3e447ed0fa5f472e632a2b36394927a4
|
|
| BLAKE2b-256 |
9d4bb2a0af4fba040b61b4b39fcca281865b1a0694fb4d9532d1c02d32e22572
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb42749fa0248cda1d8c2acf75e5b2505436119125453cf5768fdb946c85382e
|
|
| MD5 |
4d05a6a03f9c733613c9e1c8912ba6ea
|
|
| BLAKE2b-256 |
f6a3d4bc46b320c22006adbd22e5d3982ddcfa6aa4cbd96083c794c69cab8469
|