wentaozhu / DeepLung

WACV18 paper "DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification"
Apache License 2.0
312 stars 143 forks source link

No positive samples in y_true, true positive value should be meaningless #112

Closed 3learning12340 closed 4 years ago

3learning12340 commented 4 years ago

sorry to bother you again. when I run the frocwrtdetpechluna16.py, some errors occur. one of errors is shown as "No positive samples in y_true, true positive value should be meaningless", I don't know what's the reason of the error.

wentaozhu commented 4 years ago

You should first run the LUNA16 successfully. Configure the path using LUNA16 path. After that, try to adapt your own data as the organization of LUNA16.

3learning12340 commented 4 years ago

Thank you for your reply, I have solved the problem several minutes ago. But I am trying to solve another problem. I run the frocwrtdetpechluna16.py on subset9 when the epoch is equal to 150.The average FROC value is about 0.8, but the last line "print fold, froc, x, y" output as "9 0 0 0". I find the vector frocarr is wrong and I am debugging to find the reasons.

3learning12340 commented 4 years ago

I am debugging this code based on luna16.

wentaozhu commented 4 years ago

Yes. It makes sense. Typically, we pick the best model based on FROC from 150 models. The FROC value seems correct.

3learning12340 commented 4 years ago

ok, thank you again. My computer's gpu meomery is limited, so I don't train and test for so many times to obtain the best results. Maybe I will get the same value as paper said after pick the best model. Although I have got the average FROC value, I find the froclist is equal None. I am trying to find the problem

wentaozhu commented 4 years ago

You can save the models, let us say every 10 epochs or every 1 epoch. Then, you can use these models for testing. It does not cost extra GPU memory size. For the froclist, I think it is fine if you get a good FROC score.

3learning12340 commented 4 years ago

I am guessing the meaning of maxfroc. As for fold9, train the model on subset 0~8 and save 150 models for epoch 1 to 150. Then, test on each model, and I can get 150 vals for subset9. Then, get the csv files and calculate froc value for the 150 vals and I can get the froc value for each epoch . I think the froc value is equal to the average sensitivity when FPS is equal 0.125, 0.25, 0.5, 1, 2, 4, 8. Then, I can get 150 froc values and choose the best result. Then, I can get the best model and the maxfroc for subset9. Similarly, execute the above process on fold0~8, and I can get the best model and maxfroc for each subset. Finally, I can choose the best csv for each fold and concatenate the best ten csv files to one csv. Calculate the froc value based on the final csv and the final froc value is equal to the final maxfroc for luna16. Is my understanding right?

3learning12340 commented 4 years ago

issues what's wrong with it? some words are crossed out

wentaozhu commented 4 years ago

Correct.

3learning12340 commented 4 years ago

thanks a lot