ctlearn-project / ctlearn

Deep Learning for IACT Event Reconstruction
BSD 3-Clause "New" or "Revised" License
53 stars 43 forks source link

(Implementation) ParticleNet model #207

Open Olmichu22 opened 1 month ago

Olmichu22 commented 1 month ago

Context In recent months I've been working with the CTLearn project due to my master's thesis. One on the main points was to compare the best model of CTLearn in mono (TRN) with a model used in particle classification problems; ParticleNet (PNet).

The main advantage is that PNet model has point cloud structured data as input, so it is possible to maintain the original distribution and geometry of the telescope(s).

Despite the fact that TRN achieves the best results, PNet is able to get good ones too, even though only 4 structures of the model have been tried.

Proposals I would like to introduce ParticleNet model structure as a default model in CTLearn, as another option to performance tests in event reconstruction.

Also, it would be necessary to introduce some new options to process Data from image to point cloud.

Changes would be:

Tests Until now, some basic tests have been performed with PNet, using the N pixels with the highest phe values. Some interesting tests regarding the data structure would be:

Regarding the model structure:

References TFM file and code (it is in spanish, sorry): https://github.com/Olmichu22/Repo-TFM-OAP PNet Model Article: https://arxiv.org/abs/1902.08570

TjarkMiener commented 1 month ago

Looks interesting @Olmichu22! To let you know that we are currently working on a new model API (Timeline are weeks), so it might be worth waiting for it and implement your PNet based on the new API.

For the changes to the DL1DataHandler in handling point clouds. Can you please have a look at dl1dh #PR143 and see if it could be done on top of the reader API?

Olmichu22 commented 1 month ago

@TjarkMiener Perfect! I will wait until the API update is done.

Regarding DLH, I think it is perfectly possible to do it. I have just had an overview and maybe it could be done as a mapper function, or using the geometry info directly and modifying DLImageReader to allow point cloud processing too. Another option may be to create a new inherited class for point clouds.

TjarkMiener commented 3 weeks ago

@Olmichu22 you can find a preliminary version of the new model API in this branch. Please try to based your ParticleNet model based on this API.

Olmichu22 commented 2 weeks ago

@Olmichu22 you can find a preliminary version of the new model API in this branch. Please try to based your ParticleNet model based on this API.

Thanks! I'll take a look at it and start implementation