Ryan – Week 4 Status Report

For this week, I began classifying the heart sound training data using a CNN. I researched that CNN’s aren’t very optimal to use for audio files so instead I am taking the spectograms of the data and then training the network on the images of spectograms rather than originally planned as the audio files. I also changed the architecture of the network to now include five convolutional layers that are each followed by a normalization and ReLU layer. The new architecture for my CNN in Matlab code is:

  1. convolution2dLayer
  2. batchNormalizationLayer
  3. reluLayer
  4. maxPooling2dLayer
  5. convolution2dLayer
  6. batchNormalizationLayer
  7. reluLayer
  8. maxPooling2dLayer
  9. convolution2dLayer
  10. batchNormalizationLayer
  11. reluLayer
  12. maxPooling2dLayer
  13. convolution2dLayer
  14. batchNormalizationLayer
  15. reluLayer
  16. convolution2dLayer
  17. batchNormalizationLayer
  18. reluLayer
  19. maxPooling2dLayer
  20. dropoutLayer
  21. fullyConnectedLayer
  22. softmaxLayer
  23. weightedClassificationLayer

Here is also a visualization of example spectograms of both normal and abnormal heart sounds from the training data:

I then ran the CNN and it achieved an accuracy of 56.52% in 55 seconds to run. I ran it with 25 epochs.

Here is the graph of the training session:

Improvements have to be made to the preprocessing of the data as well as finding a more optimal architecture for this data in the next week.

I am currently on schedule for the week.

Team – Week 3 Status Report

What are the most significant risks that could jeopardize the success of the project?
For this week, the most significant risk found was whether or not the filtering techniques being used were efficient enough to classify the sound data. After classification, if the results are bad, then it could either be a problem with our classification method or our filtering method not being good enough.
How are these risks being managed? What contingency plans are ready?
Eri and Ryan are meeting frequently and working on everything together for classification once again. There are certain errors such as the CNN not reaching a final accuracy rating that points to the structure of the CNN not being good for the data being inputted.
Were any changes made to the existing design of the system (requirements, block diagram, system spec, etc)? Why was this change necessary, what costs does the change incur, and how will these costs be mitigated going forward?
We did not make any changes to the requirements/block diagram/system spec this week.
Provide an updated schedule if changes have occurred.
There have been no changes.

Ryan – Week 3 Status Report

This week I worked on classifying the testing heart sound data as abnormal vs normal using a Convolutional Neural Network. The design for the CNN is as follows:
Since we are no longer using an external cloud service to run our analysis, I have to decrease the size of the data using MaxPool Layer, which transforms the original data file by ignoring the local minimum values and only extracting the maximum values in a local area. The ReLU layer is mainly used to make the data non-linear, but it also reduces the computation time because it sets all negative values to be zero and computations with values of zero are much easier on a system than doing computations on also negative values. This structure was successful for me when classifying images of handwritten digits, so I was curious whether it would also be successful for audio data. The input audio data for the neural network was the filtered training sound files from week 2. If unsuccessful, I have to either improve the filtering technique using Eri’s research or change the structure of the CNN.
This is what the results looked like, but it never reached a final accuracy rating since it kept jumping around for the final iterations, so the structure of the CNN has to be changed for the next few weeks.
I am on schedule with the classification.

Ryan – Week 2 Status Report

At the beginning of the week, Eri and I once again worked together on reducing noise of the heart sound test data. We first began by applying a band-pass filter to get rid of the higher and lower frequency noises that aren’t audible to a human ear (20 kHz). I’ve attached the original heart sound here: 

Then here is the audio file after filtering out those frequencies:

As you can tell the background noise was reduced, so that the S1 and S2 beats are more audible and easier to analyze. We had an issue when there were sounds that were within the frequency caused by scuffling the mic, which we have to do further noise reduction or just eliminate those portions of the audio to analyze whether an abnormality exists.

I then decided to help designing the actual ML algorithm to classify the data because I’ve worked with Convolutional Neural Networks in my class and this would eliminate the need to segment the data because CNN’s are time shift invariant. The structure of my network is this:

I was able to achieve a 99.5% accuracy in classifiying images of handwritten digits, so I have to test the accuracy with audio files with this structure. I plan on testing this first thing tomorrow and will have number results in the next weekly update. Of course changes to this structure will have to occur to optimize the results for this dataset.

We are now on schedule because we were able to eliminate noise from the sound file as well as eliminate the need for segmentation of the heart sounds. We do want to test the accuracy of the segmentation and then classification through Support Vector Machines in the future to compare with these results.