a Pytorch reimplementation of SSRNet.
author : oukohou
time : 2019-09-26 16:44:48
email : [email protected]
the official keras version is here: SSR-Net
- | train | valid | test |
---|---|---|---|
version_v1^[1] | train Loss: 22.0870 CA_3: 0.5108, CA_5: 0.7329 | val Loss: 44.7439 CA_3: 0.4268, CA_5: 0.6225 | test Loss: 35.6759 CA_3: 0.4935, CA_5: 0.6902 |
original paper | ** | ** | CA_3: 0.549, CA_5: 0.741 |
version_v2^[2] | train Loss: 2.9401 CA_3: 0.6326, CA_5: 0.8123 | val Loss: 4.7221 CA_3: 0.4438, CA_5: 0.6295 | test Loss: 3.9311 CA_3: 0.5151, CA_5: 0.7163 |
[^1]: train from scratch, use MSEloss;
[^2]: use pretrianed my implementation_v1, use L1Loss.
batch_size = 50
input_size = 64
num_epochs = 90
learning_rate = 0.001 # originally 0.001
weight_decay = 1e-4 # originally 1e-4
augment = False
optimizer_ft = optim.Adam(params_to_update, lr=learning_rate, weight_decay=weight_decay)
criterion = nn.L1Loss()
lr_scheduler = optim.lr_scheduler.StepLR(optimizer_ft, step_size=30, gamma=0.1)
./datasets/read_megaasina_data.py
directly;
for other datasets, just generate a pandas csv file in format like:
filename,age
1.jpg,23
...
is OK. But also, remember to change the ./datasets/read_imdb_data.py
accordingly.
thanks to DefTruth 's implementation here: How to convert SSRNet to ONNX and implements with onnxruntime c++.
my reading understanding of SSRNet can be found:
which was written in Chinese.