GithubHelp home page GithubHelp logo

inclab / cals Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 0.0 362.89 MB

Channel state information Auto-Labeling System

Python 78.11% Dockerfile 0.35% CMake 0.65% C++ 20.46% C 0.43%
channel-state-information csi auto-labeling data-collection multi-object-tracking

cals's Introduction

CALS

Mysql 8.0

Channel State Information Auto-Labeling System for Large-scale Deep Learning-based Wi-Fi Sensing

Abstract: Wi-Fi Sensing, which uses Wi-Fi technology to sense the surrounding environments, has strong potentials in a variety of sensing applications. Recently several advanced deep learning-based solutions using CSI (Channel State Information) data have achieved high performance, but it is still difficult to use in practice without explicit data collection, which requires expensive adaptation efforts for model retraining. In this study, we propose a Channel State Information Automatic Labeling System (CALS) that automatically collects and labels training CSI data for deep learning-based Wi-Fi sensing systems. The proposed system allows the CSI data collection process to efficiently collect labeled CSI for labeling for supervised learning using computer vision technologies such as object detection algorithms. We built a prototype of CALS to demonstrate its efficiency and collected data to train deep learning models for detecting the presence of a person in an indoor environment, showing to achieve an accuracy of over 90% with the auto-labeled data sets generated by CALS.

CALS Flowchart

CALS Architecture

  • There are two versions included: a CSV version that works with pre-extracted CSI data in CSV format, and a DB version that collects CSI data directly from the Raspberry Pi extractor and stores it in a MySQL database for further process.

Prerequisites


Installation

Server

  1. Clone the repository
git clone https://github.com/INCLab/CALS.git
  1. Install the required dependencies
pip install -r requirements.txt
  1. Change to the project directory
cd bytetrack
  1. Install the ByteTrack
  • Note: If you want to use another CV module, you can install the desired module. And additionally, columns of output should be modified as follows: time frame_index label

Extractor

  1. Clone the repository
git clone https://github.com/INCLab/CALS.git
  1. Install the Nexmon CSI Extractor

Usage - CSV

1. Time syncronization

After installing Nexmon firmware on Raspberry Pi, synchronize time with the camera server.

Method: Network Time Protocol (NTP)
One of the easiest ways to synchronize time between two devices is to use the Network Time Protocol (NTP). This protocol allows devices to synchronize their clocks over a network connection.

2. Collect CSI data & record video

  • Change to the extractor directory on the Raspberry Pi extractor:
cd csi
  • Enter the following command on the Raspberry Pi extractor:
python3 extract_csi_csv.py

Note
※ Must be done under sudo privileges
※ If you want to stop CSI extraction, press the keyboard 's'

3. Vision module process

Generate a MOT output by following the instructions in the ByteTrack repository.

4. CSI labeling

Set the time, sampling rate on cfg.py and enter the following command on the server:

python csi_labeling.py

Referenced Projects

This project takes inspiration from the following two open-source projects:

  1. Nexmon: The Nexmon project provides firmware patches for collecting CSI on Broadcom Wi-Fi chips. For more information about this project, please visit the Nexmon GitHub repository.

  2. ByteTrack: ByteTrack offers an efficient algorithm for real-time multi-object tracking. For more information about this project, please visit the ByteTrack GitHub repository.

cals's People

Contributors

aftermoon-dev avatar cheesebg avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.