A Python Package For System Identification Using NARMAX Models

Overview

DOI PyPI version License openissues issuesclosed downloads python status discord contributors forks stars

SysIdentPy is a Python module for System Identification using NARMAX models built on top of numpy and is distributed under the 3-Clause BSD license.

Note

The update v0.1.7 has been released with major changes and additional features (Fourier basis function, NAR and NFIR models, possibility to select the lag of the residues for Extended Least Squares algorithm and many more).

There are several API modifications and you will need to change your code to have the new (and upcoming) features.

Check the examples of how to use the new version in the documentation page.

For more details, please see the changelog.

Documentation

Examples

SysIdentPy now support NARX Neural Network and General estimators, e.g., sklearn estimators and Catboost.

Exemples

from torch import nn
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sysidentpy.metrics import mean_squared_error
from sysidentpy.utils.generate_data import get_siso_data


# Generate a dataset of a simulated dynamical system
x_train, x_valid, y_train, y_valid = get_siso_data(n=1000,
                                                   colored_noise=False,
                                                   sigma=0.001,
                                                   train_percentage=80)

Building Polynomial NARX models with FROLS algorithm

from sysidentpy.model_structure_selection import FROLS
from sysidentpy.basis_function import Polynomial
from sysidentpy.utils.display_results import results
from sysidentpy.utils.plotting import plot_residues_correlation, plot_results
from sysidentpy.residues.residues_correlation import compute_residues_autocorrelation
from sysidentpy.residues.residues_correlation import compute_cross_correlation

basis_function=Polynomial(degree=2)
model = PolynomialNarmax(
  order_selection=True,
  n_info_values=10,
  extended_least_squares=False,
  ylag=2, xlag=2,
  info_criteria='aic',
  estimator='least_squares',
  basis_function=basis_function
)
model.fit(X=x_train, y=y_train)
yhat = model.predict(X=x_valid, y=y_valid)
print(rrse)
r = pd.DataFrame(
	results(
		model.final_model, model.theta, model.err,
		model.n_terms, err_precision=8, dtype='sci'
		),
	columns=['Regressors', 'Parameters', 'ERR'])
print(r)
	
Regressors     Parameters        ERR
0        x1(k-2)     0.9000  0.95556574
1         y(k-1)     0.1999  0.04107943
2  x1(k-1)y(k-1)     0.1000  0.00335113

plot_results(y=y_valid, yhat=yhat, n=1000)
ee = compute_residues_autocorrelation(y_valid, yhat)
plot_residues_correlation(data=ee, title="Residues", ylabel="$e^2$")
x1e = compute_cross_correlation(y_valid, yhat, x2_val)
plot_residues_correlation(data=x1e, title="Residues", ylabel="$x_1e$")

polynomial

NARX Neural Network

from sysidentpy.neural_network import NARXNN

class NARX(nn.Module):
    def __init__(self):
        super().__init__()
        self.lin = nn.Linear(4, 10)
        self.lin2 = nn.Linear(10, 10)
        self.lin3 = nn.Linear(10, 1)
        self.tanh = nn.Tanh()

    def forward(self, xb):
        z = self.lin(xb)
        z = self.tanh(z)
        z = self.lin2(z)
        z = self.tanh(z)
        z = self.lin3(z)
        return z

narx_net = NARXNN(net=NARX(),
                  ylag=2,
                  xlag=2,
                  loss_func='mse_loss',
                  optimizer='Adam',
                  epochs=200,
                  verbose=False,
                  optim_params={'betas': (0.9, 0.999), 'eps': 1e-05} # optional parameters of the optimizer
)

train_dl = narx_net.data_transform(x_train, y_train)
valid_dl = narx_net.data_transform(x_valid, y_valid)
narx_net.fit(train_dl, valid_dl)
yhat = narx_net.predict(x_valid, y_valid)
ee, ex, extras, lam = narx_net.residuals(x_valid, y_valid, yhat)
narx_net.plot_result(y_valid, yhat, ee, ex)

