说在最前面

研究生三年快毕业了,毕业前整理一下该领域的研究工作。正所谓,我栽树,后人乘凉。研究NILM的时候,个人觉得最快的方法是直接复现别人的论文,或者甚至用别人论文的代码直接跑出来体会整个流程(数据集导入->数据预处理->运行模型->输出结果)。研究生三年找遍了github上的一些相关的代码收集起来,现在快要毕业了,整理一下,就当做是研究生三年的一个交待。

个人研究NILM主要是利用深度学习、机器学习方面的方法,数学优化(遗传算法、粒子群优化)之类的研究得比较少,因此本文的分享主要聚集于已公开的基于深度学习来做非侵入式负荷识别的论文及相关公开的源码。

注:文中关于论文和代码的时效性为22年6月前后,后面我没有再阅读过相关论文和找过相关的公开代码了(主要是自己的论文后面投出去录用了),这方面的工作后面没有再深入了,好像就那时候开始流行用GNN来做了,因为之前普通的CNN、LSTM甚至Transformer都做过很多了,没得水论文了。此外,下面论文的代码我也只是跑通了个别几个感兴趣的,个别的你没跑通你问我我也不知道怎么弄。

公开数据集、工具和性能指标篇请看我另外一篇文章:

NILM非侵入式负荷识别(papers with code、data)带代码的论文整理——(公开数据集、工具、和性能指标篇) 全网最全

本文的适用读者:仅对相关领域有兴趣的在校的学生及学者

(鉴于最近有网友私信留言,考虑负荷辨识商业应用这一块,老实说本文不适合真正的商业应用,不建议在这些文献中浪费时间。在实际的商业应用中,还是通过电流谐波等特征,用传统的信号处理方法比如模版匹配滤波、盲源分离、构造特征向量或矩阵等比较符合商业实际和经济成本,应考虑这些传统思路。)

第一次更新时间:2023年1月10日 20:50:39

第一次更新的内容:全文的分享,排版还没有空改

第二次更新时间:2023年2月24日 15:52:30

第二次更新的内容:排版还没有空改,在忙学位论文,增加一下本文适用读者的说明。

必读的综述

《Review on Deep Neural Networks Applied to Low-Frequency NILM》

如果你打算通过深度学习来研究NILM,这是一篇必读的综述。这篇综述的发表时间在2020年前后,包括了网上几乎全部的NILM公开数据集、论文及代码地址。我这篇整理,也是在这篇综述的基础上,增加一些额外收集到的NILM公开代码和论文。

论文名称及对应的代码地址

对于必读和比较重要的,我会特意在下面给出文字提示,其它的也会按需要加上注解。

主要基于CNN的(包括GAN、VAE、LSTM之类的):


《Neural NILM: Deep Neural Networks Applied to Energy Disaggregation》

code:GitHub - OdysseasKr/neural-disaggregator: Code for NILM experiments using Neural Networks. Uses Keras/Tensorflow and the NILMTK.

GitHub - JackKelly/neuralnilm: Deep Neural Networks Applied to Energy Disaggregation

GitHub - maechler/nnilm: A reimplementation of Jack Kelly's rectangles neural network architecture based on Keras and the NILMToolkit.

推荐理由:深度学习用于NILM的开山之作,必读!


Sequence-to-point learning with neural networks for nonintrusive load monitoring

GitHub - MingjunZhong/NeuralNetNilm: Sequence-to-point learning for non-intrusive load monitoring (energy disaggregation)

GitHub - MingjunZhong/seq2point-nilm: Sequence-to-point learning for non-intrusive load monitoring

改进版本(进行剪枝)

Code: GitHub - JackBarber98/pruned-nilm: This repo provides four weight pruning algorithms for use in sequence-to-point energy disaggregation as well as three alternative neural network architectures.

paper: Lightweight Non-Intrusive Load Monitoring Employing Pruned Sequence-to-Point Learning | Proceedings of the 5th International Workshop on Non-Intrusive Load Monitoring

推荐理由:这里包括了seq2seq和seq2point两种方法,是很多论文的benchmark比较对象,必读!下面的改进版本可以暂时略过。

改进版本1:Structured Probabilistic Pruning

