1. Edge Detection
- Vertical Edge Detection: Convolve the image with Matrix 1 0 − 1 1 0 − 1 1 0 − 1 \begin{matrix} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1 & 0 & -1 \end{matrix} 111000−1−1−1
- Horizontal Edge Detection: Convolve the image with Matrix 1 1 1 0 0 0 − 1 − 1 − 1 \begin{matrix} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1 & -1 & -1 \end{matrix} 10−110−110−1
- Sobel Filter:
1
0
−
1
2
0
−
2
1
0
−
1
\begin{matrix} 1 & 0 & -1 \\ 2 & 0 & -2 \\ 1 & 0 & -1 \end{matrix}
121000−1−2−1
Give more attention to center - Scharr Filter: 3 0 − 3 10 0 − 10 3 0 − 3 \begin{matrix} 3 & 0 & -3 \\ 10 & 0 & -10 \\ 3 & 0 & -3 \end{matrix} 3103000−3−10−3
卷积函数:
python : conv_forward
opencv : filter2D
2. Padding
- Pad the image to save information from borders before convolution
- Valid Convolution: Direct Convolution, Size of output is restricted without padding
Same Convolution: Size of output is the same as input
3. Strided Convolution
- The step of convolution is not one.
- size of input is n, stride s, filter size f, padding p, size of output is n + 2 p − f s + 1 \frac {n+2p-f} {s} +1 sn+2p−f+1
- cross-correlation / convolution: flip the matrix both vertically and horizontally
4. Convolution on 3-D Images
5. Convolution Layer in CNN
- Convolve with filter
- Add bias
- Apply it to function R e l u Relu Relu
- Go to the next layer
6. Pooling Layer in CNN
- Max Pooling: Reduce the size of features by taking MAX from every small matrix
- Average Pooling: taking the AVERAGE value
7. Fully-Connected Layer in CNN
- can be seen as a layer in neural network
- neighboring layers are fully-connected