Goal
The purpose of this project was to detect faults in a wind turbine from 3-axis accelerometer data from both the nacelle and bearing. The goal was to detect faults with high certainty using an Artificial Neural Network.
Method
To complete this project, I built 2 ANNs, one for each component of the wind turbine. After testing low-pass filters, median filters, min-max, and z-score normalization, I found that a median filter (window size 3) combined with z-score normalization provided the best results in terms of validation accuracy and training stability.
I tried various architectures and activation functions. I used the Adam optimizer, a categorical cross entropy loss function, a batch size of 4, and early stopping to prevent over-training like in the photos on the right.
The final architecture was
- Dense(16) (ReLU)
- Dropout(30%)
- Dense(8) (ReLU)
- Dropout(30%)
- Dense(2) (Softmax)
Once the ANNs were built, I applied sensor fusion. I tried early fusion using a different architecture and a slower learning rate. I also tried late fusion simply using the product T-norm. I compared the results with learning curves, accuracy, and confusion matrices.
All of this project was done using Python, TensorFlow, and NumPy.
Results
- Achieved 98% accuracy on bearing test data
- Achieved 73% accuracy on nacelle test data
- Achieved 95% accuracy with early fusion
- Achieved 97% accuracy with T-norm late fusion