Wang, H., Zhang, Q., Wang, Y., Hu, H. (2018) Structured Probabilistic Pruning for Convolutional Neural Network Acceleration. Zhejiang University, China.

pdf: https://arxiv.org/pdf/1709.06994.pdf

改进版本2:Entropy-Based Pruning

Hur, C., Kang, S. (2018) Entropy-Based Pruning Method For Convolutional Neural Networks. The Journal of Supercomputing, 75:2950–2963.

pdf: https://link-springer-com/content/pdf/10.1007/s11227-018-2684-z.pdf

改进版本3:Relative Threshold Pruning

Asouri, A. H., Abdelrahman, T. S., Remedios, A. D. (2019) Retraining-Free Methods for Fast On-the-Fly Pruning of Convolutional Neural Networks. Neurocomputing, 370 56-59.

pdf: https://www.sciencedirect.com/science/article/abs/pii/S0925231219312019


《Sliding Window Approach for Online Energy Disaggregation Using Artificial Neural Networks》

code :https://github.com/OdysseasKr/online-nilm

pdf :https://dl.acm.org/doi/pdf/10.1145/3200947.3201011


NeuralNILM_Pytorch(这个不是论文)

注解:这个不是论文,应该是一个学生对其它论文的一个复现,基于pytorch框架,因为之前的工作很多时候都是用Tensorflow做的。但是这个仓库意外地包含了两篇中文核心的复现。

code: GitHub - Ming-er/NeuralNILM_Pytorch

下面是来自他github的截图

[5]基于 seq2seq 和 Attention 机制的居民用户非侵入式负荷分解

[8]基于卷积块注意力模型的非侵入式负荷分解算法


《Deep Latent Generative Models For Energy Disaggregation》

code: Bitbucket

注解:GAN


《WaveNILM: A causal neural network for power disaggregation from the complex power signal》

GitHub - picagrad/WaveNILM: WaveNILM as published at ICASSP 2019

注解:通过wavenet,把电力信号当成语音信号来处理?膨胀卷积,扩大感受野。


《A Non-Intrusive Load Monitoring Algorithm Based on Non-Uniform Sampling of Power Data and Deep Neural Networks》

code: a3labShares / A3NeuralNILM · GitLab


《A Tree-Structured Neural Network Model for Household Energy Breakdown》

pdf: A Tree-Structured Neural Network Model for Household Energy Breakdown | The World Wide Web Conference

code: GitHub - yilingjia/TreeCNN-for-Energy-Breakdown: WWW19' A Tree-Structured Neural Network Model for Household Energy Breakdown


《Deep Learning-Based Energy Disaggregation and On/Off Detection of Household Appliances》

pdf : Deep Learning-Based Energy Disaggregation and On/Off Detection of Household Appliances | ACM Transactions on Knowledge Discovery from Data

code : GitHub - jiejiang-jojo/fast-seq2point


《EdgeNILM: Towards NILM on Edge devices》

pdf : EdgeNILM | Proceedings of the 7th ACM International Conference on Systems for Energy-Efficient Buildings, Cities, and Transportation

code : https://github.com/EdgeNILM/EdgeNILM


《Lightweight Non-Intrusive Load Monitoring Employing Pruned Sequence-to-Point Learning》

Code:  GitHub - JackBarber98/pruned-nilm: This repo provides four weight pruning algorithms for use in sequence-to-point energy disaggregation as well as three alternative neural network architectures.

paper:  Lightweight Non-Intrusive Load Monitoring Employing Pruned Sequence-to-Point Learning | Proceedings of the 5th International Workshop on Non-Intrusive Load Monitoring

注解:剪枝;


《UNet-NILM: A Deep Neural Network for Multi-tasks Appliances State Detection and Power Estimation in NILM》

pdf: UNet-NILM | Proceedings of the 5th International Workshop on Non-Intrusive Load Monitoring

code : https://github.com/sambaiga/UNETNiLM

注解:Unet;多任务Multi-task;


《Exploring Time Series Imaging for Load Disaggregation》

pdf: https://mobile.aau.at/publications/bousbiat-buildsys20-imaging.pdf

code: https://github.com/BHafsa/image-nilm