neural

Catboost-narx

from sysidentpy.general_estimators import NARX
from catboost import CatBoostRegressor

catboost_narx = NARX(base_estimator=CatBoostRegressor(iterations=300,
                                                      learning_rate=0.1,
                                                      depth=6),
                     xlag=2,
                     ylag=2,
                     fit_params={'verbose': False}
)

catboost_narx.fit(x_train, y_train)
yhat = catboost_narx.predict(x_valid, y_valid)
ee, ex, extras, lam = catboost_narx.residuals(x_valid, y_valid, yhat)
catboost_narx.plot_result(y_valid, yhat, ee, ex)

catboost

Catboost without NARX configuration

The following is the Catboost performance without the NARX configuration.

def plot_results(yvalid, yhat):
    _, ax = plt.subplots(figsize=(14, 8))
    ax.plot(y_valid[:200], label='Data', marker='o')
    ax.plot(yhat[:200], label='Prediction', marker='*')
    ax.set_xlabel("$n$", fontsize=18)
    ax.set_ylabel("$y[n]$", fontsize=18)
    ax.grid()
    ax.legend(fontsize=18)
    plt.show()

catboost = CatBoostRegressor(iterations=300,
                            learning_rate=0.1,
                            depth=6)
catboost.fit(x_train, y_train, verbose=False)
plot_results(y_valid, catboost.predict(x_valid))

catboost

The examples directory has several Jupyter notebooks presenting basic tutorials of how to use the package and some specific applications of sysidentpy. Try it out!

Requirements

SysIdentPy requires:

  • Python (>= 3.6)
  • NumPy (>= 1.5.0) for all numerical algorithms
  • Matplotlib >= 1.5.2 for static plotting and visualizations
  • Pytorch (>=1.7.1) for building feed-forward neural networks
Platform Status
Linux ok
Windows ok
macOS ok

SysIdentPy do not to support Python 2.7.

A few examples require pandas >= 0.18.0. However, it is not required to use sysidentpy.

Installation

The easiest way to get sysidentpy running is to install it using pip

pip install sysidentpy

We will make it available at conda repository as soon as possible.

Changelog

See the changelog for a history of notable changes to SysIdentPy.

Development

We welcome new contributors of all experience levels. The sysidentpy community goals are to be helpful, welcoming, and effective.

Note: we use the pytest package for testing. The test functions are located in tests subdirectories at each folder inside SysIdentPy, which check the validity of the algorithms.

Run the pytest in the respective folder to perform all the tests of the corresponding sub-packages.

Currently, we have around 81% of code coverage.

You can install pytest using

pip install -U pytest

Example of how to run the tests:

Open a terminal emulator of your choice and go to a subdirectory, e.g,

\sysidentpy\metrics\

Just type pytest and you get a result like

========== test session starts ==========

platform linux -- Python 3.7.6, pytest-5.4.2, py-1.8.1, pluggy-0.13.1

rootdir: ~/sysidentpy

plugins: cov-2.8.1

collected 12 items

tests/test_regression.py ............ [100%]

========== 12 passed in 2.45s ==================

You can also see the code coverage using the pytest-cov package. First, install pytest-cov using

pip install pytest-cov

Run the command below in the SysIdentPy root directory, to generate the report.

pytest --cov=.

Important links

Source code

You can check the latest sources with the command::

git clone https://github.com/wilsonrljr/sysidentpy.git

Project History

The project was started by Wilson R. L. Junior, Luan Pascoal and Samir A. M. Martins as a project for System Identification discipline. Samuel joined early in 2019.

The project is actively maintained by Wilson R. L. Junior and looking for contributors.

Communication

Citation

DOI

If you use SysIdentPy on your project, please drop me a line.

If you use SysIdentPy on your scientific publication, we would appreciate citations to the following paper:

  • Lacerda et al., (2020). SysIdentPy: A Python package for System Identification using NARMAX models. Journal of Open Source Software, 5(54), 2384, https://doi.org/10.21105/joss.02384
