FYP2 Progress Report 2
From week 5 to week 9, the speaker identification models that are trained by using different sub-networks are fine-tuned based on the siamese neural network structure as shown in the figure below. This is to prevent overfitting issues.
Based on this structure, the subnetwork is changed based on the list of the network in the result section while the loss function of binary cross entropy is replaced by using contrastropy loss as it works more efficient in the siamese neural network.
The summary of the overall results is shown as the figure below. (lr = learning rate, BS = batch size)
The default parameter of learning rate and optimizer is 3e-4 and Adam respectively while the default bastch size is 64 with 1000 as the steps per epoch. However, the batch size is set to 32 while training the model by using MobileNet due to GPU memory is not enough. In addition, the learning rate of MCUNet512kb is set to 1e-5 to make sure it can converge successfully as the default learning rate for this experiment (3e-4) fails to make it to converge.
According to the result, MCUNet256kb has the smallest memory size while its inference time is slightly higher than SqueezeNet. Even though SqueezeNet has the shortest inference time, its memory size is slightly higher than MCUNet256kb and it has lower accuracy compared to MCUNet256kb too.
Furthermore, a simple GUI is created by using pyqt5 to act as the frontend of the speaker identification system. However, it will be modified to become a touchless system. The speaker identification system will then be enhanced by integrating the wake word detector by using module pvporcupinedemo which can work in an offline mode.
References:
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/rouyunpan/mcunet (MCUNet GitHub Repository)
5. https://github.com/Picovoice/porcupine (wake word detector GitHub Repository)
6. https://build-system.fman.io/pyqt5-tutorial (Simple pyqt5 tutorial link)