I implemented a neural network called PCANet.
As the name implies, PCANet is a type of CNN that calculates network weights by PCA (Principal Component Analysis).
PCANet has the following features.
PCANet regards the patch cut out from the image as a vector, and its main component is the weight of the network. In general CNN, learning is performed by back-propagating the difference between the target output and the network output throughout the network. On the other hand, PCANet does not require a teacher label because once an image is given, learning can be done simply by applying PCA.
Since the model consists only of linear calculations and histogram calculations, it seems to be less expressive than a non-linear model. For example, Identification accuracy in CIFAR 10 has not reached 80%.
You may want to use PCANet when you say, "There is not enough calculation amount to do Deep Learning, but the accuracy is poor with HoG".
We then subtract patch mean from each patch
However, it is not known whether it is the average of the patches extracted from all the images in the dataset or the average of the patches extracted for each image. I think it's probably the latter because it can eliminate the difference in brightness between images.
Since PCA is basically batch processing, it is not possible to divide data into small batches and learn them like mini-batch. For this reason, memory will be insufficient when learning with very large data. As an implementation solution
Therefore, we will make improvements as necessary in the future.
Recommended Posts