@article{Lacerda2020,
  doi = {10.21105/joss.02384},
  url = {https://doi.org/10.21105/joss.02384},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {54},
  pages = {2384},
  author = {Wilson Rocha Lacerda Junior and Luan Pascoal Costa da Andrade and Samuel Carlos Pessoa Oliveira and Samir Angelo Milani Martins},
  title = {SysIdentPy: A Python package for System Identification using NARMAX models},
  journal = {Journal of Open Source Software}
}

Inspiration

The documentation and structure (even this section) is openly inspired by sklearn, einsteinpy, and many others as we used (and keep using) them to learn.

Comments
  • Installation Mac M1 chip

    Installation Mac M1 chip

    Greeting, Thank you for this amazing package. I have a Mac 2022 with M1 chip and I failed to install the SysIdentPy. Do you know how to circumvent the problem? Thanks!

    opened by AntoineDubois 5
  • I am unable to resolve  ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    I am unable to resolve ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    Bug: ModuleNotFoundError: No module named 'sysidentpy.model_structure_selection'

    Steps/code to reproduce: from sysidentpy.model_structure_selection import FROLS

    Environment: Version of the packages you are using Defaulting to user installation because normal site-packages is not writeable Requirement already satisfied: sysidentpy in ./.local/lib/python3.6/site-packages (0.1.4.2) Requirement already satisfied: torch>=1.7.1 in ./.local/lib/python3.6/site-packages (from sysidentpy) (1.10.0+cu113) Requirement already satisfied: numpy>=1.17.3 in ./.local/lib/python3.6/site-packages (from sysidentpy) (1.19.5) Requirement already satisfied: matplotlib>=3.1.0 in ./.local/lib/python3.6/site-packages (from sysidentpy) (3.3.4) Requirement already satisfied: python-dateutil>=2.1 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (2.8.1) Requirement already satisfied: kiwisolver>=1.0.1 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (1.3.1) Requirement already satisfied: cycler>=0.10 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (0.10.0) Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (2.4.7) Requirement already satisfied: pillow>=6.2.0 in ./.local/lib/python3.6/site-packages (from matplotlib>=3.1.0->sysidentpy) (8.4.0) Requirement already satisfied: dataclasses in ./.local/lib/python3.6/site-packages (from torch>=1.7.1->sysidentpy) (0.8) Requirement already satisfied: typing-extensions in ./.local/lib/python3.6/site-packages (from torch>=1.7.1->sysidentpy) (3.7.4.3) Requirement already satisfied: six in ./.local/lib/python3.6/site-packages (from cycler>=0.10->matplotlib>=3.1.0->sysidentpy) (1.15.0)

    opened by TeaCult 4
  • Cannot install the package

    Cannot install the package

    Hello. I am not able to install the package right now.

    Steps/code to reproduce: On the terminal, I am running

    pip install sysidentpy
    

    and I get

    Collecting sysidentpy
      Using cached https://files.pythonhosted.org/packages/b3/9b/20dde4808c7f81badaecd84f112edd161f989b94f1dc84401acda6c49ae2/sysidentpy-0.1.1.tar.gz
        ERROR: Command errored out with exit status 1:
         command: 'c:\users\neylson - a3data\testepython\novoenv\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Neylson - A3Data\\AppData\\Local\\Temp\\pip-install-donew4o8\\sysidentpy\\setup.py'"'"'; __file__='"'"'C:\\Users\\Neylson - A3Data\\AppData\\Local\\Temp\\pip-install-donew4o8\\sysidentpy\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
             cwd: C:\Users\Neylson - A3Data\AppData\Local\Temp\pip-install-donew4o8\sysidentpy\
        Complete output (1 lines):
        numpy is required during installation
        ----------------------------------------
    ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    

    I am using Python 3.8 in a Windows 10 OS.

    opened by neylsoncrepalde 4
  • It fails for

    It fails for "numpy is required during installation" when we trying to install sysidentpy from requirements.txt.

    Describe the bug It fails for "numpy is required during installation" when we trying to install sysidentpy from requirements.txt.

    To Reproduce

    1. Create a requirements.txt with the below 3 packages: numpy matplotlib sysidentpy
    2. run pip install command pip install -r requirements.txt
    3. Issue appears: image

    Expected results The sysidentpy get installed with all its dependencies.

    Actual results sysidentpy failed to install for error message "numpy is required during installation".

    Environment sysidentpy-0.1.5.3

    Additional context Even if we put the numpy before sysidentpy in requirements.txt does not help. I think this issue is because all the packages are only downloaded in the first pass and then installed all together at the end.

    Workaround We currently have a workaround to pip install all the dependency packages separately before we install for the requirements.txt. But this requires us to do these in a Linux VM as our target server is Linux OS while we are developing in Windows. So it would be great if we could have an actual solution for this issue. Thanks in advance!

    opened by Yangsh-w 3
  • Forecasting with unseen inputs and forecast model generation

    Forecasting with unseen inputs and forecast model generation

    The predict function input arguments are X_valid and y_valid. How can I forecast with my trained model if I don't have output (y_valid) yet?

    Using the simulation function, can it be used for forecasting by directly referencing the trained model regressors?

    The package worked perfectly for my data, and I would like to use it for real-time workflow. This involves training validation-forecasting-updating of the model in real-time.

    As new data is streamed, can I initialize with the previous model and re-regress to update the model's parameters? Thank you very much

    opened by rabiu42000 3
  • Problem using MISO

    Problem using MISO

    Applying the example of article "SysIdentPy: A Python package for System Identificationusing NARMAX models" gives an error. Typing : model = PolynomialNarmax(non_degree=2,order_selection=True,ylag=2, xlag=[[1, 2], [1, 2]],info_criteria='aic', estimator='least_squares',) Gives : -

    TypeError Traceback (most recent call last)

    in () ----> 1 model = PolynomialNarmax(non_degree=2,order_selection=True,ylag=2, xlag=[[1, 2], [1, 2]],info_criteria='aic', estimator='least_squares',)

    2 frames

    /content/gdrive/My Drive/python/03_WP/sysidentpy/base.py in (.0) 116 # create only the lags passed from list 117 x_vec_tmp = [] --> 118 x_vec_tmp.extend([lag + 1000*np.ones(np.size(lag)) for lag in xlag]) 119 x_vec_tmp = np.array(x_vec_tmp) 120 elif isinstance(xlag, int) and n_inputs == 1:

    TypeError: can only concatenate list (not "int") to list

    opened by micheloz 3
  • Example does not run

    Example does not run

    O exemplo extended_least_squares.ipynb falha com esse erro:

    0.5839138626779056
          Regressors Parameters         ERR
    0        x1(k-2)     0.8886  0.74898574
    1         y(k-1)     0.2710  0.06875041
    2  x1(k-1)y(k-1)     0.0924  0.00403020
    3         y(k-2)    -0.0411  0.00143946
    4      x1(k-1)^2    -0.0575  0.00103367
    5   y(k-2)y(k-1)     0.0619  0.00133295
    6  x1(k-1)y(k-2)     0.0477  0.00065670
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    ~/Downloads/sysidentpy/examples/extended_least_squares.ipynb in <module>
         10
         11     model.fit(x_train, y_train)
    ---> 12     parameters[:, i] = list(model.theta)
         13
         14 sns.set()
    
    ValueError: cannot copy sequence with size 7 to array axis with dimension 3
    

    Todos os outros funcionam. Acho que podem adicionar "macOS OK" na lista.

    opened by acristoffers 2
  • Neural NARX - Predicting without labels (forecasting)

    Neural NARX - Predicting without labels (forecasting)

    Is your feature request related to a problem? Please describe. Enhancement of the predict method for Neural NARX in order to access forecasting scenarios where you don't have the labels (y).

    Describe the solution you'd like Be able to use only the 'X_test' as input for the 'predict' method, adding a parameter like 'forecast_horizon' to express the number of steps to predict WITHOUT the actual labels. This is the scenario of a forecasting prediction.

    opened by marcostx 1
  • Exception: Insufficient initial conditions elements!

    Exception: Insufficient initial conditions elements!

    I get this exception when i use model.fit(x_train, y_train, x_valid, y_valid) for MetaMSS same with FROLS. What causes this kind of exception? \sysidentpy\polynomial_basis\narmax.py", line 559, in _model_prediction raise Exception("Insufficient initial conditions elements!")

    opened by rabiu42000 1
  • Too much black text

    Too much black text

    There's too much black (bold) text on

    https://wilsonrljr.github.io/sysidentpy/user_guide.html

    Presumably a problem with the Markdown where a **...** wasn't closed.

    opened by dpsanders 1
  • V0.2.1

    V0.2.1

    v0.2.1

    CONTRIBUTORS

    • wilsonrljr

    CHANGES

    • The update v0.2.1 has been released with additional feature, minor API changes and fixes.

    • MAJOR: Neural NARX now support CUDA

      • Now the user can build Neural NARX models with CUDA support. Just add device='cuda' to use the GPU benefits.
      • Updated docs to show how to use the new feature.
    • MAJOR: New documentation website

      • The documentation is now entirely based on Markdown (no rst anymore).
      • We use MkDocs and Material for MkDocs theme now.
      • Dark theme option.
      • The Contribute page have more details to help those who wants to contribute with SysIdentPy.
      • New sections (e.g., Blog, Sponsors, etc.)
      • Many improvements under the hood.
    • MAJOR: Github Sponsor

      • Now you can support SysIdentPy by becoming a Sponsor! Details: https://github.com/sponsors/wilsonrljr
    • Tests:

      • Now there are test for almost every function.
      • Neural NARX tests are raising numpy issues. It'll be fixed til next update.
    • FIX: NFIR models in General Estimators

      • Fix support for NFIR models using sklearn estimators.
    • The setup is now handled by the pyproject.toml file.

    • Remove unused code.

    • Fix docstring variables.

    • Fix code format issues.

    • Fix minor grammatical and spelling mistakes.

    • Fix issues related to html on Jupyter notebooks examples on documentation.

    • Updated Readme.

    opened by wilsonrljr 0
  • steps_ahead not simulating next steps in SimulateNARMAX

    steps_ahead not simulating next steps in SimulateNARMAX

    https://github.com/wilsonrljr/sysidentpy/blob/440bd926892b506506eaa37d3864cfed99e6a2b1/sysidentpy/simulation/_simulation.py#L333

    bug When trying to simulate duffing equation

    x_1 = 1.0 x_2
    x_2 = -0.15 x_1 + 2.75 x_2 - 1.0 x_2^3
    

    by giving steps_ahead = 2 or more, it is still predicting the one step forward for all the given test values. And it cannot simulate with out the steps_ahead parameter and also when steps_ahead = 50 or more. Please see the respective screenshots of the simulations.

    ident_model = np.array([
          [1001, 1001, 1001],
          [1001,    0,    0],
          [2001,    0,    0],
           ])
    
    
    s = SimulateNARMAX(basis_function=Polynomial(degree=3), calculate_err=True, estimate_parameter=True, extended_least_squares=True)
    yhat_simulate = s.simulate(
        X_train=x_train,
        y_train=y_train,
        X_test=x_test,
        y_test=y_test,
        model_code=ident_model,
        steps_ahead=2)
    

    without steps_ahead wostepahead steps_ahead = 1 wstepahead1 steps_ahead = 2 wstepahead2nmor steps_ahead = 50 wstepahead50 steps_ahead = 100 wstepahead100

    Thank you very much for this very insightful and helpful project.

    opened by Lalith-Sagar-Devagudi 1
  • Fix Typo in code example

    Fix Typo in code example

    Example code in Basic Usage/Build a Polynomial NARX model has a typo in compute_cross_correlation that gives an error when executed since variable used does not exist

    opened by Gabo-Tor 0
  • The maximum lag of the fitted model is the maximum lag between ylag and xlag

    The maximum lag of the fitted model is the maximum lag between ylag and xlag

    The maximum lag of the fitted model should be updated based on the final_model code. If the user saves the model and just want to predict, the initial conditions must have max(xlag, ylag) even if the final model have a lower final lag.

    Ex.:

    
    model = PolynomialNarmax(
            ylag=10,
            xlag=10
    )
    
    fitted_model = [
        [1001,    0], # y(k-1)
        [2001, 1001], # x1(k-1)y(k-1)
        [2002,    0], # x1(k-2)
        ]
    
    

    The maximum lag in the version v0.1.6 will be 10. However, setting the maximum lag equal 2 is more intuitive because the user do not have to worry about it.

    opened by wilsonrljr 0
  • Support for training from multiple datasets

    Support for training from multiple datasets

    as far as I can tell, the model.fit(X,y) function can only support a single training dataset. I would like to train a model based on multiple recorded datasets (say, 5 recordings, each 10 minutes long, but not captured consecutively, so concatenation is not correct). is this possible? is this planned for a future release? see for example: https://www.mathworks.com/help/ident/ug/dealing-with-multi-experiment-data-and-merging-models.html

    Enhancement 
    opened by jtylka 2
  • spatio-temporal identification

    spatio-temporal identification

    Is your feature request related to a problem? Please describe. identification of PDEs

    Describe the solution you'd like spatio-temporal model creation and parameter estimation based only on data

    Describe alternatives you've considered the ERR can be used for the purpose too

    Additional context any plans on developing this feature? :)

    Enhancement 
    opened by helonayala 1
