DFRNet-v1-Baseline / architecture.txt
IndranilB's picture
Initial release of DFRNet-v1 Baseline
4eef8da verified
Raw
History Blame Contribute Delete
2.94 kB
DFRNet-v1 Baseline
==================
OVERVIEW
--------
DFRNet-v1 is a lightweight convolutional image-to-image network
developed as a baseline for image restoration experiments.
The model takes an RGB image as input and transforms it through
convolutional feature extraction layers.
The encoder progressively changes the channel representation:
RGB Input
3 channels
|
v
9 channels
|
v
27 channels
|
v
3 channels
The resulting three-channel representation is passed to the decoder.
The decoder uses bilinear interpolation to resize the output to:
Height: 640 pixels
Width: 1024 pixels
ARCHITECTURE
------------
Input RGB Image
|
v
Encoder
|
+-- ConvBlock: 3 -> 9
|
+-- ConvBlock: 9 -> 27
|
+-- Conv2D: 27 -> 3
|
v
Decoder
|
+-- Bilinear Upsampling
Output: 640 x 1024
|
v
Reconstructed Output Image
CONVBLOCK
---------
Each ConvBlock contains:
Conv2D (3x3)
|
v
ReLU
|
v
Conv2D (3x3)
|
v
ReLU
MODEL STATISTICS
----------------
Total Parameters:
10,524
Trainable Parameters:
10,524
PYTORCH MODEL
-------------
ImageRegressionNet(
(encoder): Encoder(
(stage_1): ConvBlock(
(block): Sequential(
(0): Conv2d(3, 9, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(9, 9, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
)
)
(stage_2): ConvBlock(
(block): Sequential(
(0): Conv2d(9, 27, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(27, 27, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
)
)
(stage_3): Conv2d(27, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(decoder): Decoder(
(upsample_block): Upsample(size=(640, 1024), mode='bilinear')
)
(encoder_decoder): Sequential(
(0): Encoder(
(stage_1): ConvBlock(
(block): Sequential(
(0): Conv2d(3, 9, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(9, 9, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
)
)
(stage_2): ConvBlock(
(block): Sequential(
(0): Conv2d(9, 27, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(27, 27, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
)
)
(stage_3): Conv2d(27, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(1): Decoder(
(upsample_block): Upsample(size=(640, 1024), mode='bilinear')
)
)
)