Hawk is an efficient non-intrusive sensing system capable of accurately identifying low-power appliances. In this Artifact Evaluation step, we will assess the items listed in the TODO List below.
Our goal is to earn three badges, and we welcome reviewers to raise any questions regarding the AE content through HotCRP at any time, as well as any issues encountered during execution or shortcomings in our AE process.
Due to the tight deadline, we will prioritize functional validation.
- Sampling Synchronization
- Dataset Balance Statistics
- Algorithm Validation on HawkDATA
- Ablation Study: Impact of Differential Intervals
- Ablation Study: Impact of Dataset Balance
- Final Accuracy
- BLUED Dataset
- In-the-wild video
- More detailed descriptions of code and dataset
Our validation is primarily functional, and we have already passed real-time validation on devices listed in Table 3 of the paper, including the Raspberry Pi 4B. Thus, similar or even better platforms should be supported.
- CPU: ARM A76 (Raspberry Pi 4B), Intel i7 or similar.
- Memory: At least 2GB RAM
- Storage: At least 10GB of free space. (For validation data)
The model in our project is in the standard XGBoost storage format. If reviewers wish to retrain the model, that is also possible, although they will need to upload our augmented training data (8-10.6GB). The training code does not have any particularly tricky aspects.
-
Project code: You should clone this project at first.
-
Dataset download link: Has been published anonymously here. Please download the dataset (about 5.9G) at first. Then put the "HawkDATA" in project file. The dataset consist of two parts: HawkDATA for algorithm evaluation and raw data in
SPT-at-13m
during sampling synchronization for the following validation. -
Operating System: Linux (Ubuntu)
-
Python Version: 3.9+
-
Necessary Libraries For Python:
- NumPy
- XGBoost (version >= 2.0.3, pass on the 2.0.3 and 2.1.1)
- Scikit-learn
-
Steps:
- After downloading the complete dataset from the link, place the
SPT-at-13m
data file from downloaded dataset into the./AE-process/1-SamplingSync/
folder. - In the "./AE-process/1-SamplingSync/" folder, run
chmod +x ./run-stat.sh
and./run-stat.sh
. - After about 2 minutes, the maximum error from the 413 comparison samples (measured in sampling intervals, with each being 62.5µs at 16KHz) will be printed in the console. All absolute errors will be output to “./AE-process/1-SamplingSync/Result/syncErrList.txt”.
- After downloading the complete dataset from the link, place the
-
Expected Results:
- After running for about 2 minute, the maximum synchronization error should be displayed, aiming for a value below 1 sampling point (62.5µs), and it should align with "Our strategy(~13m)" in Figure 10 of the paper.
-
Steps:
- Run the command
python ./StatDataBalance.py [path to hawkDATA]/hawkDATA/
directly in the./Hawk/AE-process/2-DatasetBalance/
folder.
- Run the command
-
Expected Results:
- The final output shows an event BR rate of 0.214 (as the old detection program could not be found, the updated detection program differs slightly from the paper, but the impact is minor). The appliance ON BR is 0.877, and the average ON-OFF BR is 0.424, consistent with the results in Section 6.2 of the paper.
This parts are collected in ./AE-process/3-Algorithm/
-
Steps:
- Modify line 7 in
tryPred.sh
to set the path:python ./DiffLenInf.py [Path-to-HawkDATA]/HawkDATA/
. - Run
chmod +x ./tryPred.sh
andtryPred.sh
(this may take around 10 minutes) to calculate the recognition accuracy for each dataset at different differential intervals, and average the results to measure the impact of differential intervals on final accuracy. - The full data output is located in the "./Result" folder, with summary results in
./Result/XGBoost-{differential interval}.txt
. Trend data will be printed in the console. - Compare the output with Figure 15.
- Modify line 7 in
-
Expected Results:
- The output should match the results in Figure 15.
-
Overview
-
Steps:
- Modify line 7 in
tryPred.sh
:python ./DiffLenInf.py [Path-to-HawkDATA]
to set the correct HawkDATA path. - Run
chmod +x ./tryPred.sh
and./tryPred.sh
and wait for the calculation across 18 test sets, with results output. - The final full results will be output in the "./Result" folder, with summary results in
./Result/XGBoost-30.txt
. Overall results will be printed in the console.
- Modify line 7 in
-
Expected Results:
- Compare the results with Figure 14. The FFT-XGBoost approach and the results with real imbalanced data should perform worse than in
./1-ImpactOfDI/Result/XGBoost-30.txt
(92.71%). We later discovered a small detail in training with imbalanced data that slightly improved accuracy compared to Figure 14, but the difference is small.
- Compare the results with Figure 14. The FFT-XGBoost approach and the results with real imbalanced data should perform worse than in
Please refer to the final output from Experiment 3.1 in "./Result/XGBoost-30.txt".
-
Overview
For us, a significant challenge has been the lack of open-source code for some high-frequency NILM algorithms that claim strong performance on high-frequency datasets like BLUED. As a result, we did not directly compare with these SOTA methods on HawkDATA.
Many related works divide validation on the BLUED dataset into Detection and Classification phases. Our comparison focuses on the performance in the second phase, while also validating our recognition of multi-state appliances.
-
Steps:
- Navigate to the folder
./Hawk/AE-process/4-BLUED/
and runpython ./tryPredictEvent.py
.
- Navigate to the folder
-
Expected Results:
The program's output in the command line should match the results presented in Table 2.