Releases(v0.2.1)
  • v0.2.1(Aug 30, 2022)

    We're happy to announce the v0.2.1 release with new methods and bug fixes:

    You can see the changelog here: http://sysidentpy.org/changelog/changelog/

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jun 18, 2022)

    We're happy to announce the v0.2.0 release with new methods and bug fixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.2.0.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.9(Mar 5, 2022)

    We're happy to announce the 0.1.9 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.9.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.7(Oct 18, 2021)

    We're happy to announce the 0.1.7 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.7.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.6(Sep 25, 2021)

    We're happy to announce the v0.1.6 release with new methods and bugfixes:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.6.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.5(Mar 14, 2021)

    We're happy to announce the 0.1.5 release with bugfixes and new code optimizations:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.5.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade

    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Dec 6, 2020)

    We're happy to announce the 0.1.3 release with bugfixes and new code optimizations:

    You can see the changelog here: http://sysidentpy.org/changelog/v0.1.3.html

    You can upgrade with pip as usual:

    pip install sysidentpy --upgrade
    
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Sep 12, 2020)

Owner
Wilson Rocha
Master in Electrical Engineering. Data Scientist. Professor. Member of Control and Modelling Group (GCOM)
Wilson Rocha
Builds a LoRa radio frequency fingerprint identification (RFFI) system based on deep learning techiniques

