/seq2subseq

Seq2subseq method for NILM

Primary LanguagePython

SEQUENCE-TO-SUBSEQUENCE LEARNING WITH CONDITIONAL GAN FOR POWER DISAGGREGATION

This code implements the seqence-to-subseqence (seq2subseq) learning model. This model makes a trade-off between sequence-to-sequence (seq2seq) and sequence-to-point (seq2point) method, thus, balancing the convergence difficulty in deep neural networks and the amount of computation during the inference period. In addition, we apply U-Net [1] and Instance Normalization [2] techniques to our model. We build our model based on pix2pix [3] under Tensorflow framework [4]. Thanks a lot!

References:

[1] Olaf Ronneberger, Philipp Fischer, and Thomas Brox, “U-net: Convolutional networks for biomedical image segmentation,” in International Conference on Medical Image Computing & Computer-assisted Intervention, 2015.

[2] Dmitry Ulyanov, Andrea Vedaldi, and Victor S. Lempitsky, “Instance normalization: The missing ingredient for fast stylization,” CoRR, vol. abs/1607.08022, 2016.

[3] https://phillipi.github.io/pix2pix/

[4] https://github.com/affinelayer/pix2pix-tensorflow

Setup

  • Create your own virtual environment with Python > 3.5
  • Configure deep learning environment with Tensorflow (GPU edition) > 1.4.1 + cuDNN
  • Install other necessary softwares, such as Matplotlib, Scikit-learn etc.
  • Clone this repository

The environments we used are listed in the file environment.yml. If you use conda, you can use conda env create -f environment.yml to set up the environment.

Datasets and preprocessing

REFIT

Download the REFIT raw data from the original website (https://pureportal.strath.ac.uk/en/datasets/refit-electrical-load-measurements-cleaned).

UK-DALE

Download the UK-DALE raw data from the original website (https://ukerc.rl.ac.uk/DC/cgi-bin/edc_search.pl?GoButton=Detail&WantComp=41).

Training & Test

We recommend importing the project into Pycharm (https://www.jetbrains.com/pycharm/) for your future research.

Tips

You can look at the loss and computation graph using tensorboard:

tensorboard --logdir= 'the output path'

Code validation and experiment results

We evaluate our model on a Linux machine with a Nvidia RTX 2080 GPU and Core i7 9700K CPU.

Example outputs of Washing Machine on ”unseen” house 2 from UK-DALE (We enlarge the right part of the figure to make it more clear):

Acknowledgments

This research is sponsored by National Key R&D Program of China(2017YFB0902600); State Grid Corporation of China Project (SGJS0000DKJS1700840) Research and Application of Key Technology for Intelligent Dispatching and Security Early-warning of Large Power Grid.