一、Convolution
对一个 r×c 的 Image 用 k个 a×b
的滤波器做卷积,则得到k × (r - a + 1) × (c - b + 1)的特征。
利用 matlab 的 conv2 函数操作十分方便。
convolvedImage = conv2(im, filter, 'valid');
二、Pooling
Pooling 一般用mean 或 max - pooling。如图所示。这里在 matlab 里有个技巧是利用卷积进行求mean-pooling.
pooling具有尺寸不变形,起到降维的作用。
filter = ones(poolDim)./(poolDim*poolDim);
for imageNum = 1:numImages
for featureNum = 1:numFilters
convolvedImage = convolvedFeatures(:, :, featureNum, imageNum);
pooledImage = conv2(convolvedImage, filter, 'valid');
pooledImage = pooledImage(1:poolDim:end, 1:poolDim:end);
pooledFeatures(:, :, featureNum, imageNum) = pooledImage;
end
end