This project builds a LoRa radio frequency fingerprint identification (RFFI) system based on deep learning techiniques.

null 20 Dec 30, 2022
VGGVox models for Speaker Identification and Verification trained on the VoxCeleb (1 & 2) datasets

VGGVox models for speaker identification and verification This directory contains code to import and evaluate the speaker identification and verificat

null 338 Dec 27, 2022
Repo for "Event-Stream Representation for Human Gaits Identification Using Deep Neural Networks"

Summary This is the code for the paper Event-Stream Representation for Human Gaits Identification Using Deep Neural Networks by Yanxiang Wang, Xian Zh

zhangxian 54 Jan 3, 2023
Segmentation and Identification of Vertebrae in CT Scans using CNN, k-means Clustering and k-NN

Segmentation and Identification of Vertebrae in CT Scans using CNN, k-means Clustering and k-NN If you use this code for your research, please cite ou

null 41 Dec 8, 2022
Paper: Cross-View Kernel Similarity Metric Learning Using Pairwise Constraints for Person Re-identification

Cross-View Kernel Similarity Metric Learning Using Pairwise Constraints for Person Re-identification T M Feroz Ali, Subhasis Chaudhuri, ICVGIP-20-21

T M Feroz Ali 3 Jun 17, 2022
OCTIS: Comparing Topic Models is Simple! A python package to optimize and evaluate topic models (accepted at EACL2021 demo track)

