hadrilec's picture
new model
5d00c1b
|
Raw
History Blame
3.39 kB

CNN Architecture (Mathematical Formulation)

We consider an input image

x∈R3Γ—256Γ—256 x \in \mathbb{R}^{3 \times 256 \times 256}

with 3 color channels (RGB). Shapes are written as (channels Γ— height Γ— width).


1. Convolution Block 1 (16 channels)

Conv1 (3β†’16, kernel=3, padding=1, stride=1):

yk,i,j(1)=βˆ‘c=13βˆ‘u=βˆ’11βˆ‘v=βˆ’11Wk,c,u,v(1)β€…β€Šxc, i+u, j+v+bk(1) y^{(1)}_{k,i,j} =\sum_{c=1}^{3}\sum_{u=-1}^{1}\sum_{v=-1}^{1} W^{(1)}_{k,c,u,v}\; x_{c,\,i+u,\,j+v} + b^{(1)}_{k}

Output:

Y(1)∈R16Γ—256Γ—256 Y^{(1)} \in \mathbb{R}^{16 \times 256 \times 256}

BatchNorm1:

y^k,i,j(1)=yk,i,j(1)βˆ’ΞΌkΟƒk2+Ξ΅,zk,i,j(1)=Ξ³ky^k,i,j(1)+Ξ²k \hat{y}^{(1)}_{k,i,j}=\frac{y^{(1)}_{k,i,j}-\mu_k}{\sqrt{\sigma_k^2+\varepsilon}},\qquad z^{(1)}_{k,i,j}=\gamma_k \hat{y}^{(1)}_{k,i,j}+\beta_k

ReLU1:

ak,i,j(1)=max⁑(0,zk,i,j(1)) a^{(1)}_{k,i,j} = \max(0, z^{(1)}_{k,i,j})

MaxPool1 (2Γ—2, stride=2):

pk,i,j(1)=max⁑0≀u,v<2ak, 2i+u, 2j+v(1) p^{(1)}_{k,i,j} = \max_{0 \le u,v < 2} a^{(1)}_{k,\,2i+u,\,2j+v}

Shape: $16 \times 128 \times 128$


2. Convolution Block 2 (32 channels)

Conv2 (16β†’32):

yk,i,j(2)=βˆ‘c=116βˆ‘u=βˆ’11βˆ‘v=βˆ’11Wk,c,u,v(2)β€…β€Špc, i+u, j+v(1)+bk(2) y^{(2)}_{k,i,j} =\sum_{c=1}^{16}\sum_{u=-1}^{1}\sum_{v=-1}^{1} W^{(2)}_{k,c,u,v}\; p^{(1)}_{c,\,i+u,\,j+v} + b^{(2)}_{k}

Then BN2 β†’ ReLU2 β†’ MaxPool2.

Shape after pooling: $32 \times 64 \times 64$.


3. Convolution Block 3 (64 channels)

Conv3 (32β†’64):

yk,i,j(3)=βˆ‘c=132βˆ‘u=βˆ’11βˆ‘v=βˆ’11Wk,c,u,v(3)β€…β€Špc, i+u, j+v(2)+bk(3) y^{(3)}_{k,i,j} =\sum_{c=1}^{32}\sum_{u=-1}^{1}\sum_{v=-1}^{1} W^{(3)}_{k,c,u,v}\; p^{(2)}_{c,\,i+u,\,j+v} + b^{(3)}_{k}

Then BN3 β†’ ReLU3 β†’ MaxPool3.

Shape after pooling: $64 \times 32 \times 32$.


4. Flatten

h=vec(p(3))∈R64β‹…32β‹…32=R65536 h = \mathrm{vec}\bigl(p^{(3)}\bigr) \in \mathbb{R}^{64 \cdot 32 \cdot 32} = \mathbb{R}^{65536}


5. Fully Connected Head

FC1 (65536β†’256) + ReLU:

u1=W1h+b1,a1=max⁑(0,u1) u_1 = W_1 h + b_1,\quad a_1 = \max(0, u_1)

Dropout (p=0.5):

m∼Bernoulli(0.5)256,a~1=mβŠ™a10.5 m \sim \text{Bernoulli}(0.5)^{256},\quad \tilde{a}_1 = \frac{m \odot a_1}{0.5}

FC2 (256β†’64) + ReLU:

u2=W2a~1+b2,a2=max⁑(0,u2) u_2 = W_2 \tilde{a}_1 + b_2,\quad a_2 = \max(0, u_2)

FC3 (64β†’4) logits:

z=W3a2+b3∈R4 z = W_3 a_2 + b_3 \in \mathbb{R}^4


6. Prediction & Loss

Softmax (conceptual):

pc=ezcβˆ‘j=14ezj,c=1,…,4 p_c = \frac{e^{z_c}}{\sum_{j=1}^4 e^{z_j}}, \quad c = 1,\dots,4

Predicted class:

y^=arg⁑max⁑czc \hat{y} = \arg\max_c z_c

Cross-Entropy Loss for true class $y$:

L(z,y)=βˆ’log⁑py=βˆ’zy+log⁑ ⁣(βˆ‘j=14ezj) \mathcal{L}(z,y) = -\log p_y = -z_y + \log\!\Bigl(\sum_{j=1}^{4} e^{z_j}\Bigr)


7. Why These Pieces Matter

  • Deeper convs (16β†’32β†’64): extract features hierarchically (edges β†’ textures β†’ scenes).
  • ReLU: avoids vanishing gradients, speeds training.
  • BatchNorm: normalizes activations, stabilizes training, regularizes.
  • MaxPool: adds translation invariance, reduces computation.
  • Dropout: prevents overfitting by randomly dropping neurons.
  • FC head: compresses learned features into logits for the 4 classes.

CNN Architecture Diagram

Input (3 Γ— 256 Γ— 256)
        β”‚
        β–Ό
[Conv1: 3β†’16, 3Γ—3 + BN + ReLU]
        β”‚
        β–Ό
MaxPool 2Γ—2 β†’ (16 Γ— 128 Γ— 128)
        β”‚
        β–Ό
[Conv2: 16β†’32, 3Γ—3 + BN + ReLU]
        β”‚
        β–Ό
MaxPool 2Γ—2 β†’ (32 Γ— 64 Γ— 64)
        β”‚
        β–Ό
[Conv3: 32β†’64, 3Γ—3 + BN + ReLU]
        β”‚
        β–Ό
MaxPool 2Γ—2 β†’ (64 Γ— 32 Γ— 32)
        β”‚
        β–Ό
Flatten β†’ 65536
        β”‚
        β–Ό
[FC1: 65536β†’256 + ReLU + Dropout]
        β”‚
        β–Ό
[FC2: 256β†’64 + ReLU]
        β”‚
        β–Ό
[FC3: 64β†’4 logits]
        β”‚
        β–Ό
Softmax β†’ {Sea, Forest, Urban, Field}