注解:把NILM当成图像分类来做,挺有意思的,有好几篇也是这个思路,下面展开一下说明,代码在后面补充。

将一维序列数据转化为二维图像数据,把负荷识别当成进行图片分类来做,同时还有分灰度编码和彩色编码的图。

常见一维数据转二维的方法:

  1. 格拉米角场GAFs

example1: 《非侵入式负荷识别边缘计算颜色编码研究》(2020

example2 : 《Imaging Time-Series for NILM》(2019)

2.马尔科夫变迁场MTF

example1:《Exploring Time Series Imaging for Load Disaggregation》(2020)

3.递归图Recurrence Plot

example1:Improved Appliance Classification in Non-Intrusive Load Monitoring Using Weighted Recurrence Graph and Convolutional Neural Networks(2020)

4.短时傅里叶变换STFT

(这个应该有的,但是没记录)

5.V-I轨迹

example1:《A feasibility study of automated plug-load identification from high-frequency measurements》(2015)    二值化V-I轨迹

example2:《Appliance classification using VI trajectories and convolutional neural networks》(2017)  灰度的V-I轨迹

example3:《Non-Intrusive Load Monitoring by Voltage–Current Trajectory Enabled Transfer Learning》(2019)   彩色的V-I轨迹


《Non-Intrusive Load Disaggregation by Convolutional Neural Network and Multilabel Classification》

code: GitHub - lmssdd/TPNILM: Notebook for Temporal Pooling NILM

pdf: Applied Sciences | Free Full-Text | Non-Intrusive Load Disaggregation by Convolutional Neural Network and Multilabel Classificationz

注解:用到了语义分割里面比较出名的PSPNet来做多标签分类,可以读一下,代码也容易懂。


《Sequence To Subsequence Learning With Conditional Gan For Power Disaggregation》

pdf: Sequence-To-Subsequence Learning With Conditional Gan For Power Disaggregation | IEEE Conference Publication | IEEE Xplore

code: GitHub - DLZRMR/seq2subseq: Seq2subseq method for NILM

注解:GAN,生成对抗网络;


《Imaging Time-Series for NILM》

code: GitHub - LampriniKyrk/Imaging-NILM-time-series


《Non-Intrusive Load Monitoring with Fully Convolutional Networks》

pdf: https://arxiv.org/abs/1812.03915

code: GitHub - cbrewitt/nilm_fcn: Fully convolutional neural networks for non-intrusive load monitoring


《Improving Non-Intrusive Load Disaggregation through an Attention-Based Deep Neural Network》

pdf: https://www.mdpi.com/1996-1073/14/4/847/pdf

code: GitHub - antoniosudoso/attention-nilm: An Attention-based Deep Neural Network for Non-Intrusive Load Monitoring


《Sequence to point learning based on bidirectional dilated residual network for non-intrusive load monitoring》

pdf: https://www.sciencedirect.com/science/article/pii/S0142061521000776

code: https://github.com/linfengYang/BitcnNILM

注解:wavenet+空洞卷积,瞎搞的堆叠罢了。


《Generative Adversarial Networks and TransferLearning for Non-Intrusive Load Monitoring in Smart Grids》

pdf: Generative Adversarial Networks and Transfer Learning for Non-Intrusive Load Monitoring in Smart Grids | IEEE Conference Publication | IEEE Xplore

code :GitHub - Awadelrahman/GAN-NILM: GAN-NILM: Using Generative Adversarial Networks to perform Non-Intrusive Load Monitoring (aka load disaggregation)

注解:GAN+Transfer Learning(迁移学习),后面迁移学习相关的我再补充一篇


《Improved Appliance Classification in Non-Intrusive Load Monitoring using Weighted Recurrence Plots and Convolutional Neural Networks》

pdf: Energies | Free Full-Text | Improved Appliance Classification in Non-Intrusive Load Monitoring Using Weighted Recurrence Graph and Convolutional Neural Networks

code: GitHub - sambaiga/WRG-NILM: Weighted Recurrence Graph for appliance classification


《Concurrent Loads Disaggregator for Non-Intrusive Load Monitoring》

pdf: https://arxiv.org/pdf/2106.02352.pdf

code: GitHub - arx7ti/cold-nilm: The code to reproduce all the numerical results and the plots of the paper.


《Energy Disaggregation using Variational Autoencoders》

pdf: https://arxiv.org/pdf/2103.12177.pdf

code :GitHub - ETSSmartRes/VAE-NILM: Non-Intrusive Load Monitoring based on VAE model

注解:建议跑一下这个代码,挺仔细的,这几个作者做的实验,虽然其实就是一个VAE(变分自编码器),创新性一般的样子。


《Nonintrusive Residential Electricity Load Decomposition Based on Transfer Learning》

pdf: Sustainability | Free Full-Text | Nonintrusive Residential Electricity Load Decomposition Based on Transfer Learning

code : https://github.com/eyangs/transferNILM

注解:又是迁移学习。


《Adaptive Weighted Recurrence Graph for Appliance Recognition in Non-Intrusive Load Monitoring》

code : GitHub - sambaiga/AWRGNILM: Adaptive Recurrence Graph for Appliance classification in NILM.

pdf:https://ieeexplore.ieee.org/abstract/document/9144492


《Multi-Label Learning for Appliance Recognition in NILM Using Fryze-Current Decomposition and Convolutional Neural Network》

PDF:https://www.mdpi.com/1996-1073/13/16/4154/htm

code: https://github.com/sambaiga/MLCFCD


《DeepDFML-NILM: A New CNN-Based Architecture for Detection, Feature Extraction and Multi-Label Classification in NILM Signals》

code: GitHub - LucasNolasco/DeepDFML-NILM: A new CNN architecture to perform detection, feature extraction, and multi-label classification of loads, in non-intrusive load monitoring (NILM) approaches, with a single model for high-frequency signals.

pdf: DeepDFML-NILM: A New CNN-Based Architecture for Detection, Feature Extraction and Multi-Label Classification in NILM Signals | IEEE Journals & Magazine | IEEE Xplore


基于Transformer(BERT之类的):


A Bidirectional Transformer Model for Non-Intrusive Load Monitoring

文献下载: http://nilmworkshop.org/2020/proceedings/nilm20-final88.pdf

Code: https://github.com/Yueeeeeeee/BERT4NILM


《Efficient Design of Energy Disaggregation Model with BERT-NILM Trained by AdaX Optimization Method for Smart Grid》

pdf: Sci-Hub | Efficient Design of Energy Disaggregation Model with BERT-NILM Trained by AdaX Optimization Method for Smart Grid | 10.3390/en14154649

code :https://github.com/vahit19/smart_grid


《Neural Fourier Energy Disaggregation》

pdf : https://www.mdpi.com/1424-8220/22/2/473

code : https://github.com/ChristoferNal/Neural-Fourier-Energy-Disaggregation


迁移学习Transfer Learning(包括前面提过的两篇):


《Transfer Learning for Non-Intrusive Load Monitoring》

https://github.com/MingjunZhong/transferNILM

基于TensorFlow2.0版本的实现

GitHub - MingjunZhong/seq2point-nilm: Sequence-to-point learning for non-intrusive load monitoring


图卷积神经网络GNN

GitHub - LeoVogiatzis/GNN_based_NILM: Non Intrusive Load Monitoring based on Graph Neural Networks and Representation Learning

注解:22年6月的时候发现的,截止我发文的时候(2023年1月),也不知道这个作者发paper了没

隐马尔科夫HMM:


《Exploiting HMM Sparsity to Perform Online Real-Time Nonintrusive Load Monitoring》

GitHub - smakonin/SparseNILM: The super-state hidden Markov model disaggregator that uses a sparse Viterbi algorithm for decoding. This project contains the source code that was use for my IEEE Transactions on Smart Grid journal paper.


《An Extensible Approach for Non-Intrusive Load Disaggregation With Smart Meter Data》

An Extensible Approach for Non-Intrusive Load Disaggregation With Smart Meter Data | IEEE Journals & Magazine | IEEE Xplore

GitHub - WilsonKong/siqpnilm


贝叶斯方法:

《Latent Bayesian melding for integrating individual and population models》

GitHub - MingjunZhong/LatentBayesianMelding: Latent Bayesian melding for non-intrusive load monitoring (energy disaggregation)

Graph Signal Processing

《On a Training-Less Solution for Non-Intrusive Appliance Load Monitoring Using Graph Signal Processing》

Code: GitHub - loneharoon/GSP_energy_disaggregator: This contains the energy disaggregation code based on Graph Signal Processing approach

pdf: https://ieeexplore.ieee.org/document/7457610

时间序列、Vector之类的:


《On time series representations for multi-label NILM》

pdf: On time series representations for multi-label NILM

code: GitHub - ChristoferNal/multi-nilm: Multi-NILM: Multi Label Non Intrusive Load Monitoring


《A Machine Learning Approach for NILM based on Odd Harmonic Current Vectors》

pdf :A Machine Learning Approach for NILM based on Odd Harmonic Current Vectors | IEEE Conference Publication | IEEE Xplore

code :GitHub - kbodurri/NILM: Code for our MPS 2019 paper entitled "A Machine Learning Approach for NILM based on Odd Harmonic Current Vectors"


杂七杂八说不清楚的其它代码(除了下面两篇论文,其它随便看看)


《Mixed-Integer Nonlinear Programming for State-based Non-Intrusive Load Monitoring》

code: GitHub - antoniosudoso/nilm-bqp: Mixed-Integer Nonlinear Programming for NILM

pdf: https://arxiv.org/abs/2106.09158


《Universal Non-Intrusive Load Monitoring (UNILM) Using Filter Pipelines, Probabilistic Knapsack, and Labelled Partition Maps》

pdf : https://arxiv.org/abs/1907.06299

code :GitHub - compsust/KP-NILM: Supervised NILM using multiple-choice knapsack problem (MCKP).


别人做的集合(论文、代码、数据集)

https://github.com/ch-shin/awesome-nilm


CS446 Project: Electric Load Identification using Machine Learning

code: GitHub - andydesh/nilm: Non intrusive load monitoring using machine learning


ZhangRaymond/Neural-NILM


vyokky/AAAI-NILM


《NILM: classification VS regression》

非侵入式负载监测(NILM)旨在预测家庭中家用电器的状态或消耗,只需知道汇总的电力负荷。NILM可以被表述为回归问题或最常见的分类问题。由智能电表收集的大多数数据集允许自然地定义回归问题,但相应的分类问题是一个派生问题,因为它需要通过阈值处理方法从电力信号转换为每个设备的状态。我们处理了三种不同的阈值处理方法来执行这一任务,讨论了它们在UK-DALE数据集的各种设备上的差异。我们分析了深度学习最先进的架构在回归和分类问题上的表现,介绍了选择最方便的阈值处理方法的标准。

code:https://github.com/UCA-Datalab/nilm-thresholding


Neural NILM: Deep Neural Networks Applied to Energy Disaggregation

code: https://github.com/louisyuzhe/MachineLearning_NILM

注解:好像是国外某个大学生的本科毕业设计

NILM非侵入式负荷识别(papers with code、data)带代码的论文整理——(论文及实现代码篇) 全网最全相关推荐

  1. NILM非侵入式负荷识别(papers with code、data)带代码的论文整理——(公开数据集、工具、和性能指标篇) 全网最全

    说在最前面 这篇文章主要介绍用于非侵入式负荷识别领域目前的公开数据集.工具和其它等,如果需要看论文及具体代码实现,看我上一篇的文章. 其外,不是所有数据集我都用过,我只用过UK-DALE,所以其它数据 ...

  2. 基于优化智能算法(粒子群灰狼)的非侵入式负荷识别(NILM)建模(提供代码下载)

    基于优化智能算法(粒子群&灰狼)的非侵入式负荷识别(NILM)建模 本文主要从智能算法入手,介绍非侵入式识别的代码具体应用思路和场景,如有瑕疵,请海涵. 1.1 优化智能算法概述 智能算法的研 ...

  3. 微分算法 非侵入式负荷识别_基于用户用电行为和粒子群算法的非侵入式负荷识别方法...

    基于用户用电行为和粒子群算法的非侵入式负荷识别方法 丁屹峰 1 ,杨 烁 1, 赵 乐 1 ,焦 然 1 ,马龙飞 1 ,许仪勋 2 ,王洪安 2 [摘 要] 居民用电行为是影响负荷识别的重要因素之一 ...

  4. 何为非侵入式负荷识别-事件检测

    1 事件检测方法综述 现有的事件检测方法主要分为两类:规则检测和概率模型检测.还有其他的,但是主要是这两类. 规则检测的方法是直接观察待测信号的变化,提出一种规则作为事件检测判据,规则合理与否就决定了 ...

  5. 微分算法 非侵入式负荷识别_基于决策树的非侵入式负荷识别技术

    基于决策树的非侵入式负荷识别技术 杨雨 ; [期刊名称] <科学技术创新> [年 ( 卷 ), 期] 2018(000)013 [摘要] 本文旨在对非侵入式电力负荷监测与分解技术进行研究 ...

  6. 微分算法 非侵入式负荷识别_一种非侵入式用电负荷识别方法与流程

    本发明涉及智能电网领域,具体地,涉及一种非侵入式用电负荷识别方法. 背景技术: 在智能电网环境下,智能量测设备会逐步得到广泛应用,从而能够得到用户负荷准确的.海量的数据.利用数据挖掘方法对用户负荷大数 ...

  7. 微分算法 非侵入式负荷识别_非侵入式负荷监测的识别方法和关键技术

    原标题:非侵入式负荷监测的识别方法和关键技术 在智能电网时代,必须突破目前用户家用电表只能读取用电总量,不能深入分析用户内部负荷成分,获取负荷信息有限的这一瓶颈,以完善用电信息采集系统和智能用电系统. ...

  8. 何为非侵入式负荷识别-特征提取

    1 前言 虽然没有人这么在文献中写道,但是我一直都认为事件检测是负荷识别的基础,特征提取是关键,负荷辨识只是一个简单的分类任务.不是说负荷辨识不重要,而是如果事件检测未检测到有电器状态发生变化,那就别 ...

  9. 何为非侵入式负荷识别-负荷辨识(传统机器学习)

    1 前言 其实我觉得这个部分可能没什么好讲的,但是我确实也遇到一些同学刚入门时搞不懂怎么去做负荷辨识,这篇主要针对这部分同学.本篇用支持向量机(SVM)作为代表,介绍传统机器学习算法在负荷辨识的应用. ...

最新文章

  1. java中double类型精度丢失问题及解决方法
  2. Python网络编程(线程通信、GIL、服务器模型)
  3. Design Pattern - Composite(C#)
  4. 十九、Redis 6.0 的客户端缓存
  5. Qt智能指针--QScopedPointer
  6. Scrapy 框架入门
  7. DM8168 --交叉编译ARM版 Qt (qt-everywhere-opensource-src-4.8.4)
  8. 调试WebApi的一些方法
  9. Vue中路由管理器Vue Router使用介绍(三)
  10. 【阿里云】视频点播开通与配置
  11. 应该怎么学大数据?该从哪学起?
  12. 【office 2007~office 2019】Excel日期选择控件插件安装
  13. excel序号自动更新
  14. Echarts显示自定义标注点/地图map引导线
  15. Qt 自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等效果实现
  16. 使用js修改图片像素颜色并保存
  17. 制作HTML长图的APP,长图制作工具 显示只是一张图片,点开一看却发现有很多张图片|制作长图软件...
  18. 【USACO 2020 January Silver】Berry Picking 题解
  19. Apicloud中在frame中加载数据未完成时显示加载进度条
  20. VC++6.0安装成功后如何启动应用或者如何创建快捷方式

热门文章

  1. 【c++】2.处理数据
  2. Mac启动nacos2.0.3出错
  3. java表格模型_java 的表格模型是什么?
  4. 性李 起一个如诗如梦一般的名字 三个字组成
  5. 【DFS反向建图记忆化搜索】UPC Contest2592 - 2020年秋季组队训练赛第十四场 问题 D: Mysterious Treasure
  6. 如何创建公网NAT网关
  7. 知识竞赛答题的小程序
  8. 巨头战长沙 无人逛菜场
  9. [环境配置][转载]ubuntu software 软件下载失败 unsupport proxy configured
  10. 用友 SAP 金蝶 季报