OCTIS : Optimizing and Comparing Topic Models is Simple! OCTIS (Optimizing and Comparing Topic models Is Simple) aims at training, analyzing and compa

MIND 478 Jan 1, 2023
Face-Recognition-Attendence-System - This face recognition Attendence system using Python

Face-Recognition-Attendence-System I have developed this face recognition Attend

Riya Gupta 4 May 10, 2022
E2e music remastering system - End-to-end Music Remastering System Using Self-supervised and Adversarial Training

End-to-end Music Remastering System This repository includes source code and pre

Junghyun (Tony) Koo 37 Dec 15, 2022
Face Recognition plus identification simply and fast | Python

PyFaceDetection Face Recognition plus identification simply and fast Ubuntu Setup sudo pip3 install numpy sudo pip3 install cmake sudo pip3 install dl

Peyman Majidi Moein 16 Sep 22, 2022
Open source person re-identification library in python

Open-ReID Open-ReID is a lightweight library of person re-identification for research purpose. It aims to provide a uniform interface for different da

Tong Xiao 1.3k Jan 1, 2023
TransReID: Transformer-based Object Re-Identification

TransReID: Transformer-based Object Re-Identification [arxiv] The official repository for TransReID: Transformer-based Object Re-Identification achiev

null 569 Dec 30, 2022
offical implement of our Lifelong Person Re-Identification via Adaptive Knowledge Accumulation in CVPR2021

