Closed koutsd closed 7 months ago
Hi @koutsd,
I don't think it is an issue that the predictions scale [-1, 1]. A lot of the NN methods struggle to retain the magnitude of the inputs, but retain the frequency content fine.
From what I see in this one plotted example, the ground truth waveform has a lot of additional high-frequency artifacts / features. I suggest applying either a smoothing filter or a low-pass filter, to your ground truth signals, and see if this helps promote better learning.
Thanks!
Hi @girishvn,
I noticed that the bad results were correlated with the use of MSE loss as PHYSNET was performing fine. By changing to Negative Pearson loss the performance seems to be fixed. Do you have any explanation why this would be the case?
For reference here is the loss plot after changing the loss function:
Hi @koutsd,
My guess is that if MR-NIRP requires some additional considerations when normalizing and/or standardizing, training with the MSE loss will be much more difficult due to its sensitivity to scale. I think the need for additional care when normalizing and standardizing makes sense given the nature of MR-NIRP, especially parts of the dataset where, if I remember correctly, there are significant changes in lighting conditions and some subtle yet consistent motions.
Also, I'm going to go ahead and close this issue since it's been a few weeks and it seems like you were able to get better results as per the discussion on #244. Feel free to re-create a new issue or re-open this one if you feel a new discussion is needed.
Hi,
I have been working on training DeepPhys and TSCAN on the MR-NIRP dataset. Howerver validation loss seems to remain quite high.
After plotting the predicted signal vs the ground truth it seems that the predicted one is between -1 and 1. I am wondering if the ground truth requires some additional preprocessing to because none of the models seems to be able to predict values outside [-1,1]
Here is the train config file. I am basically using the basic configuration similar to the other conigs. ` BASE: [''] TOOLBOX_MODE: "train_and_test" # "train_and_test" or "only_test" TRAIN: BATCH_SIZE: 4 EPOCHS: 30 LR: 9e-3 MODEL_FILE_NAME: MR-NIRP_TSCAN PLOT_LOSSES_AND_LR: True DATA: FILTERING: USE_EXCLUSION_LIST: True EXCLUSION_LIST: [
Face detection failed - Defective videos - Defective PPG signal:
VALID: DATA: FILTERING: USE_EXCLUSION_LIST: True EXCLUSION_LIST: [
Face detection failed - Defective videos - Defective PPG signal:
TEST: METRICS: ['MAE', 'RMSE', 'MAPE', 'Pearson', 'SNR', 'BA'] USE_LAST_EPOCH: False # to use provided validation dataset to find the best epoch, should be false DATA: FILTERING: USE_EXCLUSION_LIST: True EXCLUSION_LIST: [
Face detection failed - Defective videos - Defective PPG signal:
DEVICE: cuda:0 NUM_OF_GPU_TRAIN: 1 LOG: PATH: runs/exp MODEL: DROP_RATE: 0.2 NAME: Tscan TSCAN: FRAME_DEPTH: 10 INFERENCE: BATCH_SIZE: 4 EVALUATION_METHOD: "FFT" # "FFT" or "peak detection" EVALUATION_WINDOW: USE_SMALLER_WINDOW: True # Change this if you'd like an evaluation window smaller than the test video length WINDOW_SIZE: 10 # In seconds MODEL_PATH: "" `