FYP2 Progress Report 1

Week 1

-Resize the size of the dataset to around 200k and use Mel spectrogram as the feature extraction.

-Train and fine-tune the model by using MobileNetv2.

 

Week 2

-Study MCUNet and NAS architecture.

-Train and fine-tune the model by using SqueezeNet.

 

Week 3

-Change the existing solution from TensorFlow to Pytorch to train the Siamese Neural Network as the MCUNet and the tinyNAS architecture are available in Pytorch only.

-Deploy the existing models on the Raspberry Pi, then the relevant performance of the model is observed.

 

Week 4

-Use the module of pytorch2keras to convert the pytorch model to keras model and change the data format from NCHW to NHWC to make sure the model can be executed on the CPU of Raspberry Pi.

-Train the model with the help of pytorch2keras and deploy the converted model on Raspberry Pi and the relevant performance is obsserved.

 

Week 5

-Fine-tune and retrain the model by using ProxylessNAS with larger scale of dataset to overcome overfitting issue.

-Start training the MCUNet.

-Deploy the model on the Raspberry Pi and test the model.

 

Remark:

The model is trained by using the architecture as shown below. The subnetwork is replaced with MobileNetv2, SqueezeNet and ProxylessNAS respectively. For the further improvement, the binary cross entropy loss is replaced with the contrastive loss that can suit better in Siamese Neural Network. Besides, implementation of MCUNet is being explored.

WhatsApp Image 2022-04-15 at 6.54.46 PM.jpeg

 

 

Training result of MobileNetv2. BCE_Loss stands for Binary Cross Entropy Loss. Contra_Loss stands for Contrastive Loss.

mbv2.JPG

 

Training result of SqueezeNet. BCE_Loss stands for Binary Cross Entropy Loss. Contra_Loss stands for Contrastive Loss.

SqueezeNet.JPG

 

Training result of ProxylessNAS. BCE_Loss stands for Binary Cross Entropy Loss. Contra_Loss stands for Contrastive Loss.

ProxylessNAStf.JPG

 

Training result of MCUNet by using Contrastive Loss.

mcunet256kbFull.JPG

 

Reference:

1. https://arxiv.org/pdf/1602.07360.pdf (SqueezeNet)

2. https://arxiv.org/pdf/2007.10319.pdf (MCUNet)

3. https://github.com/gmalivenko/pytorch2keras (pytorch2keras)

4. https://github.com/mit-han-lab/proxylessnas (ProxylessNAS)

5. https://datahacker.rs/019-siamese-network-in-pytorch-with-application-to-face-similarity/ (Siamese Network in Pytorch)

6. https://github.com/rouyunpan/mcunet (MCUNet GitHub Repository)