LifelongReID Offical implementation of our Lifelong Person Re-Identification via Adaptive Knowledge Accumulation in CVPR2021 by Nan Pu, Wei Chen, Yu L

PeterPu 76 Dec 8, 2022
[TIP2020] Adaptive Graph Representation Learning for Video Person Re-identification

Introduction This is the PyTorch implementation for Adaptive Graph Representation Learning for Video Person Re-identification. Get started git clone h

WuYiming 41 Dec 12, 2022
This repo is developed for Strong Baseline For Vehicle Re-Identification in Track 2 Ai-City-2021 Challenges

A STRONG BASELINE FOR VEHICLE RE-IDENTIFICATION This paper is accepted to the IEEE Conference on Computer Vision and Pattern Recognition Workshop(CVPR

Cybercore Co. Ltd 78 Dec 29, 2022
The 1st place solution of track2 (Vehicle Re-Identification) in the NVIDIA AI City Challenge at CVPR 2021 Workshop.

AICITY2021_Track2_DMT The 1st place solution of track2 (Vehicle Re-Identification) in the NVIDIA AI City Challenge at CVPR 2021 Workshop. Introduction

Hao Luo 91 Dec 21, 2022
[CVPR-2021] UnrealPerson: An adaptive pipeline for costless person re-identification

UnrealPerson: An Adaptive Pipeline for Costless Person Re-identification In our paper (arxiv), we propose a novel pipeline, UnrealPerson, that decreas

ZhangTianyu 70 Oct 10, 2022
Unsupervised Pre-training for Person Re-identification (LUPerson)

LUPerson Unsupervised Pre-training for Person Re-identification (LUPerson). The repository is for our CVPR2021 paper Unsupervised Pre-training for Per

null 143 Dec 24, 2022
IAUnet: Global Context-Aware Feature Learning for Person Re-Identification

IAUnet This repository contains the code for the paper: IAUnet: Global Context-Aware Feature Learning for Person Re-Identification Ruibing Hou, Bingpe

null 30 Jul 14, 2022