# ParticleNet
## 论文
`Jet Tagging via Particle Clouds`
* https://arxiv.org/pdf/1902.08570
## 模型结构
本项目使用ParticleNet(Lite),包含 EdgeConv 操作进行卷积,该操作能够利用粒子云的局部空间结构,并保持置换不变性。模型包含多个 EdgeConv 块,每个块使用不同数量的邻居和通道数,以学习不同尺度的特征。
## 算法原理
该算法将喷注视为“粒子云”,即无序的粒子集合。 它利用 EdgeConv 操作和动态图更新方法,有效地提取粒子云的局部空间结构和特征,从而实现对喷注的准确分类。
## 环境配置
注意:所有文件均在`tf-keras`目录下。
### Docker(方法一)
docker pull image.sourcefind.cn:5000/dcu/admin/base/tensorflow:2.13.1-py3.10-dtk24.04.3-ubuntu20.04
docker run --shm-size 50g --network=host --name=particlenet --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it bash
cd tf-keras
pip install -r requirements.txt
### Dockerfile(方法二)
docker build -t : .
docker run --shm-size 50g --network=host --name=particlenet --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it bash
cd tf-keras
pip install -r requirements.txt
## 数据集
仅在tf-keras目录下可用
[zenodo](https://zenodo.org/records/2603256)
数据存储结构:
```
original/
├── test.h5
├── train.h5
└── val.h5
```
运行`convert_dataset.py`对数据进行处理,
```
python convert_dataset.py
```
处理后
```
converted/
├── test_file_0.awkd
├── train_file_0.awkd
└── val_file_0.awkd
```
## 训练
```bash
python keras_train.py
```
## 推理
```bash
python predict_demo.py
```
注意:代码仅提供简单的推理测试,需根据需求进行修改。
## result

### 精度
所有结果均使用项目中的默认参数训练得到.
||val_acc|
|:---:|:---:|
|k100ai|0.9229|
|gpu|0.9145|
## 应用场景
### 算法类别
`ai for science`
### 热点应用行业
`高能物理,医疗,金融`
## 源码仓库及问题反馈
* https://developer.sourcefind.cn/codes/modelzoo/particlenet_tensorflow
## 参考资料
* https://github.com/hqucms